Opened 3 years ago

Last modified 3 months ago

#2866 open enhancement

support --verify option for lossless encoding to decode the output in parallel to compare to original

Reported by: dericed Owned by:
Priority: wish Component: ffmpeg
Version: git-master Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the enhancement request:

The FLAC utility has an option called --verify

   ENCODING OPTIONS
       -V, --verify
              Verify a correct encoding by decoding the output in parallel and comparing to the original

This is an option for the paranoid, but is very helpful in lossless encoding for digital preservation, especially when the original data is considered for disposal after encoding to a lossless derivative.

How to reproduce:

I use FFmpeg to convert uncompressed video into lossless video in ffv1. Currently I do this with two passes:

  • pass 1 encode the source video to both an ffv1 output and framemd5 output
  • pass 2 encode the ffv1 output to a new framemd5 output
  • make sure the two framemd5 outputs are identical

Almost every time the two framemd5s match but on very (very) rare instance they differ. This happened to me recently.

For pass 1 (decode source and encode to ffv1 and framemd5) I ran:

ffmpeg -v warning -stats -vsync 0 -i "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257.mov" -map 0:v -map 0:a -c:v ffv1 -vf "setfield=bff" -g 1 -c:a copy "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov" -f framemd5 -an "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257.framemd5"
ffmpeg version 1.1.git Copyright (c) 2000-2013 the FFmpeg developers

For pass 2 (decode ffv1 from pass 1 and encode that to framemd5) I ran:

ffmpeg -v warning -stats -i "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov" -f framemd5 -pix_fmt uyvy422 -an "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257_ffv1.framemd5"

Full logs for both commands below.

The resulting framemd5s, when diff'ed, had one line of difference. I looked up the corresponding frame in the ffv1 output and it had the rainbow error effect that you'd normally see in corrupted ffv1. I extracted a few frames surrounding the error and uploaded it here: http://dericed.com/samples/SXL00257_glitch.mov. Unfortunately this error isn't easily recreated but a rare occurrence.

Finding this glitch validated the two pass process, since the output of the first pass that encoded the ffv1 didn't provide a clue that the output was not lossless but had an error introduced. This reminded me of the --verify option in the FLAC utility. Is a --verify option feasible in ffmpeg when a level of paranoia is needed to validate the output.

PASS 1

