Introduction
FFmpeg est un outil polyvalent pour le traitement des médias, supportant une grande variété de codecs audio et vidéo ainsi que des formats de conteneurs. Il joue un rôle important dans l'activation de nouvelles expériences vidéo et l'amélioration de la fiabilité des expériences existantes pour les utilisateurs des applications de Meta.
Contexte Technique
Meta exécute les binaires FFmpeg et ffprobe des dizaines de milliards de fois par jour, ce qui introduit des défis uniques lors du traitement des fichiers multimédias. FFmpeg peut facilement effectuer la transcodification et l'édition de fichiers individuels, mais les flux de travail de Meta nécessitent des fonctionnalités supplémentaires pour répondre à leurs besoins.
Pendant de nombreuses années, Meta a dû s'appuyer sur une version interne personnalisée de FFmpeg pour fournir des fonctionnalités telles que la codification multithreadée et le calcul des métriques de qualité en temps réel, qui n'ont été ajoutées à FFmpeg que récemment.
Analyse et Implications
Avec le temps, la version interne de FFmpeg est devenue de plus en plus divergente par rapport à la version en amont, ce qui a créé des défis pour la réinitialisation des modifications internes sans introduire de régressions. Meta a collaboré avec les développeurs de FFmpeg, FFlabs et VideoLAN pour développer des fonctionnalités dans FFmpeg qui permettent de remplacer complètement la version interne par la version en amont.
Les développements clés incluent la mise en œuvre de la transcodification multithreadée et du calcul des métriques de qualité en temps réel, qui permettent d'améliorer l'efficacité et la qualité du traitement des médias.
Perspective
Meta s'efforce de contribuer aux développements en amont qui peuvent avoir un impact significatif sur la communauté FFmpeg et l'industrie dans son ensemble. Cependant, certaines modifications développées internement ne sont pas appropriées pour une contribution en amont en raison de leur spécificité à l'infrastructure de Meta.
La prise en charge de matériel spécialisé, comme le Meta Scalable Video Processor (MSVP), est également gérée en interne en raison des défis de support et de validation pour les développeurs de FFmpeg.