Changes between Version 17 and Version 18 of Encode/FFV1


Ignore:
Timestamp:
Feb 24, 2024, 7:17:17 AM (2 years ago)
Author:
Mingye Wang
Comment:

move archival use to under table

Legend:

Unmodified
Added
Removed
Modified
  • Encode/FFV1

    v17 v18  
    33FFV1 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".
    44
    5 There are two versions of the codec supported by `ffmpeg`, version 1 and 3.
     5There are two versions of the codec supported by `ffmpeg`, version 1 and 3. 
    66
    77== FFV1 version 1 ==
     
    1111|| Coder    || `-coder`          || 0, 1, 2        || 0=Golomb Rice, 1=Range Coder, 2=Range Coder (with custom state transition table) ||
    1212|| 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
     15FFV1 version 1 is in every way inferior to version 3; only use it for backward compatibility.
     16
     17For archival use, GOP-size should be "1". Doing so increases error resilience (frames are lost independently) at the cost of compression ratio.
    1418
    1519=== Examples ===
     
    3741|| Coder                      || `-coder`          || 0, 1, 2        || 0=Golomb-Rice, 1=Range Coder, 2=Range Coder (with custom state transition table) ||
    3842|| 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. ||
    4044|| Version                    || `-level`          || 1, 3           || Select which FFV1 version to use. ||
    4145|| 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. ||
     
    4448|| 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)]. ||
    4549|| 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
     51For 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.
    4655
    4756=== Examples ===
     
    110119== External links ==
    111120
    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).