Opened 11 years ago
Last modified 9 years ago
#2866 open enhancement
support --verify option for lossless encoding to decode the output in parallel to compare to original
Reported by: | dave rice | 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)
Change History (5)
by , 11 years ago
Attachment: | SXL00257_glitch.mov added |
---|
comment:1 by , 11 years ago
Component: | avcodec → FFmpeg |
---|---|
Priority: | normal → wish |
Status: | new → open |
Version: | 1.1.5 → git-master |
Could you create separate report for this serious ffv1 bug, and provide way to reproduce it?
comment:2 by , 11 years ago
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 by , 9 years ago
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 by , 9 years ago
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.
ffv1 output with glitch (framemd5 of ffv1 output doesn't match framemd5 output of source)