L’essentiel
Le capteur de l’appareil photo de votre téléphone est fixé dans le boîtier en orientation paysage. Quand vous filmez en tenant le téléphone à la verticale, le capteur enregistre quand même une image en paysage ; le téléphone se contente d’écrire dans le fichier un indicateur qui dit « afficher avec une rotation de 90° ». Tous les lecteurs du téléphone respectent cet indicateur. Ailleurs, certains logiciels (anciens éditeurs, certains lecteurs web, certaines chaînes de traitement à l’envoi) l’ignorent ou le suppriment, et la vidéo se lit couchée sur le côté. Remettre l’indicateur en place est une modification de métadonnées : elle prend une fraction de seconde quelle que soit la taille du fichier et ne réencode rien.
Ce qu’est vraiment cet indicateur
Un fichier MP4 ou MOV est une arborescence de boîtes. Celle qui décrit la présentation d’une piste vidéo s’appelle tkhd (track header) et contient une matrice de transformation 3 × 3 (neuf nombres, 36 octets) que le lecteur applique à chaque image avant de l’afficher. Pour une vidéo sans rotation, c’est la matrice identité. Pour une vidéo filmée à la verticale avec un téléphone, c’est une rotation de 90°. Les pixels du fichier sont en paysage ; la matrice dit « tournez-les ». Android écrit la même information sous la forme d’une valeur rotation distincte ; ffmpeg affiche les deux sous la forme rotate: 90 dans les métadonnées du flux.
Ce choix de conception est délibéré. Faire pivoter les pixels eux-mêmes pendant l’enregistrement coûterait un passage supplémentaire complet dans l’encodeur pour chaque image, sur batterie. Écrire neuf nombres ne coûte rien. C’est le même raisonnement que l’orientation EXIF des photos, et l’échec est le même : tout logiciel qui ne lit pas la balise affiche l’orientation brute.
Qui le supprime
- Les anciens éditeurs et lecteurs de bureau, écrits avant que les téléphones filment en vertical. VLC et QuickTime respectent la matrice depuis des années ; certains systèmes vidéo d’entreprise et d’anciennes versions du Lecteur Windows Media, non.
- Les transcodeurs qui copient le flux vidéo mais reconstruisent le conteneur. Un outil qui annonce « sans réencodage, sans perte » peut tout de même écrire un nouveau
tkhdavec une matrice identité. Les pixels survivent ; l’instruction, non. - Certains envois sur le web. Un site qui remultiplexe à l’envoi peut perdre la balise ; un site qui réencode intègre en général correctement la rotation.
- La concaténation. Assembler un clip en portrait et un clip en paysage dans un seul fichier laisse la piste combinée avec une seule matrice ; l’une des deux moitiés sera mal orientée.
Deux corrections, dont une gratuite
Réécrire la matrice. On règle la matrice tkhd (ou le champ de rotation) sur la valeur qui fait s’afficher la vidéo correctement. C’est l’écriture de quelques dizaines d’octets dans un fichier qui peut peser plusieurs gigaoctets ; les flux vidéo et audio sont recopiés sans modification. Une demi-seconde, aucune perte de qualité, même taille de fichier. C’est ce que fait par défaut Pivoter une vidéo : l’outil lit le fichier sur votre appareil, écrit l’en-tête corrigé et vous rend le fichier. Comme rien n’est décodé, il traite un enregistrement de 4 Go aussi vite qu’un fichier de 4 Mo.
Réencoder avec la rotation intégrée. On décode chaque image, on fait pivoter les pixels, on encode à nouveau. Ce n’est nécessaire que si l’on sait que le logiciel de destination ignore la matrice et qu’on ne peut pas le changer : un lecteur d’affichage dynamique, un ancien CMS. Cela prend autant de temps que la durée de la vidéo (ou plus sans encodeur matériel), et cela coûte une génération de qualité. Pivoter une vidéo propose cette méthode en seconde option, avec l’encodeur WebCodecs du navigateur, et l’indique dans l’interface parce que c’est la voie coûteuse.
Pourquoi la correction « gratuite » ne marche pas toujours
Si la vidéo s’affiche couchée dans un seul programme et correctement dans les autres, ce programme ignore la matrice et la réécrire n’y changera rien : seule l’intégration de la rotation fonctionnera. Si elle s’affiche couchée partout, la matrice a été perdue, et la réécrire est la solution. Un test rapide : ouvrez le fichier dans un navigateur récent (Chrome, Safari et Firefox respectent tous la balise). Couchée dans le navigateur → matrice erronée ou absente → réécrivez-la. Correcte dans le navigateur, couchée dans l’autre programme → le problème vient du programme → intégrez la rotation.
Pièges voisins
- Les miniatures. Une image extraite d’une vidéo couchée sort couchée elle aussi, car l’image est prise dans le flux, pas dans l’affichage. Corrigez d’abord la vidéo, puis extrayez l’image.
- La coupe. Couper une vidéo sans réencodage préserve la matrice ; une coupe faite avec un outil qui remultiplexe peut ne pas la conserver. Si un extrait coupé revient couché, l’outil de coupe a supprimé la balise, et une réécriture de la matrice la remet en place.
- Les vidéos en miroir de la caméra frontale. Il s’agit d’un autre indicateur (une symétrie horizontale dans la même matrice), et la même correction s’applique.