ossrs / srs

SRS is a simple, high-efficiency, real-time video server supporting RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH, and GB28181.
https://ossrs.io
MIT License
24.75k stars 5.28k forks source link

When recording in HEVC format, it is not possible to segment the recording by time intervals. #3904

Open Zgjian opened 6 months ago

Zgjian commented 6 months ago

Describe the bug Enable DVR recording configuration to record in segments based on duration. When streaming in HEVC, segmentation does not occur and a .tmp file is continuously generated, whereas streaming in H.264 functions normally.

Version v6.0-d3

To Reproduce

  1. Compile: Execute the command ./configure --h265.
  2. Run: Start the server using ./objs/srs -c conf/dvr.segment.conf.
  3. Stream: Configure OBS to use HEVC video encoding and push the stream to SRS via RTMP.
  4. In the DVR directory of SRS, a .flv.tmp file is continuously being created without generating a complete .flv file according to the specified duration.

Expected behavior Stream using HEVC encoding and record segmented files based on the dvr_duration setting.

Additional context In the update_duration function within the srs_app_dvr.cpp file, when the duration threshold is reached, the file is segmented at the next keyframe. However, it seems that only H.264 keyframes are being checked for, and there might be an oversight in not checking for H.265 keyframes.

TRANS_BY_GPT4

winlinvip commented 4 months ago

Welcome to patch.