En resumen
El sensor de la cámara de tu teléfono está fijado al cuerpo en orientación horizontal. Cuando grabas con el teléfono en vertical, el sensor sigue registrando un fotograma horizontal; el teléfono simplemente escribe en el archivo una marca que dice “muestra esto girado 90°”. Todos los reproductores del teléfono respetan esa marca. Algunos programas en otros sitios (editores antiguos, ciertos reproductores web, algunos flujos de subida) la ignoran o la eliminan, y el resultado es un video que se reproduce de lado. Volver a poner la marca es una edición de metadatos: lleva una fracción de segundo sea cual sea el tamaño del archivo y no recodifica nada.
Qué es exactamente la marca
Un archivo MP4 o MOV es un árbol de cajas. La que describe cómo se presenta una pista de video se llama tkhd (track header) y contiene una matriz de transformación de 3 × 3 (nueve números, 36 bytes) que el reproductor aplica a cada fotograma antes de dibujarlo. En un video sin girar, la matriz es la identidad. En un video grabado en vertical con un teléfono, es una rotación de 90°. Los píxeles del archivo son horizontales; la matriz dice “gíralos”. Android escribe la misma información como un valor rotation aparte; ffmpeg muestra ambos como rotate: 90 en los metadatos del flujo.
Este diseño es intencionado. Girar los píxeles reales durante la grabación costaría una pasada completa adicional por el codificador en cada fotograma, con batería. Escribir nueve números no cuesta nada. Es el mismo razonamiento que hay detrás de la orientación EXIF de las fotos, y falla de la misma manera: cualquier programa que no lea la etiqueta muestra la orientación en bruto.
Quién la elimina
- Editores y reproductores de escritorio antiguos, escritos antes de que los teléfonos grabaran video en vertical. VLC y QuickTime respetan la matriz desde hace años; algunos sistemas de video corporativos y versiones antiguas del Reproductor de Windows Media no.
- Transcodificadores que copian el flujo de video pero reconstruyen el contenedor. Una herramienta que dice “sin recodificar, sin pérdida” puede escribir igualmente un
tkhdnuevo con una matriz identidad. Los píxeles sobreviven; la instrucción, no. - Algunas subidas web. Un sitio que vuelve a multiplexar al subir puede perder la etiqueta; un sitio que recodifica suele aplicar la rotación correctamente a los píxeles.
- Concatenación. Unir un clip vertical y otro horizontal en un solo archivo deja la pista combinada con una sola matriz; una de las dos mitades saldrá mal.
Dos arreglos, y uno es gratis
Reescribir la matriz. Ajusta la matriz de tkhd (o el campo de rotación) al valor que hace que el video se vea bien. Es una escritura de unas pocas decenas de bytes en un archivo que puede ocupar gigabytes; los flujos de video y audio se copian sin tocarlos. Medio segundo, sin pérdida de calidad, mismo tamaño de archivo. Es lo que hace Girar video por defecto: lee el archivo en tu dispositivo, escribe la cabecera corregida y te devuelve el archivo. Como no se decodifica nada, funciona igual de rápido con una grabación de 4 GB que con una de 4 MB.
Recodificar con la rotación aplicada a los píxeles. Decodificar cada fotograma, girar los píxeles y volver a codificar. Solo es necesario cuando se sabe que el destino ignora la matriz y no puedes cambiarlo, como un reproductor de cartelería digital o un gestor de contenidos antiguo. Tarda lo que dura el video (o más sin codificador por hardware) y supone una generación de pérdida de calidad. Girar video ofrece esto como segunda opción, con el codificador WebCodecs del navegador, y lo indica en la interfaz porque es la vía costosa.
Por qué el arreglo “gratis” a veces no funciona
Si el video se reproduce de lado en un programa y bien en los demás, ese programa ignora la matriz y reescribirla no servirá; solo funcionará aplicar la rotación a los píxeles. Si se reproduce de lado en todas partes, la matriz se perdió, y reescribirla es la solución. Una prueba rápida: abre el archivo en un navegador actual (Chrome, Safari y Firefox respetan la etiqueta). De lado en el navegador → la matriz es incorrecta o falta → reescríbela. Bien en el navegador y de lado en el otro programa → el problema es el programa → aplica la rotación a los píxeles.
Trampas relacionadas
- Miniaturas. Un fotograma extraído de un video de lado también sale de lado, porque la imagen se toma del flujo y no de lo que se muestra en pantalla. Arregla primero el video y después extrae el fotograma.
- Recortes. Recortar sin recodificar conserva la matriz; recortar con una herramienta que vuelve a multiplexar puede que no. Si un clip recortado vuelve tumbado, el recortador eliminó la etiqueta, y reescribir la matriz la recupera.
- Video espejado de la cámara frontal. Es una marca distinta (una inversión horizontal en la misma matriz) y se aplica el mismo arreglo.