FFV1
Developed by | Michael Niedermayer (FFmpeg) |
---|---|
Initial release | 9 June 2003 |
Latest release |
Version 3 (FFV1.3) (3 August 2013 ) |
Type of format | Video compression format |
Contained by | AVI, MKV, MOV, NUT, etc. |
Website | FFV1 Video Codec Specification (in progress) |
FFV1, which stands for "FF video codec 1", is a lossless intra-frame video codec. It can use either variable length coding or arithmetic coding for entropy coding. The encoder and decoder are part of the free, open-source library libavcodec in the project FFmpeg since June 2003.[1] FFV1 is also included in ffdshow and LAV Filters,[2] which makes the video codec available to Microsoft Windows application that support system-wide codecs over Video for Windows (VfW) or DirectShow. FFV1 is particularly popular for its performance regarding speed and size, compared to other lossless preservation codecs, such as M-JPEG2000.[3][4][5] The European Broadcasting Union (EBU) lists FFV1 under the codec-family index "31" in their combined list of video codec references.[6]
Video archiving
For long-term preservation of digital video sustainable container formats as well as audio/video codecs are necessary. There is no consensus to date among the archival community as to which file format or codecs should be used for preservation purposes for digital video.[7] The previously proclaimed encodings were Motion JPEG 2000 (lossless)[8] and uncompressed video.[9]
FFV1 has turned out to be a viable addition to that choice and was therefore recently added as a suitable option for preservation encoding.[3][10] With compression ratios comparable to JPEG 2000 lossless and its lower computing requirements, it is already being used by professional archives as their long-term storage codec. Especially archives where the collections do not feature extensive broadcast materials but rather consist of, oral history-, ethnographic-recordings and the likes, "favored the lossless FFV1 encoding" in communications with the "Federal Agencies Digitization Guidelines Initiative" (FADGI) team.[11][12]
As of 2015, standardization of FFV1 through the Internet Engineering Task Force (IETF) is work in progress as part of the European PREFORMA Project,[13] as well as implementation of a conformance checker for FFV1/PCM in a Matroska (MKV) container.[14] Details of FFV1's standardization plan[15] have been prepared by MediaArea (authors of MediaInfo)) as part of their conformance checking tool "Media CONCH".[16]
It is also listed as a format option for long-term preservation of moving images on sites of the U.S. Library of Congress',[10][17] State Records NSW[7] and others. The Society of American Archivists has published a paper in August 2014, suggesting only FFV1 as preservation codec for video.[18]
The Digital Preservation project at the U.S. Library of Congress identified AVI and Matroska as common container formats for FFV1.[19][20]
List of institutions known to use FFV1
- Austria
- Austrian Museum of Modern Art (MuMoK): For their collection of art videos.
- Danube University Krems (Lower Austria/Niederösterreich)
- Filmarchiv Austria (Austrian Film Archive): For their telecined DigiBeta copies of some films.
- Landesmuseum Niederösterreich (State Museum of Lower Austria)[21]
- Österreichische Mediathek (Austria's national audio/video archive)[22][23]
- Australia
- Canada
- Germany
- SMIDAK Filmproduktion[28]
- Switzerland
- United Kingdom
- United States
- City University of New York Television (CUNY TV)[29]
- National Library of Medicine (Washington DC)
- University of Notre Dame Archives
- University of Texas Libraries (FFV1 in MKV for DVD preservation[30])
- Indiana University[14]
Development and improvements
The "Österreichische Mediathek" has also developed DVA-Profession[31] a Free Software solution for archive-suitable mass video digitization, mainly using FFV1 as video encoding throughout the whole workflow, without transcoding. Additionally, they have initiated the development of "FFV1.3" (=version 3 of FFV1) together with Michael Niedermayer (FFmpeg), Peter Bubestinger and Dave Rice.
FFV1.3 contains improvements and new features such as support for multi-threaded encoding/decoding, error resilience and integrity validation by CRC checksums, storing of display aspect ratio (DAR) and field order. It was tested for over 1 year,[32] and officially released stable for production in August 2013.[33]
In August 2016, support for 48bit/16bpc (=bits per component) in RGB was added.[34] Before that, 16bpc in FFV1 were only supported in YCbCr and RGB was limited to 14bpc.
Suitable as preservation codec
Within the video archiving domain, the interest in FFV1 is increasing, as can be seen in a thread on the AMIA-L mailing list,[35] the PrestoCentre Forum[36] or the Archivematica mailing list.[37][38] Companies are also picking up FFV1 support. For example, NOA (formerly "NOA Audio Solutions"), announced support for the FFV1 in their product line in July 2013[39] and KEM-Studiotechnik released a film-scanner with FFV1 output in November 2013.[40]
The owner of Flume Productions Inc. (Canada) states in a blog post:[41]
But recently, I’m getting more and more requests for ffmpeg or ffv1 codec. The lossless compression claim is very compelling along with the open source architecture. One could argue that perhaps these files will have a longer shelf life and won’t immediately fade into digital obsolescence.
In an interview for The New York Times magazine about "Tips on Archiving Family History",[42] Bertram Lyons from the U.S. Library of Congress says:
"[...] for video, there are many choices when it comes to codecs (the way the bits are encoded/decoded to represent the visual data, e.g., ffv1, H.264, Apple ProRes) [...]"
In January 2013, the possible use and adoption of FFV1 as an archiving codec was addressed in the issue of PrestoCentre's[43] AV Insider magazine:[44]
"FFV1 has many beneficial technical features [...], but adoption rates are relatively low compared with alternatives, for example JPEG2000. [...] But holding back too long only serves to self-perpetuate the status of FFV1. The adoption by Archivematica and the Austrian Mediathek with their active promotion of FFV1 along with others may start to break this vicious circle. This could lead to a virtuous circle of wider take-up, to shared development, to incorporation into commercial products and a host of other benefits for the community."
PACKED - the "Centre of Expertise in Digital Heritage" in Belgium, say in an article about video formats for archiving:[45]
"When removing the proprietary codecs from this list, only a few are left. [...] This basically leaves heritage institutions that want to use a lossless codec, with only two options: Jpeg2000 and FFV1."
In 2015, the International Federation of Television Archives (FIAT/IFTA) mentioned FFV1 explicitly in their call-for-presentations for their annual World Conference, asking "Is FFV1 the new JPEG2000"?.[46] A workshop titled "FFV1 for Preservation" is also featured.[47]
Applications supporting FFV1
Here is a list of applications known to be able to read and/or write FFV1 video files, either natively or by installing codec packages.
Entries marked with "-" means that they generally only support either encoding or decoding.
The term "built-in" means that the application can handle FFV1 without the necessity to install additional codec packages. Applications that come with FFV1 support out of the box, usually use FFmpeg's or Libav's libraries in order to do so.
The list is far from being complete, and will be augmented over time:
Application | Encoding | Decoding | Method |
---|---|---|---|
Adobe Premiere | Yes | Yes | DirectShow[48][49] |
Archivematica[50] | Yes | Yes | built-in |
AVID | Unknown | Yes | Their transcoder can handle FFV1 |
Avidemux | Yes | Yes | built-in |
Blender | Yes[51] | Yes | built-in |
DVA-Profession[52] | Yes | Yes | built-in |
ffdshow-tryouts | Yes | Yes | built-in |
FFmpeg | Yes | Yes | built-in |
Harris Broadcast Velocity | Yes | Yes | Video for Windows[48] |
kdenlive | Yes | Yes | built-in |
KEM Scan (motion picture film scanner)[40][53] | Yes | - | built-in |
LAVFilters[49] | Yes | Yes | built-in |
MediaInfo | - | Yes | built-in |
Media Lovin' Toolkit[54] | Yes | Yes | built-in |
Media Player Classic | - | Yes | built-in |
MPlayer/MEncoder | Yes | Yes | built-in |
NOA MediaButler[55] | Yes | Yes | built-in |
QUADRIGA Video[56] | Yes[57] | Unknown | Unknown |
Shotcut[58] | Yes | Yes | built-in |
Sorenson Squeeze | Unknown | Yes | built-in |
VirtualDub | Yes | Yes | Video for Windows[48] |
VLC media player | No | Yes | built-in |
Windows Media Player | Unknown | Yes | DirectShow[48][49] |
Compression details
FFV1 is not strictly an intra-frame format; despite not using inter-frame prediction, it allows the context model to adapt over multiple frames. This can be useful for compression due to the very large size of the context table, but can be disabled to force the encoder to generate a strictly intra-frame bitstream. As the gained compression seems to decrease[59] with later versions of FFV1 (version 2,3), the use of GOP size greater than "1" might disappear in the future.
Prediction process
During progressive scanning of a frame, the difference between a current pixel and its predicted value, judging by neighboring pixels, is sent to the entropy-coding process. The prediction is done as follows:
- Prediction = Median( Top, Left, Top + Left - TopLeft )
The third value, "Top + Left - TopLeft", is effectively equivalent to applying the top predictor to the current and the left sample, followed by applying the left predictor to the prediction residual of the top predictor. This method, also known as the gradient, exploits both horizontal and vertical redundancy. So in simple terms the prediction is the median of the top, left, and gradient prediction methods. For improved performance and simplicity, the edges of the frame are assumed to be zero to avoid special cases. The prediction in encoding and decoding is managed using a ring buffer.[60]
Entropy coding process
The residuals are coded using either variable-length coding or arithmetic coding. Both options use a very large context model. The "small" context model uses (11*11*11+1)/2=666 contexts based on the neighboring values of (Left-TopLeft), (TopLeft-Top), and (Top-TopRight). The "large" context model uses (11*11*5*5*5+1)/2=7563 contexts based on the same values as before, but also (TopTop - Top) and (LeftLeft-Left), where "TopTop" is the pixel two above the current one vertically, and "LeftLeft" is the pixel two to the left of the current one. In arithmetic coding, each "context" actually has 32 sub-contexts used for various portions of coding each residual, resulting in a grand total of 242,016 contexts for the "large" model. The arithmetic coder of FFV1 is very similar to (and based on) that of H.264.
Status
On April 16, 2006, a commit-message by Michael Niedermayer confirmed that the bitstream of FFV1 (version 1) is frozen:[61]
"ffv1 and ffvhuff havnt changed since a long time and noone proposed any changes within 1 month after my warning so they are officially no longer experimental and we will guarantee decodeability of files encoded with the current ffv1/ffvhuff in the future"
Codec
- Version 1 (FFV1.1)
The bitstream of version 1 is frozen and considered stable for production use since April 2006.[61] The remark "experimental" in the source code was overlooked back then and removed in March 2010.[62]
- Version 2 (FFV1.2)
Version 2 was an intermediate version, that was never officially released and should not be used for production purpose.
- Version 3 (FFV1.3)
The bitstream of version 3 is frozen since August 3, 2013.[63] The final commit marking this version as officially released for production usage was on August 26, 2013.[33]
- Version 4 (FFV1.4)
Improvements beyond FFV1.3 are work in progress and being discussed on the IETF "CELLAR" mailing list.[64] Planned are additional support for color-handling, especially non-linear/logarithmic color spaces.
Documentation
The current authoritative documentation was started in April 2012, and stayed in an very basic state until 2015.[65] In 2015, as part of the IETF standardization process, the documentation is now improved and reviewed by the CELLAR working group in close cooperation with Michael Niedermayer.[66]
See also
- FFmpeg
- List of lossless compression video codecs
- Results of FFV1 performance in comparison of different lossless video codecs, performed by Moscow State University in 2007[67]
References
- ↑ "Repository history of FFV1's sourcecode in FFMPEG repository". Michael Niedermayer. Retrieved 21 October 2010.
- ↑ https://code.google.com/p/lavfilters/
- 1 2 Bubestinger, Peter. "Comparing video codecs and containers for archives". Österreichische Mediathek. Retrieved 8 October 2014.
- ↑ "MSU Lossless Video Codecs Comparison" (PDF). MSU Graphics & Media Lab (Video Group). March 2014. Retrieved 8 October 2014.
- ↑ "Graphs about FFV1 performance (transcoding, retrieval)". NOA GmbH. Retrieved 8 October 2014.
- ↑ Evain, Jean-Pierre (15 August 2016). "Video Compression Code (A combined list of video codecs inc. EBU, DVB and MPEG)". European Broadcasting Union. Retrieved 19 September 2016.
- 1 2 "Formats and codecs for digital video preservation (Guideline 22)". NSW State Records. August 2013. Retrieved 10 November 2013.
- ↑ "Motion JPEG 2000 at digitalpreservation.gov". U.S. Library of Congress. Retrieved 6 March 2013.
- ↑ Fleischhauer, Carl; Frost, Hannah; Beard, Isaiah (November 2010). "AMIA/IASA 2010 - Wrappers and Codecs: A Survey of Selection Strategies". AMIA/IASA. Retrieved 6 October 2013.
- 1 2 Fleischhauer, Carl; Egan, Courtney (8 September 2014). "Digital File Formats for Videotape Reformatting". FADGI (U.S. Library of Congress). Retrieved 8 October 2014.
- ↑ http://www.digitizationguidelines.gov/about/
- ↑ Fleischhauer, Carl; Murray, Kate (3 December 2014). "Comparing Formats for Video Digitization". FADGI (U.S. Library of Congress). Retrieved 8 September 2015.
- ↑ "PREservation FORMAts for culture information/e-archives (PREFORMA)". Retrieved 2015-09-24.
- 1 2 Murray, Kate; Rice, Dave; Blewer, Ashley (September 23, 2015). "Improving Technical Options for Audiovisual Collections Through the PREFORMA Project". U.S. Library of Congress. Retrieved 2015-09-24.
- ↑ Fallon, Tessa; Rice, Dave; Blewer, Ashley (March 3, 2015). Conch – Appendix on Standardization Exercises (PDF) (Report). MediaArea. Retrieved 2015-09-24.
- ↑ "CONformance CHecking for audiovisual files (CONCH)". Retrieved 2015-09-24.
- ↑ "FFV1 at digitalpreservation.gov". U.S. Library of Congress. 29 May 2012. Retrieved 10 November 2013.
- ↑ Austen, Barbara; Bowling, Melissa; Deakyne, Holly; Evans, Ryan (7 August 2013). "Electronic Records Project" (PDF). Society of American Archivists. Retrieved 21 October 2014.
- ↑ "AVI File Format with FFV1 video encoding". AVI_FFV1. Digital Preservation. LoC. 2012-07-20. fdd000349. Retrieved 2015-04-22.
- ↑ "Matroska File Format with FFV1 video encoding". Matroska_FFV1. Digital Preservation. LoC. 2012-05-29. fdd000343. Retrieved 2015-04-22.
- ↑ landesmuseum.net
- ↑ mediathek.at
- ↑ Lewetz, Hermann (30 August 2011). "DVA-Profession used at the Austrian Mediathek: Codec". Österreichische Mediathek. Retrieved 8 October 2014.
- ↑ http://vancouver.ca/ctyclerk/archives/
- ↑ "Matroska video container information at digitalpreservation.gov". U.S. Library of Congress. Retrieved 10 May 2012.
- ↑ "A City of Vancouver Archives' blog post mentioning their use of FFV1". City of Vancouver Archives. Retrieved 10 May 2012.
- ↑ Musée d'art contemporain de Montréal (Archives and Media Centre)
- ↑ "SMIDAK Filmproduktion". Retrieved 2016-03-31.
- ↑ "Media micro-services and archival workflows at CUNY Television". 10 November 2015. Retrieved 19 August 2016.
- ↑ Esteva, Maria; Vega, Karla; Henriksen, Vandy; Lee, Jennifer; Martin, Wendy (May 2013). "Automated Archiving of DVD Content (Presentation at TCDL 2013)". Texas Advanced Computing Center (TACC) and University of Texas at Austin - Libraries. Retrieved 21 October 2014.
- ↑ dva-profession.mediathek.at
- ↑ Bubestinger, Peter (6 February 2014). "FFV1 performance statistics". Österreichische Mediathek. Retrieved 8 October 2014.
- 1 2 Niedermayer, Michael (26 August 2013). "Repository commit message: FFV1.3 released as stable". FFmpeg. Retrieved 29 August 2013.
- ↑ Niedermayer, Michael (16 August 2016). "Repository commit message: avcodec/ffv1enc: Add RGB48 support". FFmpeg. Retrieved 18 August 2016.
- ↑ "FFV1 discussion on AMIA-L mailing list". AMIA. December 2012. Retrieved 6 March 2013.
- ↑ "Digital master archive format". PrestoCentre Forums. 26 October 2012. Retrieved 6 March 2013.
- ↑ "FFV1 vs other formats for preservation". Archivematica mailing list. 24 September 2012. Retrieved 6 March 2013.
- ↑ "Digital film archiving in big scale". Archivematica mailing list. 29 January 2013. Retrieved 6 March 2013.
- ↑ "Company announcement confirming FFV1 support". NOA Audio Solutions. 10 July 2013. Retrieved 29 August 2013.
- 1 2 Kober, Helmfried (14 November 2013). "KEM SCAN Film Scanner Data Sheet" (PDF). KEM-Studiotechnik. Retrieved 30 April 2015.
- ↑ "Video Codecs – ffmpeg/ffv1". Flume Productions Inc. 11 December 2013. Retrieved 21 October 2014.
- ↑ Lyons, Bertram (2013). "Ask an Expert: Tips on Archiving Family History, Part 3". The New York Times Magazine (online). The New York Times.
- ↑ prestocentre.org
- ↑ Addis, Matthew (2013). "Crossing the Chasm (From Research Results to Sustainable Tools and Services for AV)". AV Insider Magazine. No. #3. PrestoCentre. pp. 14–15.
- ↑ Emanuel Lorrain (March 2014). "A short guide to choosing a digital format for video archiving masters". PACKED, Belgium. Retrieved 2 June 2014.
- ↑ "Conference Call for Presentations, FIAT/IFTA World Conference Vienna 7-10 October 2015" (PDF). International Federation of Television Archives. 13 May 2015. Retrieved 2015-09-01.
- ↑ "FIAT/IFTA World Conference 2015, Programme Day 1". International Federation of Television Archives. Aug 2015. Retrieved 2015-09-01.
- 1 2 3 4 "ffdshow tryouts". Retrieved 27 April 2015.
- 1 2 3 "LAVFilters (Open-Source DirectShow Media Splitter and Decoders)". Hendrik Leppkes. Retrieved 27 April 2015.
- ↑ "Archivematica - Format policies". Artefactual Systems Inc. Retrieved 2015-04-30.
- ↑ "Blender v2.6 Manual: Render/Output/Video". Blender Foundation. 18 November 2011. Retrieved 4 August 2013.
- ↑ "DVA-Profession used at the Austrian Mediathek: Codec". Österreichische Mediathek. Retrieved 2016-03-31.
- ↑ "KEM Scan". KEM Studiotechnik GmbH. Retrieved 2015-04-30.
- ↑ "Media Lovin Toolkit (MLT/melt)". Dan Dennedy. Retrieved 2015-04-27.
- ↑ "NOA MediaButler". NOA Audio Solutions GmbH. Retrieved 2015-04-27.
- ↑ "Video Tape Migration with Quadriga". CubeTec International. Retrieved 2016-03-31.
- ↑ "QUADRIGA Video Specifications". CubeTec International. Retrieved 2016-03-31.
- ↑ "Shotcut". Dan Dennedy. Retrieved 2015-04-27.
- ↑ "Message on FFmpeg developer mailing list about the impact of GOP size parameter of FFV1". Retrieved 10 May 2012.
- ↑ Michael Niedermayer (2013-09-05). "FFV1 Video Codec Specification". FFmpeg. Retrieved 2015-03-18.
- 1 2 "Repository commit message: Bitstream FFV1.1 frozen". Michael Niedermayer. 14 April 2006. Retrieved 8 May 2012.
- ↑ "Repository commit message". Michael Niedermayer. 22 March 2010. Retrieved 21 October 2010.
- ↑ "Mailing list post: Bitstream FFV1.3 frozen". Michael Niedermayer. 3 August 2013. Retrieved 29 August 2013.
- ↑ "Discussion thread on FFV1 version 4 (on IETF CELLAR mailing list)". 2016-01-05. Retrieved 2016-08-18.
- ↑ Michael Niedermayer (2013-11-03). "The FFV1 Video Codec Specification (2013)". Retrieved 2016-08-19.
- ↑ Michael Niedermayer (2016-07-31). "The FFV1 Video Codec Specification (Development Draft)". Retrieved 2016-08-19.
- ↑ "Lossless Video Codecs Comparison '2007". Graphics & Media Lab Video Group of Moscow State University. Retrieved 2015-04-27.