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)

testsegment.mp4 (16.3 KB ) - added by derrod 8 years ago.
Test Segment

Download all attachments as: .zip

Change History (3)

by derrod, 8 years ago

Attachment: testsegment.mp4 added

Test Segment

comment:1 by Carl Eugen Hoyos, 8 years ago

Component: undeterminedavformat
Keywords: mov regression added; dash mpeg-dash removed
Priority: minorimportant
Reproduced by developer: set
Resolution: duplicate
Status: newclosed

Regression since 4ab56667, duplicate of ticket #5090.

comment:2 by Carl Eugen Hoyos, 5 years ago

Resolution: duplicate
Status: closedreopened

This has changed behaviour but is still broken and not a duplicate afaict.

Note: See TracTickets for help on using tickets.