Quiero usar Ubuntu y preferiblemente paquetes estándar como ffmpeg para rotar un archivo de video .3gp 90 grados en cualquier dirección. Preferiblemente una línea de comando o script de Python.
¿Cómo puedo hacer eso?
Quiero usar Ubuntu y preferiblemente paquetes estándar como ffmpeg para rotar un archivo de video .3gp 90 grados en cualquier dirección. Preferiblemente una línea de comando o script de Python.
¿Cómo puedo hacer eso?
Respuestas:
Al usar VLC , puede rotar el video yendo a Herramientas >> Preferencias ...
Y seleccione "Todos" para mostrar la configuración. Luego vaya a: Video >> Filtros >> Rotar
Después de establecer el grado que desea, puede rotar yendo a Herramientas> Efectos y filtros> Efectos de video> Geometría ...
el que probé es mp4 pero creo que VLC también puede soportar 3gp. espero que esto ayude. :)
Desde la línea de comandos, con ffmpeg:
ffmpeg -i input.3gp -filter:v transpose=1 \
-c:v libx264 -preset veryfast -crf 22 \
-c:a copy \
-metadata:s:v rotate="" \
output.3gp
transpose=1
rotará el video 90 grados en sentido horario; para girar en sentido antihorario, use transpose=2
. Consulte la documentación de transposición para obtener un poco más de información.
-metadata:s:v rotate=""
eliminará cualquier metadato de rotación de flujo de video existente; de lo contrario, ffmpeg
lo copiará, lo que puede hacer que su jugador aplique rotación adicional no deseada.
Para obtener información sobre la configuración de codificación de video aquí, consulte esta guía de codificación H.264 y la guía de codificación AAC si desea volver a codificar el audio en lugar de copiar el flujo .
Resolví un problema similar: tenía un .MOV que estaba invertido (es decir, rotado 180 grados) que quería corregir.
En mi sistema Ubuntu 14.04, ejecuté avconv
esencialmente las mismas opciones de línea de comandos que se indican ffmpeg
en la respuesta de evilsoup . Aparentemente, no admite una transpose
opción de rotación de 180 grados, así que hice el giro de 90 grados en el sentido de las agujas del reloj (es decir, transpose=1
) dos veces.
Cuando probé opciones mínimas, recibí un mensaje en el sentido de que:
encoder 'aac' is experimental and might produce bad results.
Add '-strict experimental' if you want to use it.
y el archivo de salida era de longitud cero, así que agregué el -strict experimental
.
Las líneas de comando que funcionaron fueron:
avconv -i IMG_orignl.MOV -filter:v 'transpose=1' -strict experimental IMG_interm.MOV
avconv -i IMG_interm.MOV -filter:v 'transpose=1' -strict experimental IMG_result.MOV
El resultado fue satisfactorio, con efectos secundarios inexplicables:
No es que me queje: son deseables; Simplemente no entiendo por qué surgieron ...
avconv
líneas de comando en su totalidad, y no solo las diferencias con el ffmpeg
comando. Su respuesta debe ser autosuficiente; la otra respuesta podría desaparecer. (3) ¡Buena suerte!
-filter:v transpose=1 …
.
Ha habido algunos cambios en libav desde el momento en que esta pregunta se respondió originalmente. En un intento por mantener esto actualizado y útil, proporcionaré lo siguiente:
Puede lograr esto con versiones recientes de ffmpeg
y avconv
utilizando el filtro de video de transposición.
avconv -i inputfile -vf transpose=clock outputfile
para rotación en sentido horario.
en ffmpeg la sintaxis es la misma.
ffmpeg -i inputfile -vf transpose=clock outputfile
donde inputfile es su archivo de video de entrada compatible y outputfile es su archivo de salida deseado.
Para rotación en sentido antihorario, reemplace el reloj con cclock
Aquí hay un extracto de la documentación:
‘cclock_flip’
Rotate by 90 degrees counterclockwise and vertically flip. (default)
‘clock’
Rotate by 90 degrees clockwise.
‘cclock’
Rotate by 90 degrees counterclockwise.
‘clock_flip’
Rotate by 90 degrees clockwise and vertically flip.
Fuentes:
https://libav.org/avconv.html#transpose
https://ffmpeg.org/ffmpeg-filters.html#transpose-1
Pruebas en Ubuntu 14.04.5 LTS, Ubuntu 16.04, Ubuntu 18.04
ffmpeg
funcionó para mí (no lo intenté avconv
)
ffmpef
incluyen muchos argumentos innecesarios, ¡gracias!