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.79k stars 5.28k forks source link

Solve the problem of inaccurate HLS TS duration. v5.0.187 v6.0.87 #3824

Closed winlinvip closed 9 months ago

winlinvip commented 9 months ago
  1. The comment on the ratio configuration says it can affect the slice duration, but there is no effect after configuring it.
  2. The default hls_td_ratio is 1.5, and after setting it to 1, the duration is still slightly more than 10 seconds.
  3. Even if the GOP is an integer, like 1 second, the slice is still a non-integer, like 0.998 seconds, which seems a bit unreliable.
  4. In the duration of the TS in the m3u8 file, it is one frame less than the duration of the slice.
  5. Set hls_dispose to 120s to dispose HLS files when no stream.
  6. Use docker.conf for docker.

Before this patch:

#EXTINF:10.983, no desc
livestream-0.ts?hls_ctx=3p095hq0

After this patch:

#EXTINF:10.000, no desc
livestream-0.ts?hls_ctx=3p095hq0

Note: If the fragment is set to 10 seconds, but the GOP size cannot be divided by 10, such as not 1, 2, 5, or 10, then the duration of ts will still be more than 10 seconds.


Co-authored-by: john hondaxiao@tencent.com

winlinvip commented 9 months ago

We need to merge into 5 and 6.

TRANS_BY_GPT4