Transcoder des fichiers vidéos avec ffmpeg en DNxHD

Deux termes étranges dans seul but : aider à rationaliser les transferts de médias entre différents stations de post-production en utilisant des outils neutres.

Publié le

Le DNxHD est un codec vidéo conçu par AVID, dans le but d’échanger des éléments entre différentes stations de montages.

Ce format est un concurrent direct à l’Apple ProRes, à la différence notable qu’il est prévu pour être interopérable. Il appartient à la norme SMPTE VC3.

Le codec, en lecture et création de fichier, est disponible sur Windows (Quicktime, Premiere Pro, AVID etc…), MacOS X (Quicktime, Final Cut Pro, Premiere Pro, AVID, etc…). Il existe une implémentation libre avec ffmpeg, qui permet de manipuler du DNxHD en ligne de commande, et donc par lot, et même d’utiliser des machines Linux.

Les variantes du DNxHD s’expriment avec le débit, constant. Le choix du débit n’est pas libre, il est en corrélation direct avec la résolution et la fréquence d’image selon le tableau de la norme. Pour info, je n’ai pas essayé l’option 10 bits qui n’est pas disponible dans ffmpeg.

ffmpeg doit être compilé avec le codec du DNxHD, une version récente doit faire l’affaire. Pour vérifier, tapez dans une console :

ffmpeg -codecs

Et chercher la ligne

DEV D dnxhd VC3/DNxHD

Si elle n’apparait pas, votre version de ffmpeg ne prend pas en charge le DNxHD. Désolé !

Pour lancer un transcodage, la commande de base est

ffmpeg -i <fichier source> -vcodec dnxhd -b <débit> -acodec pcm_s16le -f mov <fichier destination>

  • le « pcm_s16le » pour l’audio designe une configuration PCM (non compressé), 16 bits stéréo Little Endian.
  • le « -f mov » indique à ffmpeg que l’on souhaite produire un fichier QuickTime, compatible Premiere et Final Cut. Pour des besoins d’archivage ou de travail avec une station AVID, on peut aussi produire un fichier MXF avec l’option « -f mxf »

Table des débits

  • en 1080p/25 et en 1080i/50 → sont disponible les débits 36M, 120M, et 185M
  • en 1080p/24 → sont disponible les débits 36M, 115M, et 175M
  • en 1080p/29,97 et en 1080i/59,94 → sont disponible les débits 36M, 145M, et 220M

Pour plus d’informations, se référer au document d’AVID (PDF), page 7. Le 720p est disponible aussi. Les normes SD, 2K, 4K, et 3D ne sont pas disponibles. Il n’y a pas non plus d’alpha (transparence). Mise à jour : depuis quelque temps l’alpha est disponible, mettez à jour vos codecs si ce n’est pas le cas.

Exemple de ligne de commande pour un transcodage :

ffmpeg -i source.mpg -vcodec dnxhd -b 120M -acodec pcm_s16le -f mov destination.mov

Le transcodage en DNxHD n’est pas multithread. Il ne sera pas très rapide au regard d’autres codecs optimisés multiprocesseurs. Il faut donc prendre son mal en patience, et attendre.

Voilà, amusez vous bien avec ça !

N’oubliez pas que le DNxHD est assez volumineux. Prévoyez le stockage en conséquence…