MP4 et autres codecs
Les fichiers vidéos se lisent (ou pas) sur votre ordinateur. Les fichiers AVI s’ouvrent sur PC mais les MOV sous Mac (Apple). Et les M4V? C’est le foutoir et même les pros s’y perdent. Voici l’explication qui vous dévoile les secrets les plus intimes de vos fichiers vidéos et de leurs codecs…
AVERTISSEMENT: cet article est très technique. J’ai essayé de le rendre le plus clair possible mais se lancer dans une explication sur les conteneurs et les codecs est une cause perdue d’avance. Si vous n’êtes pas très versé dans la technique et l’informatique, mieux vaut peut–être s’intéresser à nos autres tutoriels.
Les codecs: l’antre de la bête
Les fichiers vidéos ont toujours été la bête noire de l’informatique. La raison essentielle vient du stockage de leur contenu: le codec. Au début de la vidéo numérique « grand public » fut créé, en 1988, le MPEG-1 (352 x 240 pixels, 25 ou 30 im/sec, 175 ko/sec) puis sont venus d’innombrables autres formats comme le Cinepak en 1992 (définition de 320 x 240 à un taux de transfert de 150 ko/s) et ceux qui suivirent.
Le Cinepak, le MPEG-1, le MPEG-2 le MPEG-4 sont des « codecs », c’est-à-dire le codage de l’image selon des normes très précises. Il s’agit de la méthode de compression et de décompression des images utilisée. C’est extrêmement technique. Soit le codec existe sur votre machine, et ça marche, soit il n’existe pas, et vous ne pourrez pas ouvrir et lire le fichier.
Les 4 codecs dont je viens de parler sont les « principaux » mais il en existe une multitude. Comme le M-JPEG, qui consiste à mettre les images JPEG les unes derrière les autres, le DV (format utilisé sur les camescopes de 1995 à 2010 environ) et bien d’autres… Par ailleurs un même format comme le MPEG-4 peut réserver des surprises car lui-même se décompose en plusieurs sous formats: le H264 (lui-même « baseline » ou plus complexe), le H265…
La partie visible de l’iceberg
Devant une telle complexité, j’arrête les frais. Car en tant qu’utilisateur (ou même créateur de contenus vidéos), nous ne voyons que la partie visible de l’iceberg: l’extension du fichier: .mov
, .avi
, .mkv
, .m4v
et .mp4
(voire .mp3
pour les fichiers sons).
On va s’occuper du facile: les fichiers qui ont l’extension .mp3
(ou .mp2
) sont des fichiers sons au même titre que les fichiers .wav
(non compressés) et .aiff
(sous Apple). Voilà, c’est fait, vous devriez pouvoir les ouvrir sans difficultés.
Au début, furent l’AVI et le MOV
Les fichiers vidéos ont toujours eu l’extension .AVI
sous Windows et .MOV
sous Apple. C’était les années 1990, une époque où les disques durs s’étaient généralisés et où les CD-ROMs faisaient leur apparition. Il fallait, à l’époque, que le débit des vidéos ne dépasse pas 1,4Mb/sec (Mb pour Megabits, soit la vitesse nominale d’un CD: 44,1kHz x 2 stéréo x 16 bits), c’est-à-dire 172ko/sec. À l’époque des ordinateurs à 4 Mo de mémoire et des disquettes de 1,4Mo (soit 16 secondes de vidéo!) étaient la norme; la vidéo, c’était du pur miracle. Et le moins cher consistait à la stocker sur CD. Rien n’est vraiment dû au hasard…
Je viens de vous parler de codecs dans le paragraphe précédent. Sauf que le codec c’est le flux vidéo et il fallait le mettre quelque part: dans des fichiers (oui, ça paraît évident). Plutôt que créer un type de fichier par codec (avec des dizaines d’extensions), on a préféré créer un conteneur.
Si je prend l’exemple du DV, on a connu des cassettes MiniDV, DVCAM (Sony), Digital8 et DVCPRO (Panasonic). Soit 4 cassettes différentes pour le même DV! Même codec mais 4 cassettes! La cassette, c’est le conteneur. Vous voyez le parallèle?
Mais on peu aussi prendre l’exemple inverse des cassettes Betamax (concurrent du VHS, sorti en 1975). Les cassettes Betamax ont été utilisées pour les magnétoscopes Betacam. Mais il était impossible de lire un enregistrement Betacam sur un magnétoscope Betamax.
Il faut donc voir le conteneur (.MOV
, .AVI
) comme l’équivalent de la cassette et le codec comme l’équivalent du signal enregistré sur la bande magnétique.
Donc Windows a choisi l’AVI et Apple a choisi le MOV. Pourquoi? Parce qu’à l’époque, Windows et Apple se faisait la guerre froide (si vous avez une autre raison valable, je suis preneur). Bref, incompatibilité entre AVI et MOV même si le codec est disponible pour les 2 machines.
Bien plus tard, le conteneur MKV (Matroska) et WebM sont venus se rajouter. Dans tous les cas, ce sont des conteneurs.
Un conteneur? What that f…?
Clairement, le titre en dit long. Pourquoi des codecs dans des conteneurs? Réponse simple: votre vidéo est composé d’une partie image et d’une partie son, les deux sont des données séparées qui se retrouvent dans le conteneur qui gère le méli-mélo.
Quelque soit le conteneur, il peut contenir:
- une (ou plusieurs) séquence d’images
- une (ou plusieurs) piste son
- éventuellement un time-code
- éventuellement un sous-titrage
Voilà à quoi sert le conteneur. Si vous avez un film en plusieurs langues, le conteneur aura une piste son par langue. En plus de cela, les pistes vidéo (images seulement) et les pistes son vont être entremêlées afin que le son soit au même emplacement que l’image dans le fichier.
Le conteneur sert donc à n’avoir qu’un seul fichier pour une vidéo même si celle-ci a plusieurs pistes son. C’est aussi vrai pour des vidéos en stéréo qui vont contenir 2 pistes son séparées.
De façon générale, il n’y a qu’une piste vidéo par fichier.
Le conteneur est donc le point d’orgue (et le point d’entrée) pour lire les vidéos. Exemple. L’un de nos membres m’a envoyé un fichier MOV issu de sa caméra et qui se décompose ainsi (j’ai ajouté du gras là où c’est important):
- Piste 1: Video: h264 (High 4:2:2) (xalg / 0x676C6178), yuv422p10le(tv, bt709/bt709/iec61966-2-4, progressive), 1920×1080 [SAR 1:1 DAR 16:9], 46716 kb/s, 50 fps, 50 tbr, 50 tbn, 100 tbc (default)
- Piste 2: Data: none (tmcd / 0x64636D74), 0 kb/s (default)
- Piste 3 à 6: Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, mono, s32 (24 bit), 1152 kb/s (default)
Je décode pour vous.
La piste 1 est une piste vidéo utilisant le codec H264 (ce qu’on traduit souvent, par abus de langage, par du MP4).
La piste 2 est une piste technique utilisée par la caméra pour stocker le timecode.
Les pistes 3 à 6, c’est l’enregistrement audio effectué en 4 pistes mono PCM (du son non compressé) en 48kHz, 24 bits (sacré caméra mon René!).
Qui peut comprendre le baragouinage ci-dessus? Personne. Laissez cela à votre logiciel de montage! Les conteneurs sont des boites noires à ne pas ouvrir! Est-ce cela vous serait venu à l’idée d’ouvrir la cassette de votre magnetoscope pour voir comment c’est fait à l’intérieur?
Le MP4 et ça marche…?
Depuis déjà quelques années, on ne jure que par le MP4. Et on voit fleurir des fichiers avec l’extension .mp4
(plus rarement .m4v
quand c’est un fichier vidéo muet, et plus rarement .m4a
pour de l’audio). Mais alors, me MP4, c’est un conteneur ou un codec?
MP4, c’est l’abréviation de MPEG-4 sauf que le MPEG4, c’est une norme et pas un codec. Mais la norme MPEG4 définit des codecs et le format du conteneur. Donc l’extension .mp4
, c’est un conteneur. Et, pour aller plus loin, il a été défini sur les bases du .mov
! Du coup, on mélange tout: .mov
et .mp4
mais c’est la même chose. Apple a intégré la norme MPEG-4 dans son conteneur.
Et Windows? Pareil, il a adopté le .mp4
et, de facto, le .mov
mais il garde aussi le .avi
(parce que ça marche bien aussi). C’est simple, non? Aujourd’hui, Apple continue à faire de la résistance et QuickPlayer refuse de lire les fichier AVI
.
Comment lire mon fichier vidéo?
Comment lire tous les fichiers vidéo? La meilleure solution est d’utiliser le logiciel VLC. Pourquoi? Parce qu’il est capable de lire tous les conteneurs: MP3, AVI, MOV, MP4 et aussi MKV mais aussi (et surtout) parce qu’il possède quasiment tous les codecs existants.
C’est donc le meilleur logiciel de lecture vidéo que je connaisse. Bien que la totalité (ou presque) des membres nous fournit les fichiers dans un format compatible avec QuickTime, nous l’utilisons parfois pour d’anciennes vidéos ou pour la venue de personnes ayant fait le montage sur PC.
Le lecteur VLC permet de lire à peu près tout et n’importe quoi… Sauf la vidéo que je vous ai donné en exemple ci-dessus bien que celle-ci fut bien au format MOV avec un codec H264. J’ai moi-même mis du temps à comprendre la raison du pourquoi car tout paraissait simple… Même QuickTime acceptait de la lire mais il restituait un écran blanc comme neige…
Le fait est que la caméra a filmé en YUV 4:2:2 et que le lecteur QuickTime n’accepte que du YUV 4:2:0… Il s’agit de la façon donc le codec traite l’image et apparemment ni le codec de QuickTime ni celui de VLC 3.0.8 ne sont capable de le faire. Qu’est-ce que je raconte là? Vous voyez quand je vous disait qu’écrire un article comme celui-ci était une cause perdue d’avance…
Post scriptum sur les codecs
Si vous n’avez absolument rien compris, il est aussi possible de consulter l’article de Thierry sur son site Web. C’est une version simplifiée de cet article que j’ai découvert après la rédaction de celui-ci. Il aborde notamment les conteneurs OGG, RM (Real Media), TS, WMV et d’autres que j’ai négligé ici. À noter que le format WMV de Windows était souvent un vecteur de virus informatique et que son ouverture avec VLC est fortement conseillée.