Dvr: support h265 flv fragments. v6.0.162 v7.0.24 (#4296)
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 # 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; } } ``` 3. Stream Push Testing ### FFmpeg Stream Push 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`)   ## 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 ```  --------- `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>
This commit is contained in:
parent
02f04456b0
commit
3d8ef92a23
|
|
@ -7,6 +7,7 @@ The changelog for SRS.
|
|||
<a name="v7-changes"></a>
|
||||
|
||||
## SRS 7.0 Changelog
|
||||
* v7.0, 2025-03-06, Merge [#4296](https://github.com/ossrs/srs/pull/4296): Dvr: support h265 flv fragments. v7.0.24 (#4296)
|
||||
* v7.0, 2025-02-20, Merge [#4253](https://github.com/ossrs/srs/pull/4253): fix typo about heartbeat. v7.0.23 (#4253)
|
||||
* v7.0, 2025-02-19, Merge [#4291](https://github.com/ossrs/srs/pull/4291): fix ci error. v7.0.22 (#4291)
|
||||
* v7.0, 2025-01-14, Merge [#4271](https://github.com/ossrs/srs/pull/4271): update copyright to 2025. v7.0.21 (#4271)
|
||||
|
|
@ -35,6 +36,7 @@ The changelog for SRS.
|
|||
<a name="v6-changes"></a>
|
||||
|
||||
## SRS 6.0 Changelog
|
||||
* v6.0, 2025-03-06, Merge [#4296](https://github.com/ossrs/srs/pull/4296): Dvr: support h265 flv fragments. v6.0.162 (#4296)
|
||||
* v6.0, 2025-02-20, Merge [#4253](https://github.com/ossrs/srs/pull/4253): fix typo about heartbeat. v6.0.161 (#4253)
|
||||
* v6.0, 2025-02-19, Merge [#4291](https://github.com/ossrs/srs/pull/4291): fix ci error. v6.0.160 (#4291)
|
||||
* v6.0, 2025-01-14, Merge [#4271](https://github.com/ossrs/srs/pull/4271): update copyright to 2025. v6.0.159 (#4271)
|
||||
|
|
|
|||
|
|
@ -868,7 +868,13 @@ srs_error_t SrsDvrSegmentPlan::update_duration(SrsSharedPtrMessage* msg)
|
|||
|
||||
char* payload = msg->payload;
|
||||
int size = msg->size;
|
||||
bool is_key_frame = SrsFlvVideo::h264(payload, size) && SrsFlvVideo::keyframe(payload, size) && !SrsFlvVideo::sh(payload, size);
|
||||
|
||||
bool codec_ok = SrsFlvVideo::h264(payload, size);
|
||||
#ifdef SRS_H265
|
||||
codec_ok = codec_ok? true : SrsFlvVideo::hevc(payload, size);
|
||||
#endif
|
||||
|
||||
bool is_key_frame = codec_ok && SrsFlvVideo::keyframe(payload, size) && !SrsFlvVideo::sh(payload, size);
|
||||
if (!is_key_frame) {
|
||||
return err;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@
|
|||
|
||||
#define VERSION_MAJOR 6
|
||||
#define VERSION_MINOR 0
|
||||
#define VERSION_REVISION 161
|
||||
#define VERSION_REVISION 162
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@
|
|||
|
||||
#define VERSION_MAJOR 7
|
||||
#define VERSION_MINOR 0
|
||||
#define VERSION_REVISION 23
|
||||
#define VERSION_REVISION 24
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue
Block a user