[FFmpeg-trac] #8403(undetermined:new): Incorrect exit code when checking corrupted FFV1 file

FFmpeg trac at avcodec.org
Tue Nov 26 17:43:06 EET 2019


#8403: Incorrect exit code when checking corrupted FFV1 file
-------------------------------------+-------------------------------------
             Reporter:  yohann       |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 When I use ffmpeg for fixity checks (FFV1 encodec files), the output
 correctly mentions if there are CRC mismatch issues.
 But ffmpeg still exits with a 0 status code which makes it unsuable if I
 want to use it in a "check and process" workflow.

 Is it possible to do so we get a non-zero exit status when errors are
 detected ?

 The relevant error lines in the log are :
 {{{
 [ffv1 @ 0x7ff9e4ff7000] CRC mismatch 46612353!at 0.335000 seconds
 [ffv1 @ 0x7ff9e4ff7000] bytestream end mismatching by 7564819
 }}}


 Command :
 {{{
 ffmpeg -report -v 9 -loglevel 99  -i corrupted_FFV1.mkv -f null -
 }}}
 Log file :
 {{{
 ffmpeg started on 2019-11-26 at 16:27:45
 Report written to "ffmpeg-20191126-162745.log"
 Command line:
 ffmpeg -report -v 9 -loglevel 99 -i corrupted_FFV1.mkv -f null -
 ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
   built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1_2 --enable-shared
 --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-
 cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include
 -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include/darwin'
 --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-
 libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-
 librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora
 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264
 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig
 --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-
 amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp
 --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack
 --disable-indev=jack
   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
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  5.100 /  5.  5.100
   libswresample   3.  5.100 /  3.  5.100
   libpostproc    55.  5.100 / 55.  5.100
 Splitting the commandline.
 Reading option '-report' ... matched as option 'report' (generate a
 report) with argument '1'.
 Reading option '-v' ... matched as option 'v' (set logging level) with
 argument '9'.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument '99'.
 Reading option '-i' ... matched as input url with argument
 'corrupted_FFV1.mkv'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 'null'.
 Reading option '-' ... matched as output url.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option report (generate a report) with argument 1.
 Applying option v (set logging level) with argument 9.
 Applying option loglevel (set logging level) with argument 99.
 Successfully parsed a group of options.
 Parsing a group of options: input url corrupted_FFV1.mkv.
 Successfully parsed a group of options.
 Opening an input file: corrupted_FFV1.mkv.
 [NULL @ 0x7ff9e2801800] Opening 'corrupted_FFV1.mkv' for reading
 [file @ 0x7ff9e1f00580] Setting default whitelist 'file,crypto'
 [matroska,webm @ 0x7ff9e2801800] Format matroska,webm probed with
 size=2048 and score=100
 st:0 removing common factor 1000000 from timebase
 [matroska,webm @ 0x7ff9e2801800] Before avformat_find_stream_info() pos:
 949 bytes read:32768 seeks:0 nb_streams:1
 [matroska,webm @ 0x7ff9e2801800] parser not found for codec ffv1, packets
 or times may be invalid.
 [matroska,webm @ 0x7ff9e2801800] parser not found for codec ffv1, packets
 or times may be invalid.
 [matroska,webm @ 0x7ff9e2801800] All info found
 [matroska,webm @ 0x7ff9e2801800] After avformat_find_stream_info() pos:
 7560435 bytes read:7560435 seeks:0 frames:1
 Input #0, matroska,webm, from 'corrupted_FFV1.mkv':
   Metadata:
     ENCODER         : Lavf56.40.101
   Duration: 00:00:00.38, start: 0.000000, bitrate: 1551147 kb/s
     Stream #0:0, 1, 1/1000: Video: ffv1, 1 reference frame (FFV1 /
 0x31564646), gbrp10le, 4872x3248, 0/1, SAR 1:1 DAR 3:2, 24 fps, 24 tbr, 1k
 tbn, 1k tbc (default)
     Metadata:
       ENCODER         : Lavc56.60.100 ffv1
       DURATION        : 00:00:00.376000000
 Successfully opened the file.
 Parsing a group of options: output url -.
 Applying option f (force format) with argument null.
 Successfully parsed a group of options.
 Opening an output file: -.
 Successfully opened the file.
 detected 16 logical cores
 Stream mapping:
   Stream #0:0 -> #0:0 (ffv1 (native) -> wrapped_avframe (native))
 Press [q] to stop, [?] for help
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [matroska,webm @ 0x7ff9e2801800] Unknown entry 0xD7 at pos. 72903740
 [matroska,webm @ 0x7ff9e2801800] Element at 0x4586c3c ending at 0x49ec089
 exceeds containing master element ending at 0x4586cf1
 [ffv1 @ 0x7ff9e4ff7000] CRC mismatch 46612353!at 0.335000 seconds
 [matroska,webm @ 0x7ff9e2801800] Unknown entry 0x2EDD8E at pos. 72903680
 [matroska,webm @ 0x7ff9e2801800] Unknown entry 0xE6 at pos. 72903745
 [matroska,webm @ 0x7ff9e2801800] Unknown entry 0xF0 at pos. 72903811
 [matroska,webm @ 0x7ff9e2801800] Unknown entry 0x79BB at pos. 72903862
 [matroska,webm @ 0x7ff9e2801800] File ended prematurely at pos. 72903921
 (0x4586cf1)
 [ffv1 @ 0x7ff9e4ff7000] bytestream end mismatching by 7564819
 [graph 0 input from stream 0:0 @ 0x7ff9e1e01140] Setting 'video_size' to
 value '4872x3248'
 [graph 0 input from stream 0:0 @ 0x7ff9e1e01140] Setting 'pix_fmt' to
 value '77'
 [graph 0 input from stream 0:0 @ 0x7ff9e1e01140] Setting 'time_base' to
 value '1/1000'
 [graph 0 input from stream 0:0 @ 0x7ff9e1e01140] Setting 'pixel_aspect' to
 value '1/1'
 [graph 0 input from stream 0:0 @ 0x7ff9e1e01140] Setting 'sws_param' to
 value 'flags=2'
 [graph 0 input from stream 0:0 @ 0x7ff9e1e01140] Setting 'frame_rate' to
 value '24/1'
 [graph 0 input from stream 0:0 @ 0x7ff9e1e01140] w:4872 h:3248
 pixfmt:gbrp10le tb:1/1000 fr:24/1 sar:1/1 sws_param:flags=2
 [AVFilterGraph @ 0x7ff9e1e00c80] query_formats: 3 queried, 2 merged, 0
 already done, 0 delayed
 Output #0, null, to 'pipe:':
   Metadata:
     encoder         : Lavf58.29.100
     Stream #0:0, 0, 1/24: Video: wrapped_avframe, 1 reference frame,
 gbrp10le, 4872x3248 [SAR 1:1 DAR 3:2], 0/1, q=2-31, 200 kb/s, 24 fps, 24
 tbn, 24 tbc (default)
     Metadata:
       DURATION        : 00:00:00.376000000
       encoder         : Lavc58.54.100 wrapped_avframe
 frame=    1 fps=0.0 q=-0.0 size=N/A time=00:00:00.04 bitrate=N/A
 speed=0.0768x
 frame=    2 fps=1.0 q=-0.0 size=N/A time=00:00:00.08 bitrate=N/A
 speed=0.0408x
 frame=    8 fps=3.1 q=-0.0 size=N/A time=00:00:00.33 bitrate=N/A
 speed=0.129x
 [out_0_0 @ 0x7ff9e3900780] EOF on sink link out_0_0:default.
 No more output streams to write to, finishing.
 frame=    9 fps=3.4 q=-0.0 Lsize=N/A time=00:00:00.37 bitrate=N/A
 speed=0.142x
 video:5kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 Input file #0 (corrupted_FFV1.mkv):
   Input stream #0:0 (video): 9 packets read (72902577 bytes); 9 frames
 decoded;
   Total: 9 packets (72902577 bytes) demuxed
 Output file #0 (pipe:):
   Output stream #0:0 (video): 9 frames encoded; 9 packets muxed (4824
 bytes);
   Total: 9 packets (4824 bytes) muxed
 9 frames successfully decoded, 0 decoding errors
 [AVIOContext @ 0x7ff9e1f00700] Statistics: 80678594 bytes read, 1 seeks
 }}}

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


More information about the FFmpeg-trac mailing list