[FFmpeg-trac] #8211(avformat:new): ffplay does'nt play mjpeg stream
FFmpeg
trac at avcodec.org
Sun Mar 21 23:53:46 EET 2021
#8211: ffplay does'nt play mjpeg stream
-------------------------------------+------------------------------------
Reporter: anhsoft | Owner:
Type: enhancement | Status: new
Priority: wish | Component: avformat
Version: git-master | Resolution:
Keywords: rtsp mjpeg | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+------------------------------------
Comment (by HappyCow):
Dear friends, this problem has me stuck and intrigued yet.
Basically the same application (ffmpeg) doing a perfect job in Android and
failing in the other platforms.
Probably the difference is subtle and requires and expert eye (what I am
absolutely not, due to my lack of knowledge in ffmpeg)
You can tell, following the decoding process in both platforms that
everything goes quite similar, except for the estimation of the
"avail_size_in_buf" [which I assume is the AVPacket->pkt->size] when
parsing the first JFIF D8 marker [SOI, Start of Image], then it also
differs when parsing the DD [restart interval], and finally it goes crazy
with the DA [start of scan] (my guess is because it got the buffer size
wrong) until it finally reaches the D9 [end of image] and the same history
repeats again over and over, frame after frame.
I am including the comparative table in both platforms.
||= IjkPlayer (Android) =||= FFPLAY (Windows) =||
||** marker=d8 avail_size_in_buf=37738||** marker=d8
avail_size_in_buf=8859||
||marker parser used 0 bytes (0 bits)||marker parser used 0 bytes (0
bits)||
||marker=e0 avail_size_in_buf=37736||marker=e0 avail_size_in_buf=8857||
||marker parser used 16 bytes (128 bits)||marker parser used 16 bytes (128
bits)||
|| ||** marker=dd avail_size_in_buf=8839||
||= =||=** restart interval: 1181 =||
|| ||marker parser used 4 bytes (32 bits)||
||=** marker=db avail_size_in_buf=37718 =||=** marker=db
avail_size_in_buf=8833 =||
||index=0||index=0||
||qscale[0]: 11||qscale[0]: 11||
||index=1||index=1||
||qscale[1]: 21||qscale[1]: 21||
||marker parser used 132 bytes (1056 bits)||marker parser used 132 bytes
(1056 bits)||
||** marker=dd avail_size_in_buf=37584||||
||=** restart interval: 40 =||= =||
||marker parser used 4 bytes (32 bits)||||
||marker=c4 avail_size_in_buf=37578||marker=c4 avail_size_in_buf=8699||
||class=0 index=0 nb_codes=12||class=0 index=0 nb_codes=12||
||class=0 index=1 nb_codes=12||class=0 index=1 nb_codes=12||
||class=1 index=0 nb_codes=251||class=1 index=0 nb_codes=251||
||class=1 index=1 nb_codes=251||class=1 index=1 nb_codes=251||
||marker parser used 418 bytes (3344 bits)||marker parser used 418 bytes
(3344 bits)||
||marker=c0 avail_size_in_buf=37158||marker=c0 avail_size_in_buf=8279||
||sof0: picture: 640x480||sof0: picture: 640x480||
||component 0 2:2 id: 0 quant:0||component 0 2:2 id: 0 quant:0||
||component 1 1:1 id: 1 quant:1||component 1 1:1 id: 1 quant:1||
||component 2 1:1 id: 2 quant:1||component 2 1:1 id: 2 quant:1||
||pix fmt id 22111100||pix fmt id 22111100||
||marker parser used 17 bytes (136 bits)||marker parser used 17 bytes (136
bits)||
||=** escaping removed 76 bytes =||=**escaping removed 15 bytes =||
||=** marker=da avail_size_in_buf=37139 =||=**marker=da
avail_size_in_buf=8260 =||
||component: 0||component: 0||
||component: 1||component: 1||
||component: 2||component: 2||
||=** marker parser used 37062 bytes (296490 bits) =||=**mjpeg_decode_dc:
bad vlc: 0:0 (0000021cc9e39248) =||
|| ||error dc||
|| ||error y=1 x=0||
|| ||marker parser used 245 bytes (1955 bits)||
|| ||marker=d0 avail_size_in_buf=8013||
|| ||restart marker: 0||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d1 avail_size_in_buf=7774||
|| ||restart marker: 1||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d2 avail_size_in_buf=7536||
|| ||restart marker: 2||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d3 avail_size_in_buf=7301||
|| ||restart marker: 3||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d4 avail_size_in_buf=7065||
|| ||restart marker: 4||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d5 avail_size_in_buf=6834||
|| ||restart marker: 5||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d6 avail_size_in_buf=6612||
|| ||restart marker: 6||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d7 avail_size_in_buf=6388||
|| ||restart marker: 7||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d0 avail_size_in_buf=6151||
|| ||restart marker: 0||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d1 avail_size_in_buf=5928||
|| ||restart marker: 1||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d2 avail_size_in_buf=5699||
|| ||restart marker: 2||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d3 avail_size_in_buf=5468||
|| ||restart marker: 3||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d4 avail_size_in_buf=5200||
|| ||restart marker: 4||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d5 avail_size_in_buf=4806||
|| ||restart marker: 5||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d6 avail_size_in_buf=4339||
|| ||restart marker: 6||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d7 avail_size_in_buf=3754||
|| ||restart marker: 7||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d0 avail_size_in_buf=3324||
|| ||restart marker: 0||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d1 avail_size_in_buf=3103||
|| ||restart marker: 1||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d2 avail_size_in_buf=2898||
|| ||restart marker: 2||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d3 avail_size_in_buf=2659||
|| ||restart marker: 3||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d4 avail_size_in_buf=2425||
|| ||restart marker: 4||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d5 avail_size_in_buf=2165||
|| ||restart marker: 5||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d6 avail_size_in_buf=1869||
|| ||restart marker: 6||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d7 avail_size_in_buf=1593||
|| ||restart marker: 7||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d0 avail_size_in_buf=1325||
|| ||restart marker: 0||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d1 avail_size_in_buf=1065||
|| ||restart marker: 1||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d2 avail_size_in_buf=788||
|| ||restart marker: 2||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d3 avail_size_in_buf=515||
|| ||restart marker: 3||
|| ||marker parser used 0 bytes (0 bits)||
|| ||marker=d4 avail_size_in_buf=284||
|| ||restart marker: 4||
|| ||marker parser used 0 bytes (0 bits)||
||=** marker=d9 avail_size_in_buf=2 =||=** marker=d9 avail_size_in_buf=2
=||
||decode frame unused 2 bytes||decode frame unused 2 bytes||
I would like to explore how an exact build of the Android version would
behave in Windows
ijkplayer : b0.4.0-48-g3642e87f
FFmpeg : ff3.3--bw0.8.0--20180323--001-1-geb1575fefe
libavutil : 55.58.100
libavcodec : 57.89.100
libavformat : 57.71.100
libswscale : 4.6.100
libswresample: 2.7.100
|| --enable asm ||
|| --disable audiotoolbox ||
||** --enable avcodec ||
|| --disable avdevice ||
|| --enable avfilter ||
|| --enable avformat ||
|| --disable avresample ||
|| --enable avutil ||
|| --disable bsfs ||
|| --enable cross-compile ||
|| --disable d3d11va ||
|| --disable debug ||
||** --disable decoders ||
|| --enable decoder=aac ||
|| --enable decoder=aac_latm ||
|| --enable decoder=h264 ||
|| --enable decoder=mjpeg ||
|| --enable decoder=mpeg4 ||
|| --enable decoder=pcm_s16be ||
|| --enable decoder=pcm_s16le ||
||** --disable demuxers ||
|| --enable demuxer=aac ||
|| --enable demuxer=avi ||
|| --enable demuxer=h264 ||
|| --enable demuxer=mjpeg ||
|| --enable demuxer=mov ||
|| --enable demuxer=pcm_s16be ||
|| --enable demuxer=pcm_s16le ||
|| --enable demuxer=rtsp ||
|| --disable devices ||
|| --disable doc ||
|| --disable dxva2 ||
||** --disable encoders ||
|| --enable encoder=aac ||
|| --enable encoder=libx264 ||
|| --enable encoder=mjpeg ||
|| --enable encoder=mpeg4 ||
|| --enable encoder=png ||
|| --disable ffmpeg ||
|| --disable ffplay ||
|| --disable ffprobe ||
|| --disable ffserver ||
||** --disable filters ||
|| --enable filter=anullsink ||
|| --enable filter=anullsrc ||
|| --enable filter=aresample ||
|| --enable filter=hflip ||
|| --enable filter=nullsink ||
|| --enable filter=nullsrc ||
|| --enable filter=rotate ||
|| --enable filter=transpose ||
|| --enable filter=vflip ||
|| --disable gpl ||
|| --enable gpl ||
|| --disable gray ||
|| --disable htmlpages ||
|| --disable iconv ||
|| --enable inline-asm ||
|| --enable libx264 ||
|| --disable manpages ||
||** --disable muxers ||
|| --enable muxer=avi ||
|| --enable muxer=h264 ||
|| --enable muxer=image2 ||
|| --enable muxer=mjpeg ||
|| --enable muxer=mov ||
|| --enable muxer=mp4 ||
|| --enable network ||
|| --disable nonfree ||
|| --enable optimizations ||
||** --disable parsers ||
|| --enable parser=aac ||
|| --enable parser=aac_latm ||
|| --enable parser=h264 ||
|| --enable parser=mjpeg ||
|| --enable parser=mpeg4video ||
|| --enable pic ||
|| --disable podpages ||
|| --disable postproc ||
|| --disable programs ||
||** --disable protocols ||
|| --enable protocol=async ||
|| --enable protocol=file ||
|| --enable protocol=rtp ||
|| --enable protocol=tcp ||
|| --enable protocol=udp ||
|| --enable runtime-cpudetect ||
|| --enable small ||
|| --enable swresample ||
|| --enable swscale ||
|| --disable swscale-alpha ||
|| --disable txtpages ||
|| --disable vaapi ||
|| --disable vda ||
|| --disable vdpau ||
|| --disable videotoolbox ||
|| --enable yasm ||
Unfortunately, I am not able to generate a build in Windows with this
parameters.
Could any of the experts in this group be so kind to point me to how to
get such a binary for Windows, so I could try to find out where the
problem arises (I am suspecting of the --enable avcodec)
Best regards. Good luck out there.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8211#comment:13>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list