Sustainability of Digital Formats: Planning for Library of Congress Collections

Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact
Format Description Categories >> Browse Alphabetical List

FF Video Codec 1

>> Back
Table of Contents
Format Description Properties Explanation of format description terms

Identification and description Explanation of format description terms

Full name FF Video Codec 1
Description FFV1 is a lossless intra-frame codec from the FFmpeg project and its current leader Michael Niedermayer. According to its website, FFmpeg is "a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec - the leading audio/video codec library."1 Niedermayer's specification states that FFV1 is a "simple and efficient lossless intra only codec," meaning that the compression is applied within each frame as opposed to inter-frame compression which is applied over groups of frames. The FFV1 Wikipedia article, consulted May 7, 2012, reports that FFV1 uses "either variable length coding or arithmetic coding for entropy coding."2
Production phase Middle state, used for storage or archiving
Relationship to other formats
    Used by AVI_FFV1, AVI File Format with FFV1 video encoding
    Used by Matroska_FFV1, Matroska File Format with FFV1 video encoding

Local use Explanation of format description terms

LC experience or existing holdings None
LC preference  

Sustainability factors Explanation of format description terms

Disclosure As of this writing (May, 2012) documentation is still in process. Developed as an open source project; see history section of the Notes below which also reports on the CELLAR IETF standardization project launched in 2015.
    Documentation Published online at Niedermayer's March 2010 GitHub commit note indicates that the codec is no longer "experimental." Nevertheless, the FFV1 Wikipedia article, consulted on May 7, 2012, reports that the "bitstream is [now] fixed, but documentation remains incomplete... [S]tarting April 2012, efforts are being undertaken in order to improve its documentation."

Modest adoption in heritage repositories. The Austrian Mediathek uses FFV1 encoding wrapped in AVI for their preservation masters. Information about their use of FFV1 can be found here. The City of Vancouver Archives uses FFV1 encoding wrapped in the Matroska container, as discussed briefly on the archives' blog. Archivematica - "a free and open-source digital preservation system that is designed to maintain standards-based, long-term access to collections of digital objects" - lists FFV1 (wrapped in the Matroska container with LPCM audio) as one of its "preservation formats" here

Adoption is expected to increase thanks to several outcomes of the European Union-based PREFORMA project, including IETF-sponsored format specification standardization through the CELLAR project and the open source MediaConch toolset, an implementation checker, policy checker, reporter, and fixer for FFV1, Matroska and LPCM.

    Licensing and patents The specification carries this notice: "Copyright 2003-2012 Michael Niedermayer" and also states that "this text can be used under the GNU Free Documentation License or GNU General Public License."
Transparency Depends upon algorithms and tools to read; will require sophistication to build tools.
Self-documentation Section 4 of the specification indicates that the types of technical metadata required to read and play the file are provided in frame headers. Additional metadata, if any, would be carried by the wrapper format. Comments Welcome
External dependencies None
Technical protection considerations Not provided by the bitstream encoding. Technical protections, if any, would be provided by the wrapper format.

Quality and functionality factors Explanation of format description terms

Moving Image
Normal rendering Supported
Clarity (high image resolution) Lossless compression that retains all of the video picture information presented to the encoder. Comments Welcome
Functionality beyond normal rendering One specialist in the field reports that "version 1.3 of FFV1, currently marked as an experimental encoder, adds a mandatory CRC checksum to each frame header."

File type signifiers and format identifiers Explanation of format description terms

Tag Value Note
Microsoft FOURCC FFV1

Notes Explanation of format description terms


The Wikipedia FFmpeg article, consulted May 7, 2012, reports that the FFmpeg project "was started by Fabrice Bellard (using the pseudonym "Gerard Lantau") and has been maintained by Michael Niedermayer since 2004. . . . The name of the project comes from the MPEG video standards group, together with 'FF' for 'fast forward.'" Niedermayer's Web page states that an FFV1 encoder and decoder have been part of the FFmpeg library since 2003. Incidentally, the section of the specification devoted to frame header metadata includes the tag "version" with possible values of "0" or "1."

The "V" in FFV1 stands for "Video Codec," not "version." The stable Version 1 (FFV1.1) was released in April 2006. Version 2 (FFV1.2) was an intermediate version, never officially released and was not be used for production purposes. Version 3 (FFV1.3) was officially released for production usage on August 26, 2013.

An offshoot of the European-based PREFORMA project, which aims "to address the challenge of implementing good quality standardised file formats for preserving data content in the long term," Codec Encoding for LossLess Archiving and Realtime transmission (cellar) is an IETF-approved project to standardize FFV1, Matroska, and FLAC.

Format specifications Explanation of format description terms

Useful references


1According to the Wikipedia libavcodec article, consulted on May 7, 2012, the name refers to "a free software/open source LGPL-licensed library of codecs for encoding and decoding video and audio data. Same name but incompatible libraries are provided from both FFmpeg project and Libav project."

2According to the Wikipedia Entropy (information theory) article, consulted on May 7, 2012, entropy encoding "creates and assigns a unique prefix-free code to each unique symbol that occurs in the input. These entropy encoders then compress data by replacing each fixed-length input symbol by the corresponding variable-length prefix-free output codeword. The length of each codeword is approximately proportional to the negative logarithm of the probability. Therefore, the most common symbols use the shortest codes."

Last Updated: 08/04/2021