|Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact|
|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." 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."
Note: This page will be more fully updated in October 2020 to reflect the expanded adoption and specification developments including its addition as an acceptable format in the Library of Congress Recommended Formats Statement. See LC Experience.
|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|
|LC experience or existing holdings||As of this brief update in August 2020, the Motion Picture, Broadcasting and Recorded Sound Division (MBRS) has ingested 107 ffv1/mkv files. These files were received from CUNY-TV through the American Archive of Public Broadcasting and the Library will receive many more of these files through the AAPB in the coming months. This page will be more fully updated in October 2020 to reflect the expanded adoption and specification developments.|
|LC preference||FFV1 codec in the Matroska container is an 'acceptable' format in the Recommended Formats Statement for Video -- File-based but only for content without closed captions and/or timecode information. While captions are supported in Matroska, FFmpeg functionality is limited (and does not, for example, support Timed Text Markup Language or TTML).|
|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 http://www.ffmpeg.org/~michael/ffv1.html. 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|
|Technical protection considerations||Not provided by the bitstream encoding. Technical protections, if any, would be provided by the wrapper format.|
|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."|
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.
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."