Skip to content

Dvr: support h265 flv fragments. v6.0.162 v7.0.24#4296

Merged
xiaozhihong merged 3 commits intoossrs:developfrom
chundonglinlin:bugfix/dvr-hevc-flv
Mar 17, 2025
Merged

Dvr: support h265 flv fragments. v6.0.162 v7.0.24#4296
xiaozhihong merged 3 commits intoossrs:developfrom
chundonglinlin:bugfix/dvr-hevc-flv

Conversation

@chundonglinlin
Copy link
Member

@chundonglinlin chundonglinlin commented Feb 23, 2025

  1. Issue
    When segmenting H.265 encoded FLV files using a DVR, the system does not create FLV segments at regular intervals as specified by the dvr_wait_keyframe configuration.

  2. Configure dvr.segment.conf

# the config for srs to dvr in segment mode
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/dvr
# @see full.conf for detail config.

listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;
vhost __defaultVhost__ {
    dvr {
        enabled      on;
        dvr_path     ./objs/nginx/html/[app]/[stream].[timestamp].flv;
        dvr_plan     segment;
        dvr_duration    30;
        dvr_wait_keyframe       on;
    }
}
  1. Stream Push Testing

FFmpeg Stream Push

Domestic FFmpeg version (codecId=12)

hevc-12-ffmpeg -stream_loop -1 -re -i 264_aac.flv -c:v libx265 -preset fast -b:v 2000k -maxrate 2000k -bufsize 4000k -bf 0 -c:a aac -b:a 128k -ar 44100 -ac 2 -f flv rtmp://localhost/live/livestream

FFmpeg version 6.0 or higher (supports enhanced RTMP)

ffmpeg -stream_loop -1 -re -i 264_aac.flv -c:v libx265 -preset fast -b:v 2000k -maxrate 2000k -bufsize 4000k -bf 0 -c:a aac -b:a 128k -ar 44100 -ac 2 -f flv rtmp://localhost/live/livestream

OBS streaming (version 30.0 or above supports enhanced RTMP)
image
image

4. Playback Testing

SRS player (supports both enhanced RTMP and codec=12 FLV)

http://127.0.0.1:8080/players/srs_player.html

Domestic ffplay (supports codec=12 FLV)

hevc-12-ffplay http://127.0.0.1:8080/live/livestream.1740311867638.flv

ffplay (versions above ffmpeg 6.0 support enhanced RTMP)

ffplay http://127.0.0.1:8080/live/livestream.1740311867638.flv

image


TRANS_BY_GPT4


Co-authored-by: Haibo Chen 495810242@qq.com
Co-authored-by: john hondaxiao@tencent.com
Co-authored-by: winlin winlinvip@gmail.com

@xiaozhihong xiaozhihong changed the title Dvr: support h265 flv fragments. Dvr: support h265 flv fragments. v6.0.162 v7.0.24 Mar 6, 2025
@xiaozhihong xiaozhihong added the RefinedByAI Refined by AI/GPT. label Mar 6, 2025
@xiaozhihong xiaozhihong merged commit 3d8ef92 into ossrs:develop Mar 17, 2025
16 of 17 checks passed
xiaozhihong added a commit that referenced this pull request Mar 17, 2025
1. Issue
When segmenting H.265 encoded FLV files using a DVR, the system does not
create FLV segments at regular intervals as specified by the
`dvr_wait_keyframe` configuration.

2. Configure dvr.segment.conf
```config

listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;
vhost __defaultVhost__ {
    dvr {
        enabled      on;
        dvr_path     ./objs/nginx/html/[app]/[stream].[timestamp].flv;
        dvr_plan     segment;
        dvr_duration    30;
        dvr_wait_keyframe       on;
    }
}
```

3. Stream Push Testing
Domestic FFmpeg version (codecId=12)
```sh
hevc-12-ffmpeg -stream_loop -1 -re -i 264_aac.flv -c:v libx265 -preset fast -b:v 2000k -maxrate 2000k -bufsize 4000k -bf 0 -c:a aac -b:a 128k -ar 44100 -ac 2 -f flv rtmp://localhost/live/livestream
```
FFmpeg version 6.0 or higher (supports `enhanced RTMP`)
```sh
ffmpeg -stream_loop -1 -re -i 264_aac.flv -c:v libx265 -preset fast -b:v 2000k -maxrate 2000k -bufsize 4000k -bf 0 -c:a aac -b:a 128k -ar 44100 -ac 2 -f flv rtmp://localhost/live/livestream
```

OBS streaming (version 30.0 or above supports `enhanced RTMP`)

![image](https://github.com/user-attachments/assets/fd2806c3-b0e3-44c4-a2d5-e04e6e5386ff)

![image](https://github.com/user-attachments/assets/15ef9c45-e15a-426e-b70c-d4bdd5dc8055)

SRS player (supports both `enhanced RTMP` and `codec=12 FLV`)
```
http://127.0.0.1:8080/players/srs_player.html
```
Domestic ffplay (supports `codec=12 FLV`)
```
hevc-12-ffplay http://127.0.0.1:8080/live/livestream.1740311867638.flv
```
ffplay (versions above ffmpeg 6.0 support `enhanced RTMP`)
```
ffplay http://127.0.0.1:8080/live/livestream.1740311867638.flv
```

![image](https://github.com/user-attachments/assets/711a4182-418c-4134-934f-cba41a08e06f)

---------

`TRANS_BY_GPT4`

---------

Co-authored-by: Haibo Chen <495810242@qq.com>
Co-authored-by: john <hondaxiao@tencent.com>
Co-authored-by: winlin <winlinvip@gmail.com>

---------

Co-authored-by: john <hondaxiao@tencent.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

RefinedByAI Refined by AI/GPT. TransByAI Translated by AI/GPT.

4 participants