[FFmpeg-trac] #8511(avformat:new): mp3 probe regression in 4.2.2
FFmpeg
trac at avcodec.org
Thu Feb 6 15:20:51 EET 2020
#8511: mp3 probe regression in 4.2.2
----------------------------------+---------------------------------------
Reporter: wader | Type: defect
Status: new | Priority: normal
Component: avformat | Version: unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+---------------------------------------
Summary of the bug:
mp3 file probe without file extension hint work fine with 4.2.1 but fails
with 4.2.2
How to reproduce:
{{{
Download mp3 file from
https://anondino.squarespace.com/osc/2020/1/28/osc-53-super-smash-bros-
brawl and pipe file to 4.2.1 and 4.2.2 to skip file extension hint.
Increased formatprobesize fixes issue.
My guess is that commit
https://github.com/FFmpeg/FFmpeg/commit/e9a335150a62bb377a26ce096187b4476145d02b
#diff-c66b10cb5a4804b2196f81772f8cd68c caused the regression. Looking at
the mp3 file it seems like the id3v2 tag is quite big (nearly 1MB) which
causes the first mp3 frame to be partially read and fails the new frame
size fits into probe buffer check.
Not sure what could be a sane fix for this. Keep increasing the default
probe buffer size might not be feasible? allow partial mp3 frames again
would fix only this narrow case i guess?
4.2.1:
$ cat OSC053.mp3 | ffmpeg -v trace -i pipe:0
ffprobe version 4.2.1 Copyright (c) 2007-2019 the FFmpeg developers
built with gcc 8.3.0 (Alpine 8.3.0)
configuration: --pkg-config-flags=--static --extra-cflags=-fopenmp
--extra-ldflags='-static -fopenmp' --toolchain=hardened --disable-debug
--disable-shared --disable-ffplay --enable-static --enable-gpl --enable-
nonfree --enable-openssl --enable-iconv --enable-libxml2 --enable-
libmp3lame --enable-libfdk-aac --enable-libvorbis --enable-libopus
--enable-libtheora --enable-libvpx --enable-libx264 --enable-libx265
--enable-libwebp --enable-libwavpack --enable-libspeex --enable-libaom
--enable-libvidstab --enable-libkvazaar --enable-libfreetype --enable-
fontconfig --enable-libfribidi --enable-libass --enable-libzimg --enable-
libsoxr --enable-libopenjpeg --enable-libdav1d
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[NULL @ 0x5555559993c0] Opening 'pipe:0' for reading
[pipe @ 0x555555999c80] Setting default whitelist 'crypto'
Probing mp3 score:12 size:2048
Probing mp3 score:12 size:4096
Probing mp3 score:12 size:8192
Probing mp3 score:12 size:16384
Probing mp3 score:12 size:32768
Probing mp3 score:12 size:65536
Probing mp3 score:12 size:131072
Probing mp3 score:12 size:262144
Probing mp3 score:12 size:524288
Probing mp3 score:1 size:82
[mp3 @ 0x5555559993c0] Format mp3 detected only with low score of 1,
misdetection possible!
id3v2 ver:3 flags:00 len:1048484
[mp3 @ 0x5555559993c0] Skipping 0 bytes of junk at 1048494.
[mp3 @ 0x5555559993c0] Before avformat_find_stream_info() pos: 1048494
bytes read:1081344 seeks:0 nb_streams:2
[mjpeg @ 0x55555599c040] marker=d8 avail_size_in_buf=883980
[mjpeg @ 0x55555599c040] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x55555599c040] marker=e1 avail_size_in_buf=883978
[mjpeg @ 0x55555599c040] marker parser used 8597 bytes (68776 bits)
[mjpeg @ 0x55555599c040] marker=ed avail_size_in_buf=875378
[mjpeg @ 0x55555599c040] marker parser used 10641 bytes (85128 bits)
[mjpeg @ 0x55555599c040] marker=e1 avail_size_in_buf=864734
[mjpeg @ 0x55555599c040] marker parser used 4543 bytes (36344 bits)
[mjpeg @ 0x55555599c040] marker=e2 avail_size_in_buf=860188
[mjpeg @ 0x55555599c040] marker parser used 3160 bytes (25280 bits)
[mjpeg @ 0x55555599c040] marker=ee avail_size_in_buf=857026
[mjpeg @ 0x55555599c040] marker parser used 33 bytes (264 bits)
[mjpeg @ 0x55555599c040] marker=db avail_size_in_buf=856991
[mjpeg @ 0x55555599c040] index=0
[mjpeg @ 0x55555599c040] qscale[0]: 0
[mjpeg @ 0x55555599c040] index=1
[mjpeg @ 0x55555599c040] qscale[1]: 0
[mjpeg @ 0x55555599c040] marker parser used 132 bytes (1056 bits)
[mjpeg @ 0x55555599c040] marker=c2 avail_size_in_buf=856857
[mjpeg @ 0x55555599c040] Changing bps from 0 to 8
[mjpeg @ 0x55555599c040] sof0: picture: 3100x3100
[mjpeg @ 0x55555599c040] component 0 1:1 id: 0 quant:0
[mjpeg @ 0x55555599c040] component 1 1:1 id: 1 quant:1
[mjpeg @ 0x55555599c040] component 2 1:1 id: 2 quant:1
[mjpeg @ 0x55555599c040] pix fmt id 11111100
[mjpeg @ 0x55555599c040] Format yuvj444p chosen by get_format().
[mjpeg @ 0x55555599c040] marker parser used 17 bytes (136 bits)
[mjpeg @ 0x55555599c040] marker=c4 avail_size_in_buf=856838
[mjpeg @ 0x55555599c040] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x55555599c040] escaping removed 750224 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=856479
[mjpeg @ 0x55555599c040] marker parser used 106255 bytes (850040 bits)
[mjpeg @ 0x55555599c040] escaping removed 728692 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=750100
[mjpeg @ 0x55555599c040] marker parser used 21408 bytes (171264 bits)
[mjpeg @ 0x55555599c040] escaping removed 702901 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=728519
[mjpeg @ 0x55555599c040] marker parser used 25618 bytes (204944 bits)
[mjpeg @ 0x55555599c040] escaping removed 585158 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=702808
[mjpeg @ 0x55555599c040] marker parser used 117650 bytes (941200 bits)
[mjpeg @ 0x55555599c040] escaping removed 528692 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=584856
[mjpeg @ 0x55555599c040] marker parser used 56164 bytes (449312 bits)
[mjpeg @ 0x55555599c040] escaping removed 441063 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=528460
[mjpeg @ 0x55555599c040] marker parser used 87397 bytes (699176 bits)
[mjpeg @ 0x55555599c040] escaping removed 1978 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=440548
[mjpeg @ 0x55555599c040] marker parser used 438570 bytes (3508560 bits)
[mjpeg @ 0x55555599c040] marker=d9 avail_size_in_buf=0
[mjpeg @ 0x55555599c040] decode frame unused 0 bytes
[mp3 @ 0x5555559993c0] All info found
[mp3 @ 0x5555559993c0] stream 0: start_time: 0.000 duration:
-653583619391.637
[mp3 @ 0x5555559993c0] stream 1: start_time: -102481911520608.625
duration: -102481911520608.625
[mp3 @ 0x5555559993c0] format: start_time: 0.000 duration:
-9223372036854.775 bitrate=128 kb/s
[mp3 @ 0x5555559993c0] After avformat_find_stream_info() pos: 1069998
bytes read:1081344 seeks:0 frames:51
Input #0, mp3, from 'pipe:0':
Metadata:
genre : Podcast
track : 53
album : Original Soundchat
title : SUPER SMASH BROS. BRAWL - Episode 53 (JAN 28, 2020)
artist : Anonymous Dinosaur
album_artist : Joe DeVader & Peter Spezia
date : 2020-01-27 20:20
id3v2_priv.XMP : <?xpacket begin="\xef\xbb\xbf"
id="W5M0MpCehiHzreSzNTczkc9d"?>\x0a<x:xmpmeta xmlns:x="adobe:ns:meta/"
x:xmptk="Adobe XMP Core 5.6-c148 79.164036, 2019/08/13-01:06:57
">\x0a <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-
ns#">\x0a <rdf
Duration: N/A, start: 0.000000, bitrate: 128 kb/s
Stream #0:0, 50, 1/14112000: Audio: mp3, 44100 Hz, stereo, fltp, 128
kb/s
Stream #0:1, 1, 1/90000: Video: mjpeg (Progressive), 1 reference
frame, yuvj444p(pc, bt470bg/unknown/unknown, center), 3100x3100, 0/1, 90k
tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
comment : Other
[AVIOContext @ 0x5555559a1e80] Statistics: 1081344 bytes read, 0 seeks
4.2.2:
$ cat OSC053.mp3 | ffmpeg -v trace -i pipe:0
ffprobe version 4.2.2 Copyright (c) 2007-2019 the FFmpeg developers
built with gcc 9.2.0 (Alpine 9.2.0)
configuration: --pkg-config-flags=--static --extra-cflags=-fopenmp
--extra-ldflags='-static -fopenmp' --toolchain=hardened --disable-debug
--disable-shared --disable-ffplay --enable-static --enable-gpl --enable-
nonfree --enable-openssl --enable-iconv --enable-libxml2 --enable-
libmp3lame --enable-libfdk-aac --enable-libvorbis --enable-libopus
--enable-libtheora --enable-libvpx --enable-libx264 --enable-libx265
--enable-libwebp --enable-libwavpack --enable-libspeex --enable-libaom
--enable-libvidstab --enable-libkvazaar --enable-libfreetype --enable-
fontconfig --enable-libfribidi --enable-libass --enable-libzimg --enable-
libsoxr --enable-libopenjpeg --enable-libdav1d
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[NULL @ 0x55555641e4c0] Opening 'pipe:0' for reading
[pipe @ 0x55555641ed80] Setting default whitelist 'crypto'
Probing mp3 score:12 size:2048
Probing mp3 score:12 size:4096
Probing mp3 score:12 size:8192
Probing mp3 score:12 size:16384
Probing mp3 score:12 size:32768
Probing mp3 score:12 size:65536
Probing mp3 score:12 size:131072
Probing mp3 score:12 size:262144
Probing mp3 score:12 size:524288
[AVIOContext @ 0x555556426f80] Statistics: 1073152 bytes read, 0 seeks
pipe:0: Invalid data found when processing input
4.2.2 with increased formatprobesize:
$ cat OSC053.mp3 | ffmpeg -formatprobesize 2000000 -v trace -i pipe:0
ffprobe version 4.2.2 Copyright (c) 2007-2019 the FFmpeg developers
built with gcc 9.2.0 (Alpine 9.2.0)
configuration: --pkg-config-flags=--static --extra-cflags=-fopenmp
--extra-ldflags='-static -fopenmp' --toolchain=hardened --disable-debug
--disable-shared --disable-ffplay --enable-static --enable-gpl --enable-
nonfree --enable-openssl --enable-iconv --enable-libxml2 --enable-
libmp3lame --enable-libfdk-aac --enable-libvorbis --enable-libopus
--enable-libtheora --enable-libvpx --enable-libx264 --enable-libx265
--enable-libwebp --enable-libwavpack --enable-libspeex --enable-libaom
--enable-libvidstab --enable-libkvazaar --enable-libfreetype --enable-
fontconfig --enable-libfribidi --enable-libass --enable-libzimg --enable-
libsoxr --enable-libopenjpeg --enable-libdav1d
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[NULL @ 0x5555557b5540] Opening 'pipe:0' for reading
[pipe @ 0x5555557b5e80] Setting default whitelist 'crypto'
Probing mp3 score:12 size:2048
Probing mp3 score:12 size:4096
Probing mp3 score:12 size:8192
Probing mp3 score:12 size:16384
Probing mp3 score:12 size:32768
Probing mp3 score:12 size:65536
Probing mp3 score:12 size:131072
Probing mp3 score:12 size:262144
Probing mp3 score:12 size:524288
Probing mp3 score:51 size:1048658
[mp3 @ 0x5555557b5540] Format mp3 probed with size=2097152 and score=51
id3v2 ver:3 flags:00 len:1048484
[mp3 @ 0x5555557b5540] Skipping 0 bytes of junk at 1048494.
[mp3 @ 0x5555557b5540] Before avformat_find_stream_info() pos: 1048494
bytes read:2105344 seeks:0 nb_streams:2
[mjpeg @ 0x5555557b8180] marker=d8 avail_size_in_buf=883980
[mjpeg @ 0x5555557b8180] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x5555557b8180] marker=e1 avail_size_in_buf=883978
[mjpeg @ 0x5555557b8180] marker parser used 8597 bytes (68776 bits)
[mjpeg @ 0x5555557b8180] marker=ed avail_size_in_buf=875378
[mjpeg @ 0x5555557b8180] marker parser used 10641 bytes (85128 bits)
[mjpeg @ 0x5555557b8180] marker=e1 avail_size_in_buf=864734
[mjpeg @ 0x5555557b8180] marker parser used 4543 bytes (36344 bits)
[mjpeg @ 0x5555557b8180] marker=e2 avail_size_in_buf=860188
[mjpeg @ 0x5555557b8180] marker parser used 3160 bytes (25280 bits)
[mjpeg @ 0x5555557b8180] marker=ee avail_size_in_buf=857026
[mjpeg @ 0x5555557b8180] marker parser used 33 bytes (264 bits)
[mjpeg @ 0x5555557b8180] marker=db avail_size_in_buf=856991
[mjpeg @ 0x5555557b8180] index=0
[mjpeg @ 0x5555557b8180] qscale[0]: 0
[mjpeg @ 0x5555557b8180] index=1
[mjpeg @ 0x5555557b8180] qscale[1]: 0
[mjpeg @ 0x5555557b8180] marker parser used 132 bytes (1056 bits)
[mjpeg @ 0x5555557b8180] marker=c2 avail_size_in_buf=856857
[mjpeg @ 0x5555557b8180] Changing bps from 0 to 8
[mjpeg @ 0x5555557b8180] sof0: picture: 3100x3100
[mjpeg @ 0x5555557b8180] component 0 1:1 id: 0 quant:0
[mjpeg @ 0x5555557b8180] component 1 1:1 id: 1 quant:1
[mjpeg @ 0x5555557b8180] component 2 1:1 id: 2 quant:1
[mjpeg @ 0x5555557b8180] pix fmt id 11111100
[mjpeg @ 0x5555557b8180] Format yuvj444p chosen by get_format().
[mjpeg @ 0x5555557b8180] marker parser used 17 bytes (136 bits)
[mjpeg @ 0x5555557b8180] marker=c4 avail_size_in_buf=856838
[mjpeg @ 0x5555557b8180] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x5555557b8180] escaping removed 750224 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=856479
[mjpeg @ 0x5555557b8180] marker parser used 106255 bytes (850040 bits)
[mjpeg @ 0x5555557b8180] escaping removed 728692 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=750100
[mjpeg @ 0x5555557b8180] marker parser used 21408 bytes (171264 bits)
[mjpeg @ 0x5555557b8180] escaping removed 702901 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=728519
[mjpeg @ 0x5555557b8180] marker parser used 25618 bytes (204944 bits)
[mjpeg @ 0x5555557b8180] escaping removed 585158 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=702808
[mjpeg @ 0x5555557b8180] marker parser used 117650 bytes (941200 bits)
[mjpeg @ 0x5555557b8180] escaping removed 528692 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=584856
[mjpeg @ 0x5555557b8180] marker parser used 56164 bytes (449312 bits)
[mjpeg @ 0x5555557b8180] escaping removed 441063 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=528460
[mjpeg @ 0x5555557b8180] marker parser used 87397 bytes (699176 bits)
[mjpeg @ 0x5555557b8180] escaping removed 1978 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=440548
[mjpeg @ 0x5555557b8180] marker parser used 438570 bytes (3508560 bits)
[mjpeg @ 0x5555557b8180] marker=d9 avail_size_in_buf=0
[mjpeg @ 0x5555557b8180] decode frame unused 0 bytes
[mp3 @ 0x5555557b5540] All info found
[mp3 @ 0x5555557b5540] stream 0: start_time: 0.000 duration:
-653583619391.637
[mp3 @ 0x5555557b5540] stream 1: start_time: -102481911520608.625
duration: -102481911520608.625
[mp3 @ 0x5555557b5540] format: start_time: 0.000 duration:
-9223372036854.775 bitrate=128 kb/s
[mp3 @ 0x5555557b5540] After avformat_find_stream_info() pos: 1069998
bytes read:2105344 seeks:0 frames:51
Input #0, mp3, from 'pipe:0':
Metadata:
genre : Podcast
track : 53
album : Original Soundchat
title : SUPER SMASH BROS. BRAWL - Episode 53 (JAN 28, 2020)
artist : Anonymous Dinosaur
album_artist : Joe DeVader & Peter Spezia
date : 2020-01-27 20:20
id3v2_priv.XMP : <?xpacket begin="\xef\xbb\xbf"
id="W5M0MpCehiHzreSzNTczkc9d"?>\x0a<x:xmpmeta xmlns:x="adobe:ns:meta/"
x:xmptk="Adobe XMP Core 5.6-c148 79.164036, 2019/08/13-01:06:57
">\x0a <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-
ns#">\x0a <rdf
Duration: N/A, start: 0.000000, bitrate: 128 kb/s
Stream #0:0, 50, 1/14112000: Audio: mp3, 44100 Hz, stereo, fltp, 128
kb/s
Stream #0:1, 1, 1/90000: Video: mjpeg (Progressive), 1 reference
frame, yuvj444p(pc, bt470bg/unknown/unknown, center), 3100x3100, 0/1, 90k
tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
comment : Other
[AVIOContext @ 0x5555557be080] Statistics: 2105344 bytes read, 0 seeks
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8511>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list