DE  |  FR  |  IT

Changement de conteneur sans transcodage

Comment détecter de manière fiable, après un changement de conteneur, qu'aucun transcodage n'a eu lieu ?

[09-03-2020] Lorsqu'il s'agit de matériel vidéo, le CECO déconseille en principe de procéder à une conversion généralisée de format. Il peut néanmoins être utile de convertir le matériel reçu dans un format adapté à l'archivage, ou du moins dans un format plus courant.

Dans ce cas précis, nous parlons de la conversion de disques Blu-Ray.

Les codecs vidéo suivants sont autorisés pour le Blu-Ray : H.262/MPEG-2 Part 2, H.264/MPEG-4 AVC et SMPTE VC-1. Le format du conteneur est M2TS, dérivé de MPEG2 ; dans les archives, nous préférons utiliser MPEG4 ou MOV. Cependant, en raison d'une possible perte de qualité, nous aimerions changer le conteneur sans transcoder le codec vidéo.

Formats de postproduction

De nombreux programmes de montage vidéo que nous pourrions utiliser pour la conversion, tels qu'Adobe Premiere, Apple Final Cut, Cyberlink PowerDirector etc., utilisent lors du montage du matériel vidéo un format interne de postproduction, dans lequel le matériel à monter est d'abord converti (par exemple, ProRes dans Final Cut). Après le changement de conteneur, le codec d'origine peut à nouveau être présent, mais éventuellement après un deuxième transcodage. Changer de conteneur avec ffmpeg, devrait nous mettre relativement à l'abri de cela, mais nous aimerions quand même savoir si le codec vidéo est resté inchangé.

Détecter le transcodage

(Étudié et compilé par les Archives de l'État de Zurich AEZH)

Le temps de traitement est un indice de l'existence d'un transcodage. Un changement de conteneur pur sans transcodage devrait être beaucoup plus rapide qu'avec transcodage, mais ce n'est bien sûr qu'une indication imprécise.

Il existe en outre certaines possibilités de comparer les vidéos dans QC-Tools, mais leur capacité à détecter un transcodage éventuel dépend évidemment du type de transcodage. Les expériences menées avec QC-Tools et MediaInfo ont en tout cas montré que ces outils ne peuvent guère être utilisés pour faire des déclarations fiables concernant le transcodage.

L'approche la plus fiable est la suivante: ffmpeg permet de générer des sommes de contrôle pour les images individuelles, qui sont consignées dans un fichier texte. Les sommes de contrôle des images individuelles du fichier original et du fichier avec le nouveau conteneur peuvent être comparées après un nettoyage. Dans le cas d'un changement de conteneur sans transcodage, ils doivent être identiques. Cette procédure a été testée par les AEZH et le bureau du CECO et elle fonctionne.

Il est également possible d'utiliser ffmpeg pour recréer des différences d'images  entre plusieurs films sous forme de film (à l'instar de ce que KOST-Simy ou Diffchecker font pour les images, par exemple). Dans le cas du transcodage, une différence d'images peut être constatée sur toute la longueur du film. Il convient toutefois de noter qu'il peut être impossible de détecter des différences d'images si la qualité théorique du fichier transcodé est meilleure que celle du fichier original. En comparant des films qui n'ont été que changés de conteneur, aucune différence d'images ne devrait être détectable en théorie. Dans la pratique, des images de différence brièvement scintillantes sont apparues entre les deux. Ces problèmes ont probablement été causés par des débits binaires différents, mais la raison exacte reste peu claire.

En conclusion, la méthode consistant à utiliser ffmpeg pour générer des sommes de contrôle pour les images individuelles est la plus convaincante.

Commandes ffmpeg (selon Reto Kromer, reto.ch)

Changer le conteneur (mp4 d'après Matroska) sans transcodage (= copy):

ffmpeg -i Input_h264.mp4 -codec copy Output_h264.mkv

Transcoder (vidéo d'après ffv1 et audio d'après flac) sans changer le conteneur

ffmpeg -i Input.mkv -codec:v ffv1 -codec:a flac Output_ffv1_flac.mkv

Générer des sommes de contrôle framemd5:

ffmpeg -i Input_h264.mp4 -f framemd5 Input_framemd5.txt

Etablir une image de différence[NAR6]  entre deux vidéos:

ffmpeg -i Input_h264.mp4 -i Output_h264.mkv -filter_complex "[1]format=yuva444p, lut=c3=128, negate [1_mit_Alpha_Kanal]; [0][1_mit_Alpha_Kanal]overlay" Diff_Input-Output.mp4

La documentation ffmpeg est consultable sous https://www.ffmpeg.org/ffmpeg.html.