Opened 8 years ago
Last modified 5 years ago
#6191 reopened defect
DASH decoding stream in segment fails
Reported by: | derrod | Owned by: | |
---|---|---|---|
Priority: | important | Component: | avformat |
Version: | git-master | Keywords: | mov regression |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
Summary of the bug: trying to convert or play back DASH segments as generated by YouTube Live under certain circumstances fails. Older versions (pre-Oct. 2015) did read and convert the file seemingly correctly. It seems that a change between 5911eeb033c384ba0842f7e2e11d737f1d479dd9 and 1e7e4f13f95227d79bc8ab9a2167f02f7a3e063f has introduced this issue (tested by checking several zeranoe ffmpeg builds).
When looking at the segment in http://mp4parser.com/ it seems like there is a sidx/moof/mdat box for each individual frame instead of the entire segment like with segments that work fine in ffmpeg.
This does only seem to happen if the ingested video is not 30/60 fps. In my test the ingested video was 25 fps and the "low latency" mode in the control panel is enabled.
How to reproduce: Download a video segment of a youtube livestream and use it as input for ffprobe or ffmpeg. I will attach the video segment used for creating the log output below.
Recent zeranoe ffmpeg build (ffmpeg-20170223-dcd3418-win64-static)
% ffmpeg -i testsegment.mp4 -c copy out.mp4 ffmpeg version N-83622-gdcd3418 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 5.4.0 (GCC) configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib libavutil 55. 47.100 / 55. 47.100 libavcodec 57. 81.100 / 57. 81.100 libavformat 57. 66.102 / 57. 66.102 libavdevice 57. 2.100 / 57. 2.100 libavfilter 6. 73.100 / 6. 73.100 libswscale 4. 3.101 / 4. 3.101 libswresample 2. 4.100 / 2. 4.100 libpostproc 54. 2.100 / 54. 2.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 00000000007b6720] decoding for stream 0 failed Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'testsegment.mp4': Metadata: major_brand : dash minor_version : 0 compatible_brands: iso6avc1mp41 creation_time : 2017-02-25T13:23:08.000000Z Duration: 00:00:00.03, start: 0.000000, bitrate: 3996 kb/s Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 1458 kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc (default) Metadata: creation_time : 2017-02-25T13:23:08.000000Z handler_name : VideoHandler Output #0, mp4, to 'out.mp4': Metadata: major_brand : dash minor_version : 0 compatible_brands: iso6avc1mp41 encoder : Lavf57.66.102 Stream #0:0(und): Video: h264 (Main) ([33][0][0][0] / 0x0021), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 1458 kb/s, 30 fps, 30 tbr, 90k tbn, 90k tbc (default) Metadata: creation_time : 2017-02-25T13:23:08.000000Z handler_name : VideoHandler Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame= 0 fps=0.0 q=-1.0 Lsize= 0kB time=00:00:00.00 bitrate=N/A speed= 0x video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Older zeranoe ffmpeg windows build (ffmpeg-20151008-git-5911eeb-win64-static):
% old_ffmpeg -i testsegment.mp4 -c copy out.mp4 ffmpeg version N-75841-g5911eeb Copyright (c) 2000-2015 the FFmpeg developers built with gcc 5.2.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib libavutil 55. 2.100 / 55. 2.100 libavcodec 57. 4.100 / 57. 4.100 libavformat 57. 3.100 / 57. 3.100 libavdevice 57. 0.100 / 57. 0.100 libavfilter 6. 10.100 / 6. 10.100 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.100 / 2. 0.100 libpostproc 54. 0.100 / 54. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'testsegment.mp4': Metadata: major_brand : dash minor_version : 0 compatible_brands: iso6avc1mp41 creation_time : 2017-02-25 13:23:08 Duration: 00:00:04.00, start: 2.000000, bitrate: 33 kb/s Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 12 kb/s, 30 fps, 30 tbr, 90k tbn, 60 tbc (default) Metadata: creation_time : 2017-02-25 13:23:08 handler_name : VideoHandler [mp4 @ 000002010b66f420] Codec for stream 0 does not use global headers but container format requires global headers Output #0, mp4, to 'out.mp4': Metadata: major_brand : dash minor_version : 0 compatible_brands: iso6avc1mp41 encoder : Lavf57.3.100 Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 12 kb/s, 30 fps, 30 tbr, 90k tbn, 90k tbc (default) Metadata: creation_time : 2017-02-25 13:23:08 handler_name : VideoHandler Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame= 60 fps=0.0 q=-1.0 Lsize= 7kB time=00:00:01.96 bitrate= 29.2kbits/s video:6kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 17.289797%
Attachments (1)
Change History (3)
by , 8 years ago
Attachment: | testsegment.mp4 added |
---|
comment:1 by , 8 years ago
Component: | undetermined → avformat |
---|---|
Keywords: | mov regression added; dash mpeg-dash removed |
Priority: | minor → important |
Reproduced by developer: | set |
Resolution: | → duplicate |
Status: | new → closed |
Regression since 4ab56667, duplicate of ticket #5090.
comment:2 by , 5 years ago
Resolution: | duplicate |
---|---|
Status: | closed → reopened |
This has changed behaviour but is still broken and not a duplicate afaict.
Test Segment