Hi all, I'm trying to losslessly convert some videos from grassvalley hqx to ffv1. Unfortunately it seems the conversion is not really lossless, as the frames md5 changes after the conversion. Here's what I'm doing:
- Calculate md5 of the original video frames $ ffmpeg -i 01.avi -f framemd5 orig.framemd5 ffmpeg version N-51066-ge52070e89c-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg libavutil 56. 36.101 / 56. 36.101 libavcodec 58. 65.100 / 58. 65.100 libavformat 58. 35.101 / 58. 35.101 libavdevice 58. 9.101 / 58. 9.101 libavfilter 7. 68.100 / 7. 68.100 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 Input #0, avi, from '01.avi': Duration: 00:15:04.40, start: 0.000000, bitrate: 202751 kb/s Stream #0:0: Video: hqx (CHQX / 0x58514843), yuv422p16le(10 bpc, progressive), 1632x1200 [SAR 1:1 DAR 34:25], 202756 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (hqx (native) -> rawvideo (native)) Press [q] to stop, [?] for help Output #0, framemd5, to 'orig.framemd5': Metadata: encoder : Lavf58.35.101 Stream #0:0: Video: rawvideo (Y3[10][16] / 0x100A3359), yuv422p16le(10 bpc), 1632x1200 [SAR 1:1 DAR 34:25], q=2-31, 1566720 kb/s, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc58.65.100 rawvideo frame=22610 fps= 50 q=-0.0 Lsize= 1767kB time=00:15:04.40 bitrate= 16.0kbits/s speed=1.98x video:172966500kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown - Convert $ ffmpeg -i 01.avi -c:v ffv1 01ffv1.mkv ffmpeg version N-51066-ge52070e89c-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg libavutil 56. 36.101 / 56. 36.101 libavcodec 58. 65.100 / 58. 65.100 libavformat 58. 35.101 / 58. 35.101 libavdevice 58. 9.101 / 58. 9.101 libavfilter 7. 68.100 / 7. 68.100 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 Input #0, avi, from '01.avi': Duration: 00:15:04.40, start: 0.000000, bitrate: 202751 kb/s Stream #0:0: Video: hqx (CHQX / 0x58514843), yuv422p16le(10 bpc, progressive), 1632x1200 [SAR 1:1 DAR 34:25], 202756 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (hqx (native) -> ffv1 (native)) Press [q] to stop, [?] for help [ffv1 @ 0x6e1ce80] bits_per_raw_sample > 8, forcing range coder Output #0, matroska, to '01ffv1.mkv': Metadata: encoder : Lavf58.35.101 Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p16le(10 bpc), 1632x1200 [SAR 1:1 DAR 34:25], q=2-31, 200 kb/s, 25 fps, 1k tbn, 25 tbc Metadata: encoder : Lavc58.65.100 ffv1 frame=22610 fps= 17 q=-0.0 Lsize=35631195kB time=00:15:04.36 bitrate=322759.1kbits/s speed=0.691x video:35630872kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000908% - Calculate md5 of the converted frames (I've stopped it after a few hundred frames, just to check the beginning) $ ffmpeg -i 01ffv1.mkv -f framemd5 converted.framemd5 ffmpeg version N-51066-ge52070e89c-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg libavutil 56. 36.101 / 56. 36.101 libavcodec 58. 65.100 / 58. 65.100 libavformat 58. 35.101 / 58. 35.101 libavdevice 58. 9.101 / 58. 9.101 libavfilter 7. 68.100 / 7. 68.100 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 Input #0, matroska,webm, from '01ffv1.mkv': Metadata: ENCODER : Lavf58.35.101 Duration: 00:15:04.40, start: 0.000000, bitrate: 322745 kb/s Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p10le, 1632x1200, SAR 1:1 DAR 34:25, 25 fps, 25 tbr, 1k tbn, 1k tbc (default) Metadata: ENCODER : Lavc58.65.100 ffv1 DURATION : 00:15:04.400000000 Stream mapping: Stream #0:0 -> #0:0 (ffv1 (native) -> rawvideo (native)) Press [q] to stop, [?] for help Output #0, framemd5, to 'converted.framemd5': Metadata: encoder : Lavf58.35.101 Stream #0:0: Video: rawvideo (Y3[10][10] / 0xA0A3359), yuv422p10le, 1632x1200 [SAR 1:1 DAR 34:25], q=2-31, 979200 kb/s, 25 fps, 25 tbn, 25 tbc (default) Metadata: DURATION : 00:15:04.400000000 encoder : Lavc58.65.100 rawvideo frame= 406 fps= 31 q=-0.0 Lsize= 32kB time=00:00:16.24 bitrate= 16.1kbits/s speed=1.23x video:3105900kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown - Compare hashes orig.framemd5: #format: frame checksums #version: 2 #hash: MD5 #software: Lavf58.35.101 #tb 0: 1/25 #media_type 0: video #codec_id 0: rawvideo #dimensions 0: 1632x1200 #sar 0: 1/1 #stream#, dts, pts, duration, size, hash 0, 0, 0, 1, 7833600, 39d64300c8b749b0776423a80746d8dc 0, 1, 1, 1, 7833600, 12e7317d49727740187d2e23439d87d8 0, 2, 2, 1, 7833600, 12e7317d49727740187d2e23439d87d8 0, 3, 3, 1, 7833600, 0b3b0136b008ec9d67e900595be0c923 0, 4, 4, 1, 7833600, 97cd9b7689d1f49d1e1988a3613ffa72 0, 5, 5, 1, 7833600, 97cd9b7689d1f49d1e1988a3613ffa72 0, 6, 6, 1, 7833600, 1632e4b3ba7dc28e9dde698f3b7ec9e7 0, 7, 7, 1, 7833600, 796bda137d768f4ad31eb7166ea16447 0, 8, 8, 1, 7833600, 796bda137d768f4ad31eb7166ea16447 0, 9, 9, 1, 7833600, 612c13b4824bd427faa51efa7a09660d ... converted.framemd5: #format: frame checksums #version: 2 #hash: MD5 #software: Lavf58.35.101 #tb 0: 1/25 #media_type 0: video #codec_id 0: rawvideo #dimensions 0: 1632x1200 #sar 0: 1/1 #stream#, dts, pts, duration, size, hash 0, 0, 0, 1, 7833600, 3ed693fc02ba36cca92a2153afa960ac 0, 1, 1, 1, 7833600, 23d7482899eb8c854b26444dcdf38db4 0, 2, 2, 1, 7833600, 23d7482899eb8c854b26444dcdf38db4 0, 3, 3, 1, 7833600, 1fc392823ebc14001ee0e44c68d710e6 0, 4, 4, 1, 7833600, d63335f1c34132680e571549da51eac7 0, 5, 5, 1, 7833600, d63335f1c34132680e571549da51eac7 0, 6, 6, 1, 7833600, 09304bca4578458c353ecc119de0bd87 0, 7, 7, 1, 7833600, 0ec1e49008d1f70385dc4a1636559a30 0, 8, 8, 1, 7833600, 0ec1e49008d1f70385dc4a1636559a30 0, 9, 9, 1, 7833600, 78b22236d03517e5ceea3bd390ac2d0b ... Any idea of why this is happening? _______________________________________________ ffmpeg-user mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
