Pourquoi un MP4 refuse de se lire, et ce qu'est vraiment un conteneur

En quoi des conteneurs comme MP4 et MKV diffèrent de codecs comme H.264 et AV1, et comment le débit, les images clés, les pistes audio et le réencodage décident si un fichier se lit et quelle taille il atteint.

Un MP4 qui refuse de se lire est rarement corrompu. L'extension ne nomme que le conteneur, l'emballage qui contient les flux et leurs horodatages. Ce qu'il faut décoder, c'est le codec à l'intérieur, et un même .mp4 peut abriter du H.264 qui se lit sur un téléphone vieux de dix ans ou de l'AV1 qu'un téléviseur de deux ans ne sait pas toucher. Voilà pourquoi un MP4 se lit et un autre non.

Deux questions valent pour n'importe quel fichier vidéo : dans quelle boîte se trouve-t-il, et comment l'image est-elle compressée. Changer de boîte est généralement gratuit ; changer la compression ne l'est jamais.

Le conteneur est la boîte, le codec est l'image

ConteneurCodecs vidéoAudioPrise en charge
MP4H.264, H.265, parfois AV1AAC, MP3Partout
WebMVP8, VP9, AV1Opus, VorbisNavigateurs uniquement
MKVPresque n'importe quoiAC-3, DTS, n'importe quoiLecteurs de bureau, pas les navigateurs
MOVH.264, H.265, ProResAAC, PCMApple, montage
AVIDivX, Xvid, MJPEGMP3, PCMWindows hérité

MKV est le permissif : très bien pour l'archivage, mauvais pour la diffusion, car un MKV valide peut contenir une combinaison qu'aucun navigateur n'ouvrira. MOV et MP4 partagent l'essentiel de leur structure, si bien que passer de l'un à l'autre ne demande souvent qu'une réécriture de l'index. Inspectez le fichier :

input.mp4
  Stream #0:0  Video  h264 (High)   1920x1080  30 fps  4200 kb/s
  Stream #0:1  Audio  aac  (LC)     48000 Hz   stereo   128 kb/s

Le mot qui suit « Video » est celui qui compte. Le mot « mp4 » ne vous apprend presque rien.

Quel codec se lit où

CodecBits à qualité égaleLicencesPrise en charge
H.264 (AVC)Référence, disons 100 %Pool de brevets, sous licence presque partoutUniverselle
H.265 (HEVC)50 à 65 %Pools concurrents, coûteux, non tranchéOui chez Apple, inégale dans les navigateurs
VP9Comparable au H.265Libre de redevancesChrome, Firefox, Edge, Android
AV130 à 50 %Libre de redevancesNavigateurs actuels, matériel récent

Le H.265 est techniquement solide et commercialement embarrassant : sa prise en charge se répartit donc selon les camps industriels plutôt que selon des critères techniques. L'AV1 compresse le mieux et encode bien plus lentement, parfois d'un ordre de grandeur, ce qui le destine à une vidéo encodée une fois et regardée souvent. Pour un public inconnu, le H.264 en MP4 reste la réponse, et Compresser une vidéo le vise.

Débit, résolution et fréquence d'images

Le débit, ce sont des bits par seconde de sortie, et il fixe à lui seul la taille du fichier : multipliez-le par la durée et vous avez le fichier.

1920 x 1080 x 30 fps x 3 bytes = about 186 MB per second raw
delivered at 4 Mb/s            = about 0.5 MB per second

Doubler la résolution quadruple le nombre de pixels, mais pas le nombre de bits nécessaires, car les pixels voisins d'une image plus grande se ressemblent davantage et se compressent mieux. Comptez deux à trois fois plus : diviser par deux la largeur et la hauteur figure donc parmi les moyens les moins coûteux de réduire un fichier, et c'est le rôle de Redimensionner une vidéo, tandis que Rogner une vidéo supprime purement et simplement des pixels. La fréquence d'images est plus douce, ajoutant 20 à 40 % en passant de 30 à 60 plutôt que 100 %, et Vitesse de la vidéo raccourcit plutôt la ligne de temps.

Trois façons de piloter le débit :

  • Le débit constant maintient un seul débit du début à la fin : les plans fixes gaspillent des bits, les mouvements rapides s'effondrent. Il convient aux liens dotés d'un plafond strict.
  • Le débit variable avec une cible fait la moyenne et laisse les scènes s'emprunter des bits. La taille est prévisible : employez-le quand la sortie doit tenir dans une limite.
  • La qualité constante, en général une valeur de CRF, fixe la qualité et laisse le débit aller où il doit. La taille est imprévisible, la qualité est régulière, et c'est le choix par défaut pour tout ce qui se regarde plutôt que se diffuse en flux.

