ffmpeg - parameter - Girar videos mp4 sin recodificar
ffmpeg wiki (5)
Esta respuesta es simplemente un resumen de los comentarios proporcionados por LordNeckbeard.
Rotando sin codificar
Girar sin volver a codificar no es posible a menos que:
- tu entrada es MJPEG
- giras en la reproducción
Gire con la codificación utilizando el ffmpeg correcto
Para entender correctamente los pasos necesarios para esto, uno debe comenzar por leer o al menos hojear esta pregunta:
¿Cuáles son las diferencias y similitudes entre ffmpeg, libav y avconv?
Resumen: avconv es una bifurcación de ffmpeg, el mantenedor de debian eligió avconv, usted debe compilar el ffmpeg correcto desde la fuente.
El siguiente paso sería compilar el ffmpeg correcto de la fuente como se detalla aquí:
Guía de compilación de ffmpeg para Debian
El último paso es usar los comandos que se encuentran en otras publicaciones:
¿Cómo voltear un video 180 ° (vertical / boca abajo) con FFmpeg? o Rotar videos con FFmpeg
Resumen: ffmpeg -vfilters "rotate = 90" -i input.mp4 output.mp4
Estoy buscando una manera de rotar videos grabados con mi Nexus 4 en mi sistema Debian Wheezy. Los videos se graban en modo vertical y me gustaría rotarlos al modo horizontal. Preferiblemente la rotación es conducida por la línea de comando.
He encontrado varias preguntas anteriores que sugieren una buena solución, pero parece que no consigo hacer que funcione.
Para empezar hubo esta pregunta: Rotación de videos con FFmpeg
Pero indica que ffmpeg está desactualizado y que debería usar avconv. Encontré esta pregunta detallando el camino a seguir. https://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv
Esto me hizo usar el siguiente comando:
avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4
Sin embargo, esto es laboriosamente lento (la última prueba me llevó más de 6 horas por menos de 3 minutos de grabación) y no da como resultado una película reproducible. También recibo un error en el registro de salida que indica la velocidad de Mb> límite de nivel.
¿Hay algún problema aquí con la recodificación? ¿Debería volver a codificar los videos de mi teléfono a otra codificación más "viable" antes de aplicar las rotaciones? ¿O me estoy perdiendo otro punto importante?
Gracias por adelantado
Hay varias cosas que has tocado en tu pregunta:
- Casi no hay posibilidad de que puedas rotar sin volver a codificar. La excepción a esa regla (códec MJPEG) ya se ha señalado, pero es poco probable que la esté utilizando, por lo que va más allá del alcance de esta pregunta. Mencionaré que la razón de esta capacidad es que JPEG se puede convertir a través de metadatos. Por lo tanto, si puede encontrar un contenedor que tenga la rotación de metadatos, podrá rotar, pero ninguno existe (o está lo suficientemente extendido) hasta el momento.
- Si le tomó horas para rotar y volver a codificar 3 minutos del video, entonces el problema puede estar en una resolución enorme . Y me refiero enorme ! ¿Puede por favor proporcionar la salida de
avprobe original.mp4
para que se pueda determinar? - Los debates de Libav contra FFmpeg son muy contraproducentes (se puede ver por la cantidad de fondos publicados aquí). Básicamente, lo que sucedió fue una división del proyecto con algunos desarrolladores que iban de un lado a otro, el hecho de que el proyecto FFmpeg haya logrado mantener el nombre es solo una casualidad y no tiene sentido decir que un proyecto es original y otro es un error. Las diferencias entre los proyectos son principalmente en el estilo de desarrollo y en la filosofía. Si caracterizas a FFmpeg como más Open Source y Libav como más Software Libre, no estarías tan equivocado. La gente racional espera que, con el tiempo, los desarrolladores lleguen a su punto de vista, y quizás no fusionen los proyectos, sino que cooperen en mayor medida. Cuando Ubuntu salió originalmente, en cada chat de Debian GNU / Linux había mensajes enormes en la línea de "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡NO es Debian !!!!!!!! otro.
Rotación = 0 solucionado mi problema. Comencé a grabar video en modo vertical, me di cuenta de mi error e inmediatamente volqué mi teléfono a horizontal para continuar grabando. Mi iPhone había marcado el video como retrato de todo el video.
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4
Arreglado.
Si solo desea cambiar los metadatos para que los reproductores multimedia que consideran que la bandera reproduzca el archivo rotado, intente algo como:
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
como se encuentra en otro lugar en .
FFmpeg
y programas similares cambian los metadatos incluso con la opción -map_metadata
. exiftool
puede leer la matriz de rotación y el indicador de rotación, pero no puede escribirlo.
Para obtener una verdadera rotación sin pérdidas (incluidos los metadatos), no pude encontrar una solución, así que agarré un editor hexadecimal (por ejemplo, HxD ) y analicé los archivos de video rotados.
Rotación sin pérdida verdadera de MP4:
- abra mp4 con el editor hexadecimal y busque
vide
para encontrar los metadatos de la pista de video - algunas filas arriba (para mis archivos en su mayoría 9, a veces 12) debería ver
trak.../tkhd
- en el medio debe haber un signo
@
(HEX 40) - En las dos filas anteriores se almacena la matriz de rotación.
sin rotación:
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
180 °:
FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
90 ° cw:
00 00 00 00 00 01 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
90 ° ccw:
00 00 00 00 FF FF 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
Modifique el archivo a medida que lo necesite, y debe rotarse en los jugadores que admiten la bandera de rotación (la mayoría de los jugadores actuales lo hacen).
En caso de que su video contenga audio estéreo, esto obviamente no se cambia, por lo que en caso de que quiera que el sonido coincida con la rotación del video (180 °), necesita cambiar los canales izquierdo y derecho.