FFV1 (FFmpeg Video Codec 1)

FFV1 ist ein verlustfreier intra-frame Videocodec. Er wurde von Michael Niedermayer entwickelt und ist Teil der freien Codec-Sammlung libavcodec des Projektes FFmpeg. Der Codec unterstützt das Y′CBCR-Farbmodell in den Unterabtastungen 4:4:4, 4:2:2, 4:2:0, 4:1:1 und 4:1:0. Ab Version 3 kann FFV1 auch Video im Zeilensprungverfahren kodiert werden. Zudem unterstützt er die verlustfreie Kompression von RGB- und RGBA-Daten.

Zum Beispiel die Containerformate Matroska und AVI können FFV1-codierte Bilder speichern.

FFV1 hat einen im Format selbst eingebetteter Kontrollmechanismus: Es können für jedes Einzelbild CRC-Hashwerte auf Slice-Ebene berechnet werden.

FFV1 benutzt den FourCC-Code «FFV1».

FFV1 kann für die Archivierung empfohlen werden, weil er solide und kohärent aufgebaut und offen dokumentiert ist und weil dieser Videocodec in der Archivwelt immer grössere Verbreitung als Alternative zu JPEG 2000 findet.

Bemerkungen

  • Die Validierung von FFV1 in der Version 3 wurde am 26. August 2013 beendet. Und der Matroska-Container wird zur Zeit, zusammen mit EBML, dem FFV1-Videocodec und dem FLAC-Audiocodec, sowie das Bit-Strom-basierende Format EBML, offiziell von der Cellar-Arbeitsgruppe des IETF standardisiert. Das Arbeitsdokument des Standardisierungsprozesses wird auf GitHub öffentlich bearbeitet und jeder Schritt kann frei eingesehen werden. Am 24. August 2021 wurden das Standard der Versionen 0, 1 und 3 vom IETF als RFC 9043 publiziert.
  • FFV1 kann jetzt auch RGB-Inhalte mit einer Bittiefe von 16 bit pro Kanal speichern («packed» RGB48 und «planar» GBRp16), wie zum Beispiel in DPX- oder TIFF-Dateien kodiert wird, und benützt dabei nur ein bis zwei Drittel des nicht komprimierten Speicherbedarfs. AV Preservation by reto.ch hat diese Entwicklung finanziert.
  • Die Vorabversion 18.5 Beta 1 von DaVinci’s Resolve unterstützt den Videocodec FFV1.
  • Die De-facto-Referenzimplementierung, also diejenige von Michael Niedermayer in FFmpeg, könnte optimiert werden und der Encoder ist nicht ganz fehlerfrei. Weitere Implementierungen wurden von Jérôme Martinez, Derek Buitenhuis (nur Decoder) und Reto Kromer (Multithreading) realisiert.
  • Reto Kromer hat Bash-Skripte zur Erstellung und Verifizierung von Matroska/FFV1-Dateien programmiert und hat sie unter einer 3-Klausel-BSD-Lizenz als freie Software veröffentlicht.

Bibliografie

Normen

IETF RFC 9043
Michael Niedermayer, Dave Rice and Jérôme Martinez: FFV1 Video Coding Format Version 0, 1, and 3, IETF Working Group «Cellar», 2021-08-24
IETF Internet Draft
Michael Niedermayer, Dave Rice and Jérôme Martinez: FFV1 Video Coding Format Version 4, IETF Working Group «Cellar», 2024-01-17

2024-01-22