Opened 5 years ago
Last modified 5 years ago
#7711 new defect
Segmenting with libopus produces incorrect segment durations in output playlist
Reported by: | haywirez | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | ffmpeg |
Version: | unspecified | Keywords: | hls opus segment |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Fffmpeg should subtract or handle the OPUS priming samples duration (312 frames) from the segment duration in the playlist EXTINF: entries.
How to reproduce:
% ffmpeg -i xyz.wav -f segment -segment_time 1 -c:a libopus -segment_list opus-segment-test.m3u8 -segment_list_type m3u8 opus-segment-test_%03d.oga
produces a .m3u8 with:
#EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-ALLOW-CACHE:YES #EXT-X-TARGETDURATION:1 #EXTINF:1.000000, opus-segment-test_000.oga ...
Actual EXTINF segment duration in this case should reflect the true value: 0.9934920634920634, which corresponds to the difference made by the mentioned priming sample frames.
Tested with ffmpeg version 4.1
OS: macOS Mojave 10.14.1 Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Change History (3)
comment:1 by , 5 years ago
Component: | ffmpeg → undetermined |
---|---|
Keywords: | segment m3u8 removed |
comment:2 by , 5 years ago
Component: | undetermined → ffmpeg |
---|---|
Keywords: | segment added |
Yes. On further investigation, the segments produced are shorter than expected (at the tail), the difference corresponding to the duration of priming samples. To clarify, the #EXTINF:1.000000 should stay, just the produced file content length is wrong.
comment:3 by , 5 years ago
Can be confirmed by running the following conversion to wav, then converting individual wav segments and transcoding to opus. In that case, the durations are identical, but not in case of direct segmentation
% ffmpeg -i xyz.wav -f segment -segment_time 1 -segment_list opus-segment-test.m3u8 -segment_list_type m3u8 opus-segment-test_%03d.wav
Is the issue also reproducible with the native opus encoder?