Pour le H.264, l'échelle de CRF va de 0 à 51, plus bas étant meilleur : 18 est quasi indiscernable de la source, 23 est un défaut raisonnable, au-delà de 28 le mouvement s'effondre. L'échelle n'est pas commune aux codecs.

Images clés, et pourquoi une coupe est parfois gratuite

Une image I, ou image clé, est une image complète qui se décode toute seule. Une image P ne stocke que ce qui a changé depuis une image antérieure. Une image B prédit à partir d'une image antérieure et d'une image ultérieure, ce qui compresse le mieux et explique pourquoi les décodeurs retiennent parfois des images avant de les afficher.

Une image clé et ses dépendantes forment un groupe d'images, et les encodeurs web en placent une toutes les deux secondes environ. Coupez au milieu d'un groupe et les images survivantes renvoient à une image qui n'est plus dans le fichier, ce qui explique les deux modes de coupe. Copier les flux est instantané et sans perte, mais ne tombe que sur une image clé, si bien que le début peut dériver de la longueur d'un groupe au maximum ; réencoder place une image clé là où vous l'avez demandé, au prix de temps et de qualité. Découper une vidéo propose les deux ; copiez, sauf si l'image exacte compte.

Le réencodage coûte de la qualité parce que chaque passe avec perte jette ce que le modèle juge le moins visible. Encodez à nouveau et la seconde passe traite les artefacts de la première comme du vrai détail : elle les conserve et ajoute les siens, si bien que l'erreur s'accumule au fil des générations. Copiez les flux quand seul le conteneur change, et copiez l'image quand seul l'audio disparaît, ce que fait Supprimer l'audio d'une vidéo. Pivoter une vidéo peut poser un indicateur de rotation au lieu de tourner les pixels, même si les lecteurs qui l'ignorent affichent l'orientation d'origine. Quand les pixels doivent changer, changez tout en une seule passe.

La piste audio est l'autre moitié

L'audio est un flux distinct, avec son propre codec, sa fréquence d'échantillonnage et sa disposition des canaux, et c'est une raison fréquente pour laquelle un fichier ne se lit pas. Un navigateur qui décode volontiers l'image en H.264 peut ne pas décoder l'AC-3 ou le DTS en surround, ce qui donne du silence ou un échec complet sur tout le fichier. Les copies de disques en MKV échouent ainsi en permanence.

La fréquence d'échantillonnage indique à quelle cadence la forme d'onde a été mesurée : 44100 Hz venus du CD, 48000 Hz pour la norme vidéo. L'AAC en 48000 Hz stéréo est le choix sûr pour la diffusion, autour de 128 kb/s pour la parole et de 192 kb/s pour la musique. Extraire l'audio en sort une piste en MP3, WAV, AAC ou Opus.

Transformer une vidéo en GIF

Le GIF est un format d'image fixe de 1987 auquel l'animation a été greffée, sans véritable compensation de mouvement. Chaque image est compressée pour l'essentiel de son côté : cinq secondes peuvent donc atteindre plusieurs mégaoctets là où le même extrait en MP4 muet pèse deux ou trois centaines de kilooctets. Il est plafonné à 256 couleurs par image, dispose d'un seul bit de transparence, et n'a pas d'audio.

C'est sur la limite de couleurs que la qualité se gagne ou se perd. Une palette fixe générique fait apparaître des bandes dans les dégradés et impose un tramage appuyé, et ce bruit est proche de l'aléatoire : il se compresse donc mal et gonfle le fichier. Construire une palette à partir de l'extrait lui-même, puis y projeter les images, donne une meilleure image et souvent un fichier plus petit ; Vidéo vers GIF effectue cette passe. Gardez les GIF courts et étroits : deux ou trois secondes, 480 à 640 pixels de large, 10 à 15 images par seconde. Si la destination accepte la vidéo, envoyez un MP4 muet.

Des réglages qui fonctionnent pour le web

  • Du H.264 en MP4 avec de l'audio AAC pour tout ce qui doit simplement se lire.
  • Un CRF proche de 23, descendu à 20 pour des captures d'écran au texte fin, monté à 26 pour des images de fond.
  • Redimensionnez à la largeur d'affichage prévue, avant la compression plutôt qu'après.
  • Activez faststart, pour que l'index se place en tête et que la lecture démarre avant la fin du téléchargement.

Tout cela s'exécute dans le navigateur, sur votre propre machine : rien n'est envoyé et la limite est la mémoire, pas un quota serveur. Les tampons de décodage d'un long fichier 4K peuvent épuiser un onglet, alors coupez d'abord et redimensionnez ensuite.