ffmpeg started on 2013-08-12 at 19:53:59
Report written to "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/ffmpeg_20130812-195359_makelossless.log"
Command line:
ffmpeg -v warning -stats -vsync 0 -i "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257.mov" -map 0:v -map 0:a -c:v ffv1 -vf "setfield=bff" -g 1 -c:a copy "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov" -f framemd5 -an "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257.framemd5"
ffmpeg version 1.1.git Copyright (c) 2000-2013 the FFmpeg developers
  built on Apr 11 2013 20:28:02 with gcc 4.2.1 (GCC) (Apple Inc. build 5666) (dot 3)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=/usr/bin/gcc-4.2 --host-cflags='-Os -w -pipe -march=core2 -msse4.1 -mmacosx-version-min=10.6' --host-ldflags='-L/usr/local/opt/gettext/lib -L/usr/local/lib -F/usr/local/Frameworks -L/usr/X11/lib' --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libfreetype --enable-ffplay --enable-libcaca --enable-libopenjpeg --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.1/include/openjpeg-1.5 '
  libavutil      52. 26.100 / 52. 26.100
  libavcodec     55.  2.100 / 55.  2.100
  libavformat    55.  2.100 / 55.  2.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 53.101 /  3. 53.101
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'warning'.
Reading option '-stats' ... matched as option 'stats' (print progress report during encoding) with argument '1'.
Reading option '-vsync' ... matched as option 'vsync' (video sync method) with argument '0'.
Reading option '-i' ... matched as input file with argument '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257.mov'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:v'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:a'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'ffv1'.
Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'setfield=bff'.
Reading option '-g' ... matched as AVOption 'g' with argument '1'.
Reading option '-c:a' ... matched as option 'c' (codec name) with argument 'copy'.
Reading option '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov' ... matched as output file.
Reading option '-f' ... matched as option 'f' (force format) with argument 'framemd5'.
Reading option '-an' ... matched as option 'an' (disable audio) with argument '1'.
Reading option '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257.framemd5' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument warning.
Applying option stats (print progress report during encoding) with argument 1.
Applying option vsync (video sync method) with argument 0.
Successfully parsed a group of options.
Parsing a group of options: input file /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257.mov.
Successfully parsed a group of options.
Opening an input file: /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257.mov.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] File position before avformat_find_stream_info() is 111514611976
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] Probe buffer size limit of 5000000 bytes reached
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] Stream #1: not enough frames to estimate rate; consider increasing probesize
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] Stream #2: not enough frames to estimate rate; consider increasing probesize
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] Stream #3: not enough frames to estimate rate; consider increasing probesize
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] Stream #4: not enough frames to estimate rate; consider increasing probesize
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] Stream #5: not enough frames to estimate rate; consider increasing probesize
rfps: 27.916667 0.018776
rfps: 28.000000 0.017283
rfps: 28.083333 0.015852
rfps: 28.166667 0.014482
rfps: 28.250000 0.013175
rfps: 28.333333 0.011929
rfps: 28.416667 0.010745
rfps: 28.500000 0.009623
rfps: 28.583333 0.008563
rfps: 28.666667 0.007565
rfps: 28.750000 0.006628
rfps: 28.833333 0.005754
rfps: 28.916667 0.004941
rfps: 29.000000 0.004190
rfps: 29.083333 0.003501
rfps: 29.166667 0.002874
rfps: 29.250000 0.002309
rfps: 29.333333 0.001805
rfps: 29.416667 0.001364
rfps: 29.500000 0.000984
rfps: 29.583333 0.000666
rfps: 29.666667 0.000410
rfps: 29.750000 0.000216
rfps: 29.833333 0.000083
rfps: 29.916667 0.000013
rfps: 30.000000 0.000004
rfps: 30.083333 0.000057
rfps: 30.166667 0.000172
rfps: 30.250000 0.000349
rfps: 30.333333 0.000588
rfps: 30.416667 0.000888
rfps: 30.500000 0.001251
rfps: 30.583333 0.001675
rfps: 30.666667 0.002161
rfps: 30.750000 0.002709
rfps: 30.833333 0.003319
rfps: 30.916667 0.003991
rfps: 31.000000 0.004725
rfps: 31.083333 0.005520
rfps: 31.166667 0.006377
rfps: 31.250000 0.007296
rfps: 31.333333 0.008277
rfps: 31.416667 0.009320
rfps: 31.500000 0.010425
rfps: 31.583333 0.011591
rfps: 31.666667 0.012820
rfps: 31.750000 0.014110
rfps: 31.833333 0.015462
rfps: 31.916667 0.016876
rfps: 32.000000 0.018352
rfps: 32.083333 0.019889
rfps: 57.833333 0.019764
rfps: 57.916667 0.018231
rfps: 58.000000 0.016761
rfps: 58.083333 0.015352
rfps: 58.166667 0.014004
rfps: 58.250000 0.012719
rfps: 58.333333 0.011496
rfps: 58.416667 0.010334
rfps: 58.500000 0.009234
rfps: 58.583333 0.008197
rfps: 58.666667 0.007221
rfps: 58.750000 0.006306
rfps: 58.833333 0.005454
rfps: 58.916667 0.004664
rfps: 59.000000 0.003935
rfps: 59.083333 0.003268
rfps: 59.166667 0.002663
rfps: 59.250000 0.002120
rfps: 59.333333 0.001639
rfps: 59.416667 0.001220
rfps: 59.500000 0.000862
rfps: 59.583333 0.000567
rfps: 59.666667 0.000333
rfps: 59.750000 0.000161
rfps: 59.833333 0.000051
rfps: 59.916667 0.000002
rfps: 60.000000 0.000016
rfps: 29.970030 0.000000
rfps: 59.940060 0.000000
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] File position after avformat_find_stream_info() is 5602816
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257.mov':
  Metadata:
    creation_time   : 2013-08-12 15:42:07
    timecode        : 00:02:01;27
  Duration: 01:26:13.04, start: 0.200875, bitrate: 172455 kb/s
    Stream #0:0(eng), 8, 1/2997: Video: rawvideo (2vuy / 0x79757632), uyvy422, 720x486, 167790 kb/s, 29.97 fps, 29.97 tbr, 2997 tbn, 2997 tbc
    Metadata:
      creation_time   : 2013-08-12 17:08:26
      handler_name    : Apple Alias Data Handler
      timecode        : 00:02:01;27
    Stream #0:1(eng), 0, 1/2997: Subtitle: eia_608 (c608 / 0x38303663)
    Metadata:
      creation_time   : 2013-08-12 17:08:26
      handler_name    : Apple Alias Data Handler
    Stream #0:2(eng), 0, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32, 2304 kb/s
    Metadata:
      creation_time   : 2013-08-12 17:08:27
      handler_name    : Apple Alias Data Handler
    Stream #0:3(eng), 0, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-12 17:08:27
      handler_name    : Apple Alias Data Handler
    Stream #0:4(eng), 0, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-12 17:08:27
      handler_name    : Apple Alias Data Handler
    Stream #0:5(eng), 0, 1/2997: Data: none (tmcd / 0x64636D74)
    Metadata:
      creation_time   : 2013-08-12 17:08:27
      handler_name    : Apple Alias Data Handler
      timecode        : 00:02:01;27
