[FFmpeg-trac] #6591(ffmpeg:new): Unable to read mp4/h264 caused by SPS decoding failure
FFmpeg
trac at avcodec.org
Wed Aug 16 17:46:39 EEST 2017
#6591: Unable to read mp4/h264 caused by SPS decoding failure
-----------------------------------+---------------------------------------
Reporter: cpnielsen | Type: defect
Status: new | Priority: normal
Component: ffmpeg | Version: unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-----------------------------------+---------------------------------------
Attempting to transcode the attached sample file results in an error for
both `3.3.2` as well as git version `N-86933-g80bc64`.
This has been previously been known to work with version
`n2.7.2-3-gb1863e3`.
Example shown for 3.3.2 (git version looks identical)
{{{
% ffmpeg -i test.mp4 -c:v libx264 -c:a aac test2.mp4
ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 8.1.0 (clang-802.0.42)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.2 --enable-shared
--enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables
--enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-
libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-
lzma --enable-vda
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Splitting the commandline.
Reading option '-i' ... matched as input url with argument 'test.mp4'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument
'libx264'.
Reading option '-c:a' ... matched as option 'c' (codec name) with argument
'aac'.
Reading option 'test2.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Successfully parsed a group of options.
Parsing a group of options: input url test.mp4.
Successfully parsed a group of options.
Opening an input file: test.mp4.
[NULL @ 0x7fc902001000] Opening 'test.mp4' for reading
[file @ 0x7fc9016000a0] Setting default whitelist 'file,crypto'
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] Format mov,mp4,m4a,3gp,3g2,mj2
probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] ISO: File Type Major Brand: f4v
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] Unknown dref type 0x206c7275
size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] Unknown dref type 0x206c7275
size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] rfps: 24.916667 0.010848
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] rfps: 24.916667 0.010848
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] rfps: 25.000000 0.000140
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] rfps: 25.083333 0.007202
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] rfps: 25.083333 0.007202
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] rfps: 50.000000 0.000558
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] Before
avformat_find_stream_info() pos: 887991 bytes read:35746 seeks:1
nb_streams:2
[h264 @ 0x7fc902001600] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fc902001600] Overread VUI by 2 bits
[h264 @ 0x7fc902001600] SPS decoding failure, trying again after escaping
the NAL
[h264 @ 0x7fc902001600] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fc902001600] Overread VUI by 2 bits
[h264 @ 0x7fc902001600] Decoding sps 0 from avcC failed
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] Failed to open codec in
avformat_find_stream_info
[h264 @ 0x7fc902001600] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fc902001600] Overread VUI by 2 bits
[h264 @ 0x7fc902001600] SPS decoding failure, trying again after escaping
the NAL
[h264 @ 0x7fc902001600] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fc902001600] Overread VUI by 2 bits
[h264 @ 0x7fc902001600] Decoding sps 0 from avcC failed
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc902001000] After
avformat_find_stream_info() pos: 194497 bytes read:232354 seeks:2
frames:27
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : f4v
minor_version : 0
compatible_brands: isommp42m4v
creation_time : 2014-10-07T14:35:54.000000Z
Duration: 00:00:04.12, start: 0.000000, bitrate: 1725 kb/s
Stream #0:0(eng), 26, 1/90000: Video: h264 (avc1 / 0x31637661), none,
1280x720, 1655 kb/s, 25.01 fps, 25 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2014-10-07T14:35:54.000000Z
handler_name : WowzaStreamingEngine
encoder : WowzaStreamingEngine
Stream #0:1(eng), 1, 1/90000: Audio: aac (LC) (mp4a / 0x6134706D),
44100 Hz, mono, fltp, 65 kb/s (default)
Metadata:
creation_time : 2014-10-07T14:35:54.000000Z
handler_name : WowzaStreamingEngine
Successfully opened the file.
Parsing a group of options: output url test2.mp4.
Applying option c:v (codec name) with argument libx264.
Applying option c:a (codec name) with argument aac.
Successfully parsed a group of options.
Opening an output file: test2.mp4.
[file @ 0x7fc901600ec0] Setting default whitelist 'file,crypto'
Successfully opened the file.
detected 8 logical cores
[h264 @ 0x7fc902802c00] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fc902802c00] Overread VUI by 2 bits
[h264 @ 0x7fc902802c00] SPS decoding failure, trying again after escaping
the NAL
[h264 @ 0x7fc902802c00] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fc902802c00] Overread VUI by 2 bits
[h264 @ 0x7fc902802c00] Decoding sps 0 from avcC failed
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Error while opening decoder for input stream #0:0 : Invalid data found
when processing input
[AVIOContext @ 0x7fc901600f40] Statistics: 0 seeks, 0 writeouts
[AVIOContext @ 0x7fc9016001e0] Statistics: 232354 bytes read, 2 seeks
}}}
FFprobe suffers from the same failure:
{{{
% ffprobe test.mp4
ffprobe version 3.3.2 Copyright (c) 2007-2017 the FFmpeg developers
built with Apple LLVM version 8.1.0 (clang-802.0.42)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.2 --enable-shared
--enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables
--enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-
libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-
lzma --enable-vda
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
[NULL @ 0x7fd1be002a00] Opening 'test.mp4' for reading
[file @ 0x7fd1bc402680] Setting default whitelist 'file,crypto'
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] Format mov,mp4,m4a,3gp,3g2,mj2
probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] ISO: File Type Major Brand: f4v
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] Unknown dref type 0x206c7275
size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] Unknown dref type 0x206c7275
size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] rfps: 24.916667 0.010848
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] rfps: 24.916667 0.010848
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] rfps: 25.000000 0.000140
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] rfps: 25.083333 0.007202
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] rfps: 25.083333 0.007202
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] rfps: 50.000000 0.000558
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] Before
avformat_find_stream_info() pos: 887991 bytes read:35746 seeks:1
nb_streams:2
[h264 @ 0x7fd1be00b600] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fd1be00b600] Overread VUI by 2 bits
[h264 @ 0x7fd1be00b600] SPS decoding failure, trying again after escaping
the NAL
[h264 @ 0x7fd1be00b600] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fd1be00b600] Overread VUI by 2 bits
[h264 @ 0x7fd1be00b600] Decoding sps 0 from avcC failed
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] Failed to open codec in
avformat_find_stream_info
[h264 @ 0x7fd1be00b600] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fd1be00b600] Overread VUI by 2 bits
[h264 @ 0x7fd1be00b600] SPS decoding failure, trying again after escaping
the NAL
[h264 @ 0x7fd1be00b600] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fd1be00b600] Overread VUI by 2 bits
[h264 @ 0x7fd1be00b600] Decoding sps 0 from avcC failed
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd1be002a00] After
avformat_find_stream_info() pos: 194497 bytes read:232354 seeks:2
frames:27
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : f4v
minor_version : 0
compatible_brands: isommp42m4v
creation_time : 2014-10-07T14:35:54.000000Z
Duration: 00:00:04.12, start: 0.000000, bitrate: 1725 kb/s
Stream #0:0(eng), 26, 1/90000: Video: h264 (avc1 / 0x31637661), none,
1280x720, 1655 kb/s, 25.01 fps, 25 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2014-10-07T14:35:54.000000Z
handler_name : WowzaStreamingEngine
encoder : WowzaStreamingEngine
Stream #0:1(eng), 1, 1/90000: Audio: aac (LC) (mp4a / 0x6134706D),
44100 Hz, mono, fltp, 65 kb/s (default)
Metadata:
creation_time : 2014-10-07T14:35:54.000000Z
handler_name : WowzaStreamingEngine
[h264 @ 0x7fd1bc800000] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fd1bc800000] Overread VUI by 2 bits
[h264 @ 0x7fd1bc800000] SPS decoding failure, trying again after escaping
the NAL
[h264 @ 0x7fd1bc800000] nal_unit_type: 7, nal_ref_idc: 3
[h264 @ 0x7fd1bc800000] Overread VUI by 2 bits
[h264 @ 0x7fd1bc800000] Decoding sps 0 from avcC failed
Could not open codec for input stream 0
}}}
Working version:
{{{
% ffmpeg -i test.mp4 -c:v libx264 -c:a libfaac test2.mp4
ffmpeg version n2.7.2-3-gb1863e3 Copyright (c) 2000-2015 the FFmpeg
developers
built with gcc 4.9.2 (Debian 4.9.2-10)
configuration: --prefix=/var/transcoder/dist/package/usr --enable-
libspeex --enable-libfaac --enable-libfdk-aac --enable-libx264 --enable-
gpl --enable-libmp3lame --enable-libvorbis --enable-pthreads --enable-
postproc --enable-nonfree --enable-librtmp --enable-shared --enable-
libtheora --enable-libxvid --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-version3 --enable-libvpx --disable-
demuxer='hls,applehttp' --disable-protocol=hls
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / 56. 36.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100
[h264 @ 0xba2fe0] Overread VUI by 2 bits
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : f4v
minor_version : 0
compatible_brands: isommp42m4v
creation_time : 2014-10-07 14:35:54
Duration: 00:00:04.12, start: 0.000000, bitrate: 1725 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv),
1280x720, 1655 kb/s, 25.01 fps, 25 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2014-10-07 14:35:54
handler_name : WowzaStreamingEngine
encoder : WowzaStreamingEngine
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono,
fltp, 65 kb/s (default)
Metadata:
creation_time : 2014-10-07 14:35:54
handler_name : WowzaStreamingEngine
File 'test2.mp4' already exists. Overwrite ? [y/N] y
[libx264 @ 0xd59d20] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0xd59d20] profile High, level 3.1
[libx264 @ 0xd59d20] 264 - core 146 - H.264/MPEG-4 AVC codec - Copyleft
2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3
deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00
mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0
deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12
lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0
bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25
scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0
qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[h264 @ 0x1264ae0] Overread VUI by 2 bits
Output #0, mp4, to 'test2.mp4':
Metadata:
major_brand : f4v
minor_version : 0
compatible_brands: isommp42m4v
encoder : Lavf56.36.100
Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021),
yuv420p, 1280x720, q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:
creation_time : 2014-10-07 14:35:54
handler_name : WowzaStreamingEngine
encoder : Lavc56.41.100 libx264
Stream #0:1(eng): Audio: aac (libfaac) ([64][0][0][0] / 0x0040), 44100
Hz, mono, s16, 128 kb/s (default)
Metadata:
creation_time : 2014-10-07 14:35:54
handler_name : WowzaStreamingEngine
encoder : Lavc56.41.100 libfaac
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (libfaac))
Press [q] to stop, [?] for help
[h264 @ 0x13937c0] Overread VUI by 2 bits
[h264 @ 0x1264ae0] Overread VUI by 2 bitsB time=00:00:02.85 bitrate=
502.0kbits/s
frame= 103 fps= 52 q=-1.0 Lsize= 620kB time=00:00:04.04
bitrate=1256.9kbits/s
video:577kB audio:37kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.874109%
[libx264 @ 0xd59d20] frame I:2 Avg QP:18.74 size: 19168
[libx264 @ 0xd59d20] frame P:65 Avg QP:20.67 size: 6911
[libx264 @ 0xd59d20] frame B:36 Avg QP:22.38 size: 2860
[libx264 @ 0xd59d20] consecutive B-frames: 46.6% 17.5% 8.7% 27.2%
[libx264 @ 0xd59d20] mb I I16..4: 35.5% 58.8% 5.7%
[libx264 @ 0xd59d20] mb P I16..4: 2.2% 3.4% 0.1% P16..4: 45.0% 5.2%
4.7% 0.0% 0.0% skip:39.3%
[libx264 @ 0xd59d20] mb B I16..4: 0.1% 0.1% 0.0% B16..8: 42.7% 0.8%
0.0% direct: 2.7% skip:53.5% L0:47.6% L1:52.0% BI: 0.4%
[libx264 @ 0xd59d20] 8x8 transform intra:59.1% inter:90.2%
[libx264 @ 0xd59d20] coded y,uvDC,uvAC intra: 31.7% 42.4% 1.6% inter: 8.4%
18.2% 0.0%
[libx264 @ 0xd59d20] i16 v,h,dc,p: 23% 26% 23% 28%
[libx264 @ 0xd59d20] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 21% 42% 3% 2%
2% 3% 2% 7%
[libx264 @ 0xd59d20] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 27% 19% 5% 6%
6% 4% 3% 10%
[libx264 @ 0xd59d20] i8c dc,h,v,p: 59% 24% 15% 3%
[libx264 @ 0xd59d20] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0xd59d20] ref P L0: 75.3% 4.1% 14.8% 5.8%
[libx264 @ 0xd59d20] ref B L0: 89.3% 9.5% 1.1%
[libx264 @ 0xd59d20] ref B L1: 95.3% 4.7%
[libx264 @ 0xd59d20] kb/s:1146.66
}}}
Note that because of the older version, `libfaac` is used instead of `aac`
but the end result is the same (also tried with other output formats, it
makes no difference to either the working or non-working versions.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6591>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list