[FFmpeg-trac] #6957(undetermined:new): ffmpeg fails to identify intact MJPEG stream if file contains exactly 2 frames
FFmpeg
trac at avcodec.org
Thu Jan 11 08:25:33 EET 2018
#6957: ffmpeg fails to identify intact MJPEG stream if file contains exactly 2
frames
-------------------------------------+-------------------------------------
Reporter: Fusl | Type: defect
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Attached are exactly three JPEG frames for a MJPEG stream, the MJPEG
stream files are generated by concatenating them with
{{{
cat frame1.jpg > stream1.mjpg
cat frame1.jpg frame2.jpg > stream2.mjpg
cat frame1.jpg frame2.jpg frame3.jpg > stream3.mjpg
}}}
Problems persist through all binaries (ffmpeg, ffprobe and ffplay tested)
'''ffmpeg version''':
{{{
ffmpeg version N-89662-g0e1f771d22-static
https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2017 the FFmpeg
developers
built with gcc 6.4.0 (Debian 6.4.0-11) 20171206
configuration: --enable-gpl --enable-version3 --enable-static --disable-
debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio
--cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-
gray --enable-libfribidi --enable-libass --enable-libvmaf --enable-
libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-
librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-
libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc
--enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxvid --enable-libzimg
libavutil 56. 7.100 / 56. 7.100
libavcodec 58. 9.100 / 58. 9.100
libavformat 58. 3.100 / 58. 3.100
libavdevice 58. 0.100 / 58. 0.100
libavfilter 7. 8.100 / 7. 8.100
libswscale 5. 0.101 / 5. 0.101
libswresample 3. 0.101 / 3. 0.101
libpostproc 55. 0.100 / 55. 0.100
}}}
'''-loglevel trace stream1.mjpg (1 frame)''':
{{{
[NULL @ 0x571a580] Opening 'stream1.mjpg' for reading
[file @ 0x571ae80] Setting default whitelist 'file,crypto'
Probing jpeg_pipe score:25 size:2048
Probing jpeg_pipe score:25 size:4096
Probing jpeg_pipe score:25 size:8192
Probing jpeg_pipe score:25 size:16384
Probing jpeg_pipe score:25 size:32768
Probing jpeg_pipe score:25 size:65536
Probing jpeg_pipe score:25 size:131072
Probing jpeg_pipe score:51 size:258716
[jpeg_pipe @ 0x571a580] Format jpeg_pipe probed with size=262144 and
score=51
[jpeg_pipe @ 0x571a580] Before avformat_find_stream_info() pos: 0 bytes
read:258716 seeks:0 nb_streams:1
[mjpeg @ 0x571c080] marker=d8 avail_size_in_buf=258714
[mjpeg @ 0x571c080] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x571c080] marker=db avail_size_in_buf=258712
[mjpeg @ 0x571c080] index=0
[mjpeg @ 0x571c080] qscale[0]: 1
[mjpeg @ 0x571c080] marker parser used 67 bytes (536 bits)
[mjpeg @ 0x571c080] marker=db avail_size_in_buf=258643
[mjpeg @ 0x571c080] index=1
[mjpeg @ 0x571c080] qscale[1]: 1
[mjpeg @ 0x571c080] marker parser used 67 bytes (536 bits)
[mjpeg @ 0x571c080] marker=c0 avail_size_in_buf=258574
[mjpeg @ 0x571c080] Changing bps from 0 to 8
[mjpeg @ 0x571c080] sof0: picture: 1920x1080
[mjpeg @ 0x571c080] component 0 2:1 id: 0 quant:0
[mjpeg @ 0x571c080] component 1 1:1 id: 1 quant:1
[mjpeg @ 0x571c080] component 2 1:1 id: 2 quant:1
[mjpeg @ 0x571c080] pix fmt id 21111100
[mjpeg @ 0x571c080] marker parser used 17 bytes (136 bits)
[mjpeg @ 0x571c080] marker=c4 avail_size_in_buf=258555
[mjpeg @ 0x571c080] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x571c080] marker=c4 avail_size_in_buf=258522
[mjpeg @ 0x571c080] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x571c080] marker=c4 avail_size_in_buf=258339
[mjpeg @ 0x571c080] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x571c080] marker=c4 avail_size_in_buf=258306
[mjpeg @ 0x571c080] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x571c080] escaping removed 337 bytes
[mjpeg @ 0x571c080] marker=da avail_size_in_buf=258123
[mjpeg @ 0x571c080] marker parser used 257786 bytes (2062288 bits)
[mjpeg @ 0x571c080] marker=d9 avail_size_in_buf=0
[mjpeg @ 0x571c080] decode frame unused 0 bytes
[jpeg_pipe @ 0x571a580] stream 0: start_time: -368934881474191040.000
duration: -368934881474191040.000
[jpeg_pipe @ 0x571a580] format: start_time: -9223372036854.775 duration:
-9223372036854.775 bitrate=0 kb/s
[jpeg_pipe @ 0x571a580] After avformat_find_stream_info() pos: 258716
bytes read:258716 seeks:0 frames:1
Input #0, jpeg_pipe, from 'stream1.mjpg':
Duration: N/A, bitrate: N/A
Stream #0:0, 1, 1/25: Video: mjpeg, 1 reference frame, yuvj422p(pc,
bt470bg/unknown/unknown, center), 1920x1080, 0/1, 25 tbr, 25 tbn, 25 tbc
[AVIOContext @ 0x57232c0] Statistics: 258716 bytes read, 0 seeks
}}}
'''-loglevel trace stream3.mjpg (3 frames)''':
{{{
[NULL @ 0x46da580] Opening 'stream3.mjpg' for reading
[file @ 0x46dae80] Setting default whitelist 'file,crypto'
Probing jpeg_pipe score:25 size:2048
Probing jpeg_pipe score:25 size:4096
Probing jpeg_pipe score:25 size:8192
Probing jpeg_pipe score:25 size:16384
Probing jpeg_pipe score:25 size:32768
Probing jpeg_pipe score:25 size:65536
Probing jpeg_pipe score:25 size:131072
Probing mjpeg score:12 size:524288
Probing mjpeg score:12 size:774426
[mjpeg @ 0x46da580] Format mjpeg detected only with low score of 12,
misdetection possible!
[mjpeg @ 0x46da580] Before avformat_find_stream_info() pos: 0 bytes
read:774426 seeks:0 nb_streams:1
[mjpeg @ 0x46dbc40] marker=d8 avail_size_in_buf=258714
[mjpeg @ 0x46dbc40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x46dbc40] marker=db avail_size_in_buf=258712
[mjpeg @ 0x46dbc40] index=0
[mjpeg @ 0x46dbc40] qscale[0]: 1
[mjpeg @ 0x46dbc40] marker parser used 67 bytes (536 bits)
[mjpeg @ 0x46dbc40] marker=db avail_size_in_buf=258643
[mjpeg @ 0x46dbc40] index=1
[mjpeg @ 0x46dbc40] qscale[1]: 1
[mjpeg @ 0x46dbc40] marker parser used 67 bytes (536 bits)
[mjpeg @ 0x46dbc40] marker=c0 avail_size_in_buf=258574
[mjpeg @ 0x46dbc40] Changing bps from 0 to 8
[mjpeg @ 0x46dbc40] sof0: picture: 1920x1080
[mjpeg @ 0x46dbc40] component 0 2:1 id: 0 quant:0
[mjpeg @ 0x46dbc40] component 1 1:1 id: 1 quant:1
[mjpeg @ 0x46dbc40] component 2 1:1 id: 2 quant:1
[mjpeg @ 0x46dbc40] pix fmt id 21111100
[mjpeg @ 0x46dbc40] marker parser used 17 bytes (136 bits)
[mjpeg @ 0x46dbc40] marker=c4 avail_size_in_buf=258555
[mjpeg @ 0x46dbc40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x46dbc40] marker=c4 avail_size_in_buf=258522
[mjpeg @ 0x46dbc40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x46dbc40] marker=c4 avail_size_in_buf=258339
[mjpeg @ 0x46dbc40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x46dbc40] marker=c4 avail_size_in_buf=258306
[mjpeg @ 0x46dbc40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x46dbc40] escaping removed 337 bytes
[mjpeg @ 0x46dbc40] marker=da avail_size_in_buf=258123
[mjpeg @ 0x46dbc40] marker parser used 257786 bytes (2062288 bits)
[mjpeg @ 0x46dbc40] marker=d9 avail_size_in_buf=0
[mjpeg @ 0x46dbc40] decode frame unused 0 bytes
[mjpeg @ 0x46da580] All info found
[mjpeg @ 0x46da580] stream 0: start_time: -7686143364045.646 duration:
-7686143364045.646
[mjpeg @ 0x46da580] format: start_time: -9223372036854.775 duration:
-9223372036854.775 bitrate=0 kb/s
[mjpeg @ 0x46da580] After avformat_find_stream_info() pos: 259072 bytes
read:774426 seeks:0 frames:1
Input #0, mjpeg, from 'stream3.mjpg':
Duration: N/A, bitrate: N/A
Stream #0:0, 1, 1/1200000: Video: mjpeg, 1 reference frame,
yuvj422p(pc, bt470bg/unknown/unknown, center), 1920x1080, 0/1, 25 tbr,
1200k tbn, 25 tbc
[AVIOContext @ 0x46e32c0] Statistics: 774426 bytes read, 0 seeks
}}}
'''-loglevel trace stream2.mjpg (2 frames)''':
{{{
[NULL @ 0x58df580] Opening 'stream2.mjpg' for reading
[file @ 0x58dfe80] Setting default whitelist 'file,crypto'
Probing jpeg_pipe score:25 size:2048
Probing jpeg_pipe score:25 size:4096
Probing jpeg_pipe score:25 size:8192
Probing jpeg_pipe score:25 size:16384
Probing jpeg_pipe score:25 size:32768
Probing jpeg_pipe score:25 size:65536
Probing jpeg_pipe score:25 size:131072
[AVIOContext @ 0x58e82c0] Statistics: 516330 bytes read, 0 seeks
stream2.mjpg: Invalid data found when processing input
}}}
'''-loglevel trace -f mjpeg stream2.mjpg (2 frames with "mjpeg" format
forced)''':
{{{
[mjpeg @ 0x4e66580] Opening 'stream2.mjpg' for reading
[file @ 0x4e66e80] Setting default whitelist 'file,crypto'
[mjpeg @ 0x4e66580] Before avformat_find_stream_info() pos: 0 bytes
read:32768 seeks:0 nb_streams:1
[mjpeg @ 0x4e6fe40] marker=d8 avail_size_in_buf=258714
[mjpeg @ 0x4e6fe40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x4e6fe40] marker=db avail_size_in_buf=258712
[mjpeg @ 0x4e6fe40] index=0
[mjpeg @ 0x4e6fe40] qscale[0]: 1
[mjpeg @ 0x4e6fe40] marker parser used 67 bytes (536 bits)
[mjpeg @ 0x4e6fe40] marker=db avail_size_in_buf=258643
[mjpeg @ 0x4e6fe40] index=1
[mjpeg @ 0x4e6fe40] qscale[1]: 1
[mjpeg @ 0x4e6fe40] marker parser used 67 bytes (536 bits)
[mjpeg @ 0x4e6fe40] marker=c0 avail_size_in_buf=258574
[mjpeg @ 0x4e6fe40] Changing bps from 0 to 8
[mjpeg @ 0x4e6fe40] sof0: picture: 1920x1080
[mjpeg @ 0x4e6fe40] component 0 2:1 id: 0 quant:0
[mjpeg @ 0x4e6fe40] component 1 1:1 id: 1 quant:1
[mjpeg @ 0x4e6fe40] component 2 1:1 id: 2 quant:1
[mjpeg @ 0x4e6fe40] pix fmt id 21111100
[mjpeg @ 0x4e6fe40] marker parser used 17 bytes (136 bits)
[mjpeg @ 0x4e6fe40] marker=c4 avail_size_in_buf=258555
[mjpeg @ 0x4e6fe40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x4e6fe40] marker=c4 avail_size_in_buf=258522
[mjpeg @ 0x4e6fe40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x4e6fe40] marker=c4 avail_size_in_buf=258339
[mjpeg @ 0x4e6fe40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x4e6fe40] marker=c4 avail_size_in_buf=258306
[mjpeg @ 0x4e6fe40] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x4e6fe40] escaping removed 337 bytes
[mjpeg @ 0x4e6fe40] marker=da avail_size_in_buf=258123
[mjpeg @ 0x4e6fe40] marker parser used 257786 bytes (2062288 bits)
[mjpeg @ 0x4e6fe40] marker=d9 avail_size_in_buf=0
[mjpeg @ 0x4e6fe40] decode frame unused 0 bytes
[mjpeg @ 0x4e66580] All info found
[mjpeg @ 0x4e66580] stream 0: start_time: -7686143364045.646 duration:
-7686143364045.646
[mjpeg @ 0x4e66580] format: start_time: -9223372036854.775 duration:
-9223372036854.775 bitrate=0 kb/s
[mjpeg @ 0x4e66580] After avformat_find_stream_info() pos: 259072 bytes
read:262144 seeks:0 frames:1
Input #0, mjpeg, from 'stream2.mjpg':
Duration: N/A, bitrate: N/A
Stream #0:0, 1, 1/1200000: Video: mjpeg, 1 reference frame,
yuvj422p(pc, bt470bg/unknown/unknown, center), 1920x1080, 0/1, 25 tbr,
1200k tbn, 25 tbc
[AVIOContext @ 0x4e6f2c0] Statistics: 262144 bytes read, 0 seeks
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6957>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list