Changes between Version 17 and Version 18 of Encode/FFV1
- Timestamp:
- Feb 24, 2024, 7:17:17 AM (2 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Encode/FFV1
v17 v18 3 3 FFV1 is a video codec developed within FFmpeg. It is lossless, meaning that it compresses video without introducing quantization degradations. Therefore, FFV1 is a good choice for [https://www.loc.gov/preservation/digital/formats/fdd/fdd000341.shtml archiving and preservation]. A [http://compression.ru/video/codec_comparison/lossless_codecs_2007_en.html lossless codec comparison] found FFV1 to be the "most balanced", offering "relatively good speed and high compression". 4 4 5 There are two versions of the codec supported by `ffmpeg`, version 1 and 3. 5 There are two versions of the codec supported by `ffmpeg`, version 1 and 3. 6 6 7 7 == FFV1 version 1 == … … 11 11 || Coder || `-coder` || 0, 1, 2 || 0=Golomb Rice, 1=Range Coder, 2=Range Coder (with custom state transition table) || 12 12 || Context || `-context` || 0, 1 || 0=small, 1=large || 13 || GOP size || `-g` || integer >= 1 || For archival use, GOP-size should be "1". Doing so increases error resilience at the cost of compression ratio. || 13 || GOP size || `-g` || integer >= 1 || Reuse context model within a group of frames to improve compression.|| 14 15 FFV1 version 1 is in every way inferior to version 3; only use it for backward compatibility. 16 17 For archival use, GOP-size should be "1". Doing so increases error resilience (frames are lost independently) at the cost of compression ratio. 14 18 15 19 === Examples === … … 37 41 || Coder || `-coder` || 0, 1, 2 || 0=Golomb-Rice, 1=Range Coder, 2=Range Coder (with custom state transition table) || 38 42 || Context || `-context` || 0, 1 || 0=small, 1=large || 39 || GOP size || `-g` || integer >= 1 || For archival use, GOP-size should be "1". The compression gain from larger GOP size is lower compared with version 1. ||43 || GOP size || `-g` || integer >= 1 || Reuse context model within a group of frames to improve compression. || 40 44 || Version || `-level` || 1, 3 || Select which FFV1 version to use. || 41 45 || Threads || `-threads` || integer >= 1 || The number of threads to use while processing. Adjust this to match how many of your available CPU cores you want to use. || … … 44 48 || Multi-pass encoding || `-pass` || 1, 2 || 1=1st pass, 2=2nd pass. FFV1.3 is able to be encoded in multiple passes, to increase compression efficiency. It requires encoding the file twice, though: The 1st pass is to analyze the video source data and logging the results, and the 2nd pass uses this previously gathered information to achieve a higher compression ratio. More information about multi-pass encoding can be read up in the [http://en.wikipedia.org/wiki/Variable_bitrate#Multi-pass_encoding_and_single-pass_encoding Wikipedia article about "Variable bitrate" (VBR)]. || 45 49 || Multi-pass logfile || `-passlogfile` || a filename prefix || This is the prefix of the logfile used for storing the information gathered during previous passes in multi-pass encoding mode. Additional info about passlogfile can be found in [http://ffmpeg.org/ffmpeg.html#Video-Options FFmpeg's documentation about video options]. || 50 51 For archival use: 52 * GOP-size should be "1". Doing so increases error resilience (frames are lost independently) at the cost of compression ratio. 53 * CRC should be enabled. 54 * Multi-pass, if temporary disk space allows, may be used to recoup the compression ratio loss from GOP=1. 46 55 47 56 === Examples === … … 110 119 == External links == 111 120 112 * [http://download.das-werkstatt.com/pb/mthk/ffv1_stats/latest/ ffv1_stats], a comparison of file sizes by FFV1 version, slice count, and GOP size. First set compares GOP=1 against GOP=300. Second set compares raw against GOP=1. (The actual column names encode a lot more information: for example, v3c11s30crc1p2 is probably short for `-level 3 -coder 1 -context 1 -slices 30 -slicecrc 1`, two passes.) 121 * [http://download.das-werkstatt.com/pb/mthk/ffv1_stats/latest/ ffv1_stats], a comparison of file sizes by FFV1 version, slice count, and GOP size. 122 * First set compares GOP=1 against GOP=300. Second set compares raw against GOP=1. (The actual column names encode a lot more information: for example, v3c11s30crc1p2 is probably short for `-level 3 -coder 1 -context 1 -slices 30 -slicecrc 1`, two passes.) 123 * The results suggest that intra-prediction works better when the slices is smaller (i.e. higher slice count, smaller input video).
