DE  |  FR  |  IT

Reconnaître le format vidéo avec FFmpeg

Comment reconnaître de manière fiable le format conteneur et le codec ?

[24-03-2020] Lorsqu'il s'agit de matériel vidéo, la question se pose rapidement de savoir si le matériel versé est effectivement dans le format attendu. Les lecteurs vidéo essaient généralement d'ouvrir tous les formats connus (également indépendamment de l'extension de fichier) et fournissent peu d'informations.

En règle générale, l'ingest détermine également le format des fichiers vidéo et les compare aux formats destinés à l'archivage. Si cela ne fonctionne pas ou s'il y a des incertitudes, une détermination plus précise du format conteneur et du codec est essentielle, tant pour la vidéo que pour l'audio.

Les appareils de lecture ne nous aident généralement pas. VLC media player fait exception à cette règle, car il fournit également des informations sur le format. D'autres outils, comme ShotCut, un éditeur vidéo open source, MediaInfo et QCTools de MediaArea (https://mediaarea.net/) sont principalement basés sur ffmpeg. Les utilisateurs habitués à travailler en ligne de commande (console) peuvent également utiliser directement l'outil de base.

Reconnaître le format conteneur

ffprobe est un outil en ligne de commande de FFmpeg et comprend une collection de commandes qui lisent les métadonnées techniques des fichiers vidéo. Exemple :

Entrée :
ffprobe -show_entries format=format_name,format_long_name -of default=nw=1 -v error d:\SampleVideo\video.mov

Sortie :
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV

-show_entries est explicite, -of default=nw=1 détermine le format de sortie, en détail : -print_format default=noprint_wrappers=1, -v error réduit les messages inutiles. Voir : https://ffmpeg.org/ffprobe.html

Reconnaître le format du codec

Avec le format du codec, nous voyons généralement deux flux dans le conteneur, un flux audio et un flux vidéo :

Entrée :
ffprobe -show_entries stream=codec_name,codec_long_name -of default=nw=1 -v error d:\SampleVideo\video.mov

Sortie :

codec_name=aac
codec_long_name=AAC (Advanced Audio Coding)
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 partie 10

Dans ce cas, le codec audio est de type « AAC » et le codec vidéo de type « h264 »

Alternative : MediaInfo

Avec MediaInfo de MediaArea (https://mediaarea.net/en/MediaInfo), il est également possible de visualiser ces informations dans une interface graphique et de les exporter en différents formats de sortie :

Attention, pas de validation de format

Dans les tests décrits, seules les métadonnées de format sont lues à partir des fichiers vidéo, il n'y a pas de validation du format vidéo. De plus, l'intégrité du flux vidéo n'est pas vérifiée.