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

The H.265 codec does not support segmented recording. #3905

Closed Zgjian closed 6 months ago

Zgjian commented 6 months ago

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

Version v6.0-d3

To Reproduce

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

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

Additional context In the update_duration function within the srs_app_dvr.cpp file, when it is determined that the duration has been reached, the file will be segmented at the next keyframe. However, this seems to only account for H264 keyframes and may have overlooked the consideration for H265 keyframes.

TRANS_BY_GPT4