Successfully opened the file.
Parsing a group of options: output file /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov.
Applying option map (set input stream mapping) with argument 0:v.
Applying option map (set input stream mapping) with argument 0:a.
Applying option c:v (codec name) with argument ffv1.
Applying option vf (set video filters) with argument setfield=bff.
Applying option c:a (codec name) with argument copy.
Successfully parsed a group of options.
Opening an output file: /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov.
Successfully opened the file.
Parsing a group of options: output file /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257.framemd5.
Applying option f (force format) with argument framemd5.
Applying option an (disable audio) with argument 1.
Successfully parsed a group of options.
Opening an output file: /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257.framemd5.
Successfully opened the file.
[Parsed_setfield_0 @ 0x101714a20] Setting 'mode' to value 'bff'
[buffer @ 0x101714e40] Setting 'video_size' to value '720x486'
[buffer @ 0x101714e40] Setting 'pix_fmt' to value '17'
[buffer @ 0x101714e40] Setting 'time_base' to value '1/2997'
[buffer @ 0x101714e40] Setting 'pixel_aspect' to value '0/1'
[buffer @ 0x101714e40] Setting 'sws_param' to value 'flags=2'
[buffer @ 0x101714e40] Setting 'frame_rate' to value '30000/1001'
[graph 0 input from stream 0:0 @ 0x101714f20] w:720 h:486 pixfmt:uyvy422 tb:1/2997 fr:30000/1001 sar:0/1 sws_param:flags=2
[format @ 0x10171a980] compat: called with args=[yuv420p|yuva420p|yuva422p|yuv444p|yuva444p|yuv440p|yuv422p|yuv411p|yuv410p|bgr0|bgra|yuv420p16le|yuv422p16le|yuv444p16le|yuv444p9le|yuv422p9le|yuv420p9le|yuv420p10le|yuv422p10le|yuv444p10le|gray16le|gray|gbrp9le|gbrp10le|gbrp12le|gbrp14le]
[format @ 0x10171a980] Setting 'pix_fmts' to value 'yuv420p|yuva420p|yuva422p|yuv444p|yuva444p|yuv440p|yuv422p|yuv411p|yuv410p|bgr0|bgra|yuv420p16le|yuv422p16le|yuv444p16le|yuv444p9le|yuv422p9le|yuv420p9le|yuv420p10le|yuv422p10le|yuv444p10le|gray16le|gray|gbrp9le|gbrp10le|gbrp12le|gbrp14le'
[scale @ 0x10171ad60] Setting 'w' to value '0'
[scale @ 0x10171ad60] Setting 'h' to value '0'
[scale @ 0x10171ad60] Setting 'flags' to value '0x4'
[auto-inserted scaler 0 @ 0x10171ad00] w:0 h:0 flags:'0x4' interl:0
[format @ 0x10171a980] auto-inserting filter 'auto-inserted scaler 0' between the filter 'Parsed_setfield_0' and the filter 'format'
[AVFilterGraph @ 0x101714d60] query_formats: 4 queried, 3 merged, 1 already done, 0 delayed
[auto-inserted scaler 0 @ 0x10171ad00] picking yuv422p out of 26 ref:uyvy422 alpha:0
[auto-inserted scaler 0 @ 0x10171ad00] w:720 h:486 fmt:uyvy422 sar:0/1 -> w:720 h:486 fmt:yuv422p sar:0/1 flags:0x4
[buffer @ 0x10171b480] Setting 'video_size' to value '720x486'
[buffer @ 0x10171b480] Setting 'pix_fmt' to value '17'
[buffer @ 0x10171b480] Setting 'time_base' to value '1/2997'
[buffer @ 0x10171b480] Setting 'pixel_aspect' to value '0/1'
[buffer @ 0x10171b480] Setting 'sws_param' to value 'flags=2'
[buffer @ 0x10171b480] Setting 'frame_rate' to value '30000/1001'
[graph 1 input from stream 0:0 @ 0x10171b420] w:720 h:486 pixfmt:uyvy422 tb:1/2997 fr:30000/1001 sar:0/1 sws_param:flags=2
[AVFilterGraph @ 0x10171aca0] query_formats: 3 queried, 2 merged, 0 already done, 0 delayed
[ffv1 @ 0x10186f200] detected 8 logical cores
[mov @ 0x10186ec00] Using MS style video codec tag, the file may be unplayable!
Output #0, mov, to '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov':
  Metadata:
    timecode        : 00:02:01;27
    encoder         : Lavf55.2.100
    Stream #0:0(eng), 0, 1/30000: Video: ffv1, yuv422p, 720x486, q=2-31, 200 kb/s, 30k tbn, 29.97 tbc
    Metadata:
      creation_time   : 2013-08-12 17:08:26
      handler_name    : Apple Alias Data Handler
      timecode        : 00:02:01;27
    Stream #0:1(eng), 0, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, 2304 kb/s
    Metadata:
      creation_time   : 2013-08-12 17:08:27
      handler_name    : Apple Alias Data Handler
    Stream #0:2(eng), 0, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-12 17:08:27
      handler_name    : Apple Alias Data Handler
    Stream #0:3(eng), 0, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, 1152 kb/s
    Metadata:
      creation_time   : 2013-08-12 17:08:27
      handler_name    : Apple Alias Data Handler
