[FFmpeg-trac] #2405(FFmpeg:new): FFmpeg does not error out in case of empty output

FFmpeg trac at avcodec.org
Tue Mar 26 16:00:18 CET 2013


#2405: FFmpeg does not error out in case of empty output
--------------------------------------+--------------------------------
               Reporter:  ubitux      |                  Owner:
                   Type:  defect      |                 Status:  new
               Priority:  normal      |              Component:  FFmpeg
                Version:  git-master  |               Keywords:
             Blocked By:              |               Blocking:
Reproduced by developer:  0           |  Analyzed by developer:  0
--------------------------------------+--------------------------------
 If a corrupted image fails at re-encoded, ffmpeg still exits zero.

 Get a PNG:
 {{{
 ☭ ./ffmpeg -i tests/lena.pnm -y lena.png
 ffmpeg version N-51308-g0177228 Copyright (c) 2000-2013 the FFmpeg
 developers
   built on Mar 26 2013 14:45:00 with gcc 4.7.2 (GCC)
   configuration: --enable-gpl --enable-version3 --enable-fontconfig
 --enable-libfreetype --enable-libmp3lame --enable-libvorbis --enable-
 libxvid --enable-libx264 --enable-libvpx --enable-libtheora --enable-
 x11grab --enable-libopenjpeg --enable-libass --enable-libmodplug --enable-
 libv4l2 --cc=colorgcc --samples=/home/ubitux/fate-samples
 --prefix=/tmp/ffinstall --disable-runtime-cpudetect --enable-libcelt
 --enable-libopencv --enable-frei0r --enable-libcaca --enable-libiec61883
 --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-libopus
 --enable-libpulse --enable-libspeex --enable-openal --enable-libopencv
   libavutil      52. 22.101 / 52. 22.101
   libavcodec     55.  1.100 / 55.  1.100
   libavformat    55.  0.100 / 55.  0.100
   libavdevice    55.  0.100 / 55.  0.100
   libavfilter     3. 48.105 /  3. 48.105
   libswscale      2.  2.100 /  2.  2.100
   libswresample   0. 17.102 /  0. 17.102
   libpostproc    52.  2.100 / 52.  2.100
 Input #0, image2, from 'tests/lena.pnm':
   Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
     Stream #0:0: Video: ppm, rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc
 Output #0, image2, to 'lena.png':
   Metadata:
     encoder         : Lavf55.0.100
     Stream #0:0: Video: png, rgb24, 256x256, q=2-31, 200 kb/s, 90k tbn, 25
 tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (ppm -> png)
 Press [q] to stop, [?] for help
 frame=    1 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
 video:177kB audio:0kB subtitle:0 global headers:0kB muxing overhead
 -100.012156%
 }}}

 Corrupt it:
 {{{
 ☭ ls -l lena.png
 -rw-r--r-- 1 ubitux ubitux 177K Mar 26 15:57 lena.png
 ☭ dd if=lena.png of=in.png bs=150K count=1
 1+0 records in
 1+0 records out
 153600 bytes (154 kB) copied, 0.000522418 s, 294 MB/s
 ☭ ls -l in.png
 -rw-r--r-- 1 ubitux ubitux 150K Mar 26 15:57 in.png
 }}}

 Re-encode it:
 {{{
 ☭ ./ffmpeg -i in.png out.png
 ffmpeg version N-51308-g0177228 Copyright (c) 2000-2013 the FFmpeg
 developers
   built on Mar 26 2013 14:45:00 with gcc 4.7.2 (GCC)
   configuration: --enable-gpl --enable-version3 --enable-fontconfig
 --enable-libfreetype --enable-libmp3lame --enable-libvorbis --enable-
 libxvid --enable-libx264 --enable-libvpx --enable-libtheora --enable-
 x11grab --enable-libopenjpeg --enable-libass --enable-libmodplug --enable-
 libv4l2 --cc=colorgcc --samples=/home/ubitux/fate-samples
 --prefix=/tmp/ffinstall --disable-runtime-cpudetect --enable-libcelt
 --enable-libopencv --enable-frei0r --enable-libcaca --enable-libiec61883
 --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-libopus
 --enable-libpulse --enable-libspeex --enable-openal --enable-libopencv
   libavutil      52. 22.101 / 52. 22.101
   libavcodec     55.  1.100 / 55.  1.100
   libavformat    55.  0.100 / 55.  0.100
   libavdevice    55.  0.100 / 55.  0.100
   libavfilter     3. 48.105 /  3. 48.105
   libswscale      2.  2.100 /  2.  2.100
   libswresample   0. 17.102 /  0. 17.102
   libpostproc    52.  2.100 / 52.  2.100
 [png @ 0x1b22760] chunk too big
 Input #0, image2, from 'in.png':
   Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
     Stream #0:0: Video: png, rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc
 Output #0, image2, to 'out.png':
   Metadata:
     encoder         : Lavf55.0.100
     Stream #0:0: Video: png, rgb24, 256x256, q=2-31, 200 kb/s, 90k tbn, 25
 tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (png -> png)
 Press [q] to stop, [?] for help
 [png @ 0x1b22760] chunk too big
 Error while decoding stream #0:0: Operation not permitted
 frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A
 video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead -inf%
 Output file is empty, nothing was encoded (check -ss / -t / -frames
 parameters if used)
 ☭ echo $?
 0
 ☭ ls -l out.png
 ls: cannot access out.png: No such file or directory
 }}}

 Using -err_detect explode does not help either. Also, the file isn't even
 created. This behavior causes trouble when scripting.

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2405>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list