[FFmpeg-trac] #6191(undetermined:new): DASH decoding stream in segment fails

FFmpeg trac at avcodec.org
Sat Feb 25 15:58:23 EET 2017


#6191: DASH decoding stream in segment fails
-------------------------------------+-------------------------------------
             Reporter:  derrod       |                     Type:  defect
               Status:  new          |                 Priority:  minor
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:  dash, mpeg-  |               Blocked By:
  dash                               |  Reproduced by developer:  0
             Blocking:               |
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 '''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%
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/6191>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list