Output #1, framemd5, to '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257.framemd5':
  Metadata:
    timecode        : 00:02:01;27
    encoder         : Lavf55.2.100
    Stream #1:0(eng), 0, 1001/30000: Video: rawvideo (UYVY / 0x59565955), uyvy422, 720x486, q=2-31, 200 kb/s, 29.97 tbn, 29.97 tbc
    Metadata:
      creation_time   : 2013-08-12 17:08:26
      handler_name    : Apple Alias Data Handler
      timecode        : 00:02:01;27
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo -> ffv1)
  Stream #0:2 -> #0:1 (copy)
  Stream #0:3 -> #0:2 (copy)
  Stream #0:4 -> #0:3 (copy)
  Stream #0:0 -> #1:0 (rawvideo -> rawvideo)
Press [q] to stop, [?] for help
[output stream 0:0 @ 0x101715040] EOF on sink link output stream 0:0:default.
[output stream 1:0 @ 0x10171b680] EOF on sink link output stream 1:0:default.
No more output streams to write to, finishing.

video:137649146kB audio:2910355kB subtitle:0 global headers:0kB muxing overhead -75.389308%
155062 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x101717a00] Statistics: 152 seeks, 1808514 writeouts
[AVIOContext @ 0x10171a160] Statistics: 0 seeks, 155063 writeouts
[AVIOContext @ 0x101715180] Statistics: 124223834025 bytes read, 633585 seeks

