-
Notifications
You must be signed in to change notification settings - Fork 0
FFV1
FFV1 est un codec vidéo open source intra-trame et sans perte qui a été développé spécifiquement pour la conservation à long terme des archives audiovisuelles. Il a été créé en 2003 par le développeur Michael Niedermayer afin de disposer d'un format de flux vidéo open source pour le logiciel ffmpeg
. FFV1 s'appuie sur des technologies éprouvées et déjà anciennes pour éviter les risques liés aux brevets logiciels (CPO-LIB).
Le format FFV1 est très adapté à la préservation à long terme : il est exempt de tout brevet, il dispose d'une compression sans perte donc réversible, et son lien avec ffmpeg, devenu outil de référence sur la vidéo, lui garantit une prise en charge dans tous les contextes où ffmpeg est utilisé.
Le flux vidéo d'un fichier FFV1 peut présenter toutes les tailles, de la SD (720x480 ou 720x576) à la 8K, et ce quel que soit le ratio image. Il permet de gérer toutes les valeurs de sous-échantillonnage de la chrominance, de 4:1:1 à 4:4:4.
FFV1 gère les images en niveaux de gris, YUV et RVB, avec ou sans canal alpha (transparence), sans limitation en matière de profondeur d'échantillonnage (en pratique, on constate des valeurs de 8 à 16 bits par composante).
Il gère enfin les modes progressif et entrelacé.
FFV1 est compatible avec de nombreux logiciels et systèmes d'exploitation, ce qui facilite son utilisation et son intégration dans les workflows de conservation et de diffusion des archives audiovisuelles.
Bien qu'il ne s'agisse pas d'un format de diffusion, plusieurs outils grand public sont capables de le lire ou de l'éditer (voir la section Outils ci-dessous pour la liste de ces derniers).
FFV1 est très largement utilisé par les institutions de conservation pour les images animées (New York Public Library, British Film Institute, la Cinémathèque française, etc.) et les prestataires de numérisation vidéo.
Le flux audio accompagnant le flux vidéo FFV1 peut être un flux PCM non compressé ou être encodé en FLAC.
La version actuelle est la version 3. Les versions de FFV1 sont les suivantes :
- Version 0 : Première version stable de FFV1, publiée en 2006 ;
- Version 1 : publiée en 2009, elle ajoute essentiellement le support d'autres profondeurs d'échantillonnage ;
- Version 2 : disponible seulement sous forme expérimentale, elle n'a jamais été publiée officiellement ;
- Version 3 : publiée en 2013, elle ajoute notamment les empreintes numériques CRC par trame et des métadonnées internes.
Une version 4 est en cours d'élaboration.
Contrairement à AVC/H.264 ou ProRes, le format FFV1 ne définit pas de profils de performance.
Le format FFV1 peut être embarqué dans différents formats conteneurs :
- Matroska (MKV) est généralement utilisé par la communauté de la préservation numérique car libre également, et normalisé à l'IETF dans un processus parallèle ;
- AVI ;
- MXF.
Depuis 2021, FFV1 dispose de spécifications sous forme d'une RFC : la RFC 9043, de statut informational, grâce à un processus de normalisation porté par le groupe CELLAR.
Registre | Identifiant |
---|---|
Wikidata | Q579857 |
Bibliothèque du Congrès |
fdd000341 (codec) fdd000349 (combo AVI + FFV1) fdd000343 (combo MKV + FFV1) |
Just Solve the File Format Problem | FFV1 |
Depuis sa version 2, FFV1 permet d'associer à chaque pavé (slice) une empreinte CRC-32. Ce mécanisme d'empreinte numérique interne renforce sa résilience (CPC-ROB). Lors de l'encodage avec l'outil ffmpeg, il est nécessaire de spécifier l'option -slicecrc 1
pour activer ce mécanisme dans le fichier produit.
Le nombre de pavés par image est paramétrable, et va de 4 à 1023 (une liste des valeurs autorisées est disponible sur le site reto.ch).
A noter que plus le découpage est important et plus l’encodeur (et le décodeur) utilisera des ressources machine et le temps de codage / décodage sera important.
La compression FFV1 permet d'obtenir un poids variant entre 45 % et 55 % par rapport au même flux non compressé.
L'algorithme de compression FFV1 est intra-trame, (la compression est interne à chaque image, à l'inverse de la compression inter-trames, qui élimine la redondance sur une succession d'images). Cela rend le format adapté à la post-production. En outre, cela permet d'éviter la propagation des erreurs de compression d'une image à une autre. Il est relativement simple (CPO-SIM), comparé notamment à l'algorithme JPEG 2000 sans perte, donc plus rapide que lui et avec un ratio de compression légèrement supérieur (CPO-COM). Le ratio de compression entre le format de flux vidéo V210 et FFV1 est approximativement de 65% (le débit de FFV1 étant variable, cette valeur peut différer selon le contenu des images).
Chaque image (frame) du flux FFV1 est découpé en pavés (slices) qui peuvent disposer chacune d'une empreinte CRC-32 (CPO-ROB). Ce découpage permet également le multi-threading, donc l'accélération des processus d'encodage et décodage si le matériel le permet.
Résolution SD (720 x 576) | Résolution HD (1920 x 1080) | ||
---|---|---|---|
Cadence / Espace colorimétrique | Poids estimé pour 1 heure | Poids estimé pour 1 heure | |
FFV1 10 bits | 25i 422 | 42 Go | 140.6 Go |
FFV1 8 bits | 25i 420 | 28 Go | 82.3 Go |
Pour un usage de préservation à long terme, le wiki ffmpeg recommande de faire la compression en deux passes : la première vise à réunir de l'information en vue d'obtenir un taux de compression optimal lors de la seconde - cela au prix, bien sûr, d'un temps d'encodage plus important.
- Lecture : des logiciels de lecture libres et/ou gratuits grand public lisent FFV1, notamment VLC et Windows Media Player. L'outil ffplay, associé à ffmpeg, est capable de lire de très nombreux types de fichiers audio et vidéo, parmi lesquels FFV1. Pour une implémentation au sein de systèmes informatiques, on peut également signaler un décodeur en Go.
- Production : ffmpeg est évidemment l'outil principal pour des transformations vers ou depuis FFV1. Le site ffmprovisr propose des lignes de commande types pour transcoder vers FFV1. La société MediaArea, sponsorisée par de nombreuses institutions de conservation internationales, a développé l'outil RAWcooked qui permet de convertir un flux vidéo brut (une séquence d'images en TIFF ou DPX) vers un fichier MKV FFV1 FLAC. (Cette transformation est intégralement réversible.)
- Édition / transformation : ffmpeg est également l'outil à utiliser pour produire des dérivés destinés à différents usages, de consultation notamment. On notera que réaliser des opérations de post-production nécessite une transformation vers un codec adapté à l'édition (par exemple, ProRes).
- Caractérisation : l'outil d'analyse et d'extraction de métadonnées techniques pour la BnF est MediaInfo, qui dispose d'une sortie native dans le format de métadonnées de caractérisation préféré par la BnF, MPEG-7. L'outil ffprobe, associé à ffmpeg, est une alternative également utile.
- Vérification de conformité à un profil d'application : le logiciel MediaConch de MediaArea permet de vérifier que les fichiers MKV FFV1 correspondent à un profil d'application défini par une institution. Ce logiciel dispose d'une interface en ligne de commande et d'une interface graphique.
Le FFV1 est utilisé pour la numérisation des bandes EIAJ et 1 Pouce B, C et IVC conservées à la BnF. En effet, leur fragilité et la rareté de leur matériel de lecture incitent la BnF à choisir un format et une qualité à même de durer dans le temps sans demander une renumérisation, y compris pour les besoins de post-production. Son paramétrage est décrit dans le référentiel de format vidéo.