Améliorations majeures des performances de concaténation audio et vidéo
Nous avons récemment mis à jour nos Robots de concaténation audio et vidéo pour utiliser le démultiplexeur concat de FFmpeg, ce qui améliore considérablement les performances des Assemblies concernées.
Pour que les Assemblies bénéficient du nouveau démultiplexeur, les fichiers d’entrée doivent respecter les conditions suivantes :
- Ils doivent utiliser le même format de conteneur (par exemple, tous au format MP4).
- Ils doivent utiliser les mêmes codecs pour leurs flux (par exemple, H.264 pour la vidéo et AAC pour l’audio).
- Ils doivent avoir les mêmes paramètres de codec (comme la résolution et la fréquence d’images pour la vidéo, ou la fréquence d’échantillonnage pour l’audio).

Pourquoi est-ce beaucoup plus rapide ?
La concaténation avec le démultiplexeur concat est beaucoup plus rapide que l’utilisation de filtres complexes et d’un nouveau transcodage, pour plusieurs raisons :
Aucun réencodage nécessaire
Lorsque le démultiplexeur concat est utilisé avec -c copy, FFmpeg n’a pas besoin de décoder puis de réencoder
les flux. Le réencodage sollicite fortement le processeur et peut considérablement augmenter le temps
d’exécution d’une Assembly, en particulier pour les Assemblies qui traitent des vidéos en haute résolution.
En évitant cette étape, le démultiplexeur concat évite de réencoder inutilement les fichiers et
termine l’Assembly beaucoup plus rapidement.
Copie directe des données
Le démultiplexeur concat permet essentiellement à FFmpeg de copier directement les données multimédias des fichiers sources vers le fichier de sortie. Comme le traitement est minimal (hormis l’analyse des en-têtes de fichiers et l’ajustement des horodatages), l’opération est principalement limitée par la vitesse des supports de stockage.
Préservation de la qualité
Comme il n’y a aucun réencodage, il n’y a pas non plus de perte de qualité due aux artefacts de compression qui pourraient être introduits lors de l’encodage. C’est un avantage supplémentaire, au-delà du gain de vitesse.
À l’inverse, l’utilisation de filtres complexes ou le réencodage oblige FFmpeg à décoder entièrement tous les flux, à les traiter (ce qui peut inclure un redimensionnement, un filtrage ou d’autres transformations), puis à les réencoder dans le format cible. Cela prend davantage de temps et peut également dégrader la qualité et augmenter la taille du fichier.
Cette approche est similaire à celle de LosslessCut, un éditeur vidéo open source créé par notre Transloadian Mikael Finstad. LosslessCut utilise également le démultiplexeur concat de FFmpeg pour un montage vidéo rapide et sans perte.
Pour tirer le meilleur parti de ce changement, veillez à transcoder d’abord les fichiers d’entrée
qui diffèrent afin qu’ils aient le même conteneur, les mêmes codecs de flux et les mêmes paramètres
de codec, notamment la résolution et la fréquence d’images vidéo ainsi que la fréquence
d’échantillonnage audio. Pour obtenir les meilleures performances à cette étape, utilisez turbo: true et l’un de nos
préréglages (English). Ces deux éléments vous permettent de réduire considérablement
le temps d’exécution de vos Assemblies existantes.
Si les fichiers d’entrée respectent déjà toutes les conditions de correspondance du conteneur, des codecs de flux et des paramètres de codec indiquées ci-dessus, il n’est pas nécessaire d’ajouter des Steps d’encodage supplémentaires, car vous devriez déjà constater les gains de performances par défaut. Toutefois, si vos fichiers sont susceptibles de différer par leur conteneur, leurs codecs de flux ou leurs paramètres de codec (notamment la résolution, la fréquence d’images ou la fréquence d’échantillonnage), nous vous recommandons d’ajouter un Step utilisant le Robot /file/filter pour envoyer les fichiers qui ne respectent pas ces conditions vers un Step d’encodage, afin de tirer le meilleur parti de vos Steps de concaténation ultérieurs.
