domingo, 8 de noviembre de 2015

Rotar un video

Desde hace tiempo los smartphones han sustituido, al menos en mi caso, a las cámaras de fotos/videos. Pero el problema de estos telefonillos es que nunca se acuerda uno (también, en mi caso) de en qué postura (vertical u horizontal) hay que ponerlo para sacar el video y que quede bien. El resultado es que más de una y más de dos veces el video me sale 'girado'.

Hombre, para visualizarlo, tanto en la pantalla del smartphone como, si lo descargo, en el PC, no es problema, por ejemplo con el reproductor VLC basta con ir a Herramientas-Efectos y Filtros-Efectos de Video-Geometría-Rotar y darle el giro apropiado. Pero si lo quiero guardar con esa configuración, ya rotado, me armo un pequeño lío. 
Así que vamos a ver cómo hacerlo 'permanentemente'

Un procedimiento sencillo es hacerlo con Avidemux. Pero el problema es que el Avidemux (Qt), que tengo instalado, desde que dejó de estar en los repos oficiales de Debian (ahora está en los www.deb-multimedia.org) parece que anda regular, tiene problemas de traducción, etc. Pero bueno, se haría así:
- Abrir el video en Avidemux

- Ir a Video-Filtros-Transform, ahí elegir Rotate (OJO, pone 'Bitrate') y, tras doble clic, el ángulo que quieres rotar (90º, 180º o 270º, en sentido anti-horario) (OJO, en mi Avidemux esto también está mal, y hay que ir a ciegas), para que se añada. Cierras esa ventana
- Ahora, en Video-Output, pinchas en 'Copy', para cambiarlo y que se recodifique, y eliges con qué codificador hacerlo.
(En mis pruebas, si lo dejas en 'Copy', y no recodificas, queda igual, sin rotar)
- Y solo queda ir a File-Save, y guardar el video, rotado, que se genera.
Pero como esto era un lío, busqué un sistema más claro. Este:

Rotar un video, por consola, con ffmpeg
Es sencillisimo: abres la consola en la carpeta donde tengas guardado el video original (que supongamos que se llama, para ser original... video.mp4) y escribes una orden como esta:
ffmpeg -i video.mp4 -vf 'transpose=1' video_rotado.mp4
y, en un ratito, te producirá un video rotado 90º a la derecha (en el sentido de las agujas del reloj). Esto es lo que se le indica la opción 'transpose=1'. (si no funciona, poner "transpose=1")
Las posibilidades del modificador 'transpose=x' son...
'transpose=0' rota 90º en el sentido contrario de las agujas del reloj y giro vertical (por defecto).
'transpose=1', como se ha dicho, rota 90º en el sentido de las agujas del reloj. 
'transpose=2' rota 90º en el sentido contrario a las agujas del reloj. 
'transpose=3' rota 90º en el sentido de las agujas del reloj y giro vertical.
Y si, por ejemplo lo que queremos es hacer un volteo horizontal, escribiremos lo siguiente:
ffmpeg -i video.mp4 -vf 'transpose=1, transpose=1' video_rotado.mp4
pero es más elegante hacerlo así...
ffmpeg -i entrada.avi -vf "hflip" salida.avi
Y solucionado. Como se ve, con ffmpeg es muy fácil girar un video. Si acaso, solo es cuestión de hacer algunas pruebas para cogerle el tranquillo.

No hay comentarios:

Publicar un comentario