PASS 2

ffmpeg started on 2013-08-12 at 23:30:34
Report written to "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/ffmpeg_20130812-233034_makelossless.log"
Command line:
ffmpeg -v warning -stats -i "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov" -f framemd5 -pix_fmt uyvy422 -an "/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257_ffv1.framemd5"
ffmpeg version 1.1.git Copyright (c) 2000-2013 the FFmpeg developers
  built on Apr 11 2013 20:28:02 with gcc 4.2.1 (GCC) (Apple Inc. build 5666) (dot 3)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=/usr/bin/gcc-4.2 --host-cflags='-Os -w -pipe -march=core2 -msse4.1 -mmacosx-version-min=10.6' --host-ldflags='-L/usr/local/opt/gettext/lib -L/usr/local/lib -F/usr/local/Frameworks -L/usr/X11/lib' --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libfreetype --enable-ffplay --enable-libcaca --enable-libopenjpeg --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.1/include/openjpeg-1.5 '
  libavutil      52. 26.100 / 52. 26.100
  libavcodec     55.  2.100 / 55.  2.100
  libavformat    55.  2.100 / 55.  2.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 53.101 /  3. 53.101
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'warning'.
Reading option '-stats' ... matched as option 'stats' (print progress report during encoding) with argument '1'.
Reading option '-i' ... matched as input file with argument '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'framemd5'.
Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel format) with argument 'uyvy422'.
Reading option '-an' ... matched as option 'an' (disable audio) with argument '1'.
Reading option '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257_ffv1.framemd5' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument warning.
Applying option stats (print progress report during encoding) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input file /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov.
Successfully parsed a group of options.
Opening an input file: /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] ISO: File Type Major Brand: qt  
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] File position before avformat_find_stream_info() is 35422889919
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x10180f600] File position after avformat_find_stream_info() is 3779393
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/objects/SXL00257_ffv1.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf55.2.100
  Duration: 01:26:14.00, start: 0.000000, bitrate: 54770 kb/s
    Stream #0:0(eng), 21, 1/30000: Video: ffv1 (FFV1 / 0x31564646), yuv422p, 720x486, 50149 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 30k tbc
    Metadata:
      handler_name    : DataHandler
      timecode        : 00:02:01;27
    Stream #0:1(eng), 33, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32, 2304 kb/s
    Metadata:
      handler_name    : DataHandler
    Stream #0:2(eng), 33, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      handler_name    : DataHandler
    Stream #0:3(eng), 33, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      handler_name    : DataHandler
    Stream #0:4(eng), 1, 1/30000: Data: none (tmcd / 0x64636D74)
    Metadata:
      handler_name    : DataHandler
      timecode        : 00:02:01;27
Successfully opened the file.
Parsing a group of options: output file /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257_ffv1.framemd5.
Applying option f (force format) with argument framemd5.
Applying option pix_fmt (set pixel format) with argument uyvy422.
Applying option an (disable audio) with argument 1.
Successfully parsed a group of options.
Opening an output file: /Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257_ffv1.framemd5.
Successfully opened the file.
[buffer @ 0x1017148a0] Setting 'video_size' to value '720x486'
[buffer @ 0x1017148a0] Setting 'pix_fmt' to value '4'
[buffer @ 0x1017148a0] Setting 'time_base' to value '1/30000'
[buffer @ 0x1017148a0] Setting 'pixel_aspect' to value '0/1'
[buffer @ 0x1017148a0] Setting 'sws_param' to value 'flags=2'
[buffer @ 0x1017148a0] Setting 'frame_rate' to value '30000/1001'
[graph 0 input from stream 0:0 @ 0x1017151e0] w:720 h:486 pixfmt:yuv422p tb:1/30000 fr:30000/1001 sar:0/1 sws_param:flags=2
[format @ 0x101716b20] compat: called with args=[uyvy422]
[format @ 0x101716b20] Setting 'pix_fmts' to value 'uyvy422'
[scale @ 0x101716ec0] Setting 'w' to value '0'
[scale @ 0x101716ec0] Setting 'h' to value '0'
[scale @ 0x101716ec0] Setting 'flags' to value '0x4'
[auto-inserted scaler 0 @ 0x101716e60] w:0 h:0 flags:'0x4' interl:0
[format @ 0x101716b20] auto-inserting filter 'auto-inserted scaler 0' between the filter 'Parsed_null_0' and the filter 'format'
[AVFilterGraph @ 0x101716580] query_formats: 4 queried, 3 merged, 1 already done, 0 delayed
[auto-inserted scaler 0 @ 0x101716e60] w:720 h:486 fmt:yuv422p sar:0/1 -> w:720 h:486 fmt:uyvy422 sar:0/1 flags:0x4
[ffv1 @ 0x101869000] detected 8 logical cores
Output #0, framemd5, to '/Volumes/Desktop-1/Capture Scratch/ATW/ATW00296/metadata/submissionDocumentation/logs/SXL00257_ffv1.framemd5':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf55.2.100
    Stream #0:0(eng), 0, 1001/30000: Video: rawvideo (UYVY / 0x59565955), uyvy422, 720x486, q=2-31, 200 kb/s, 29.97 tbn, 29.97 tbc
    Metadata:
      handler_name    : DataHandler
      timecode        : 00:02:01;27
Stream mapping:
  Stream #0:0 -> #0:0 (ffv1 -> rawvideo)
Press [q] to stop, [?] for help
[output stream 0:0 @ 0x101714a40] EOF on sink link output stream 0:0:default.
No more output streams to write to, finishing.

video:105975186kB audio:0kB subtitle:0 global headers:0kB muxing overhead -99.988569%
155062 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x1017180e0] Statistics: 0 seeks, 155063 writeouts
[AVIOContext @ 0x101714d00] Statistics: 32443801729 bytes read, 155023 seeks

Attachments (1)

SXL00257_glitch.mov (1.8 MB) - added by dericed 3 years ago.
ffv1 output with glitch (framemd5 of ffv1 output doesn't match framemd5 output of source)

Download all attachments as: .zip

Change History (5)

Changed 3 years ago by dericed

ffv1 output with glitch (framemd5 of ffv1 output doesn't match framemd5 output of source)

comment:1 Changed 3 years ago by richardpl

  • Component changed from avcodec to FFmpeg
  • Priority changed from normal to wish
  • Status changed from new to open
  • Version changed from 1.1.5 to git-master

Could you create separate report for this serious ffv1 bug, and provide way to reproduce it?

comment:2 Changed 3 years ago by dericed

Hi Richard,
I haven't been able to identify a process to reproduce it. Rerunning the exact same commands the second time provided the results I wanted. In this case the computer running ffmpeg was using storage mounted over an AFP connection to access both the input and output file. I'm not sure exactly how to force such a network error to cause this problem.
Dave

comment:3 Changed 12 months ago by kieranjol

This feature is of interest to me as our archive is already using framemd5 for fixity, and are considering using FFV1 for large video files such as RGB DPX/HD tape ingests.

comment:4 Changed 3 months ago by peter_b

This would be a valuable feature indeed. Especially, since it would make a lot of bash-scripting around the transcoding obsolete.
It would also make this framemd5-validation transcoding available to more users, since it'd be easier (and faster, too?)

It might also be great to be able to provide a framemd5 file of the source as optional argument:
This would save computing time for re-generating the framemd5 again, if it was already generated in a digitization workflow already, for example.

Note: See TracTickets for help on using tickets.