videos tamaño recortar rapida pasar para pantalla normal imagen gratis grabar editar cortar como captura camara app iphone ffmpeg video-conversion .mov

tamaño - editar y cortar videos en iphone



el video capturado desde el iPhone se rota cuando se convierte a.mp4 usando ffmpeg (9)

Cuando intento cargar videos capturados desde mi iPhone en mi aplicación, el servidor realiza una conversión de .mov a .mp4 para que pueda reproducirse en otras plataformas. Sin embargo, el problema es que cuando grabo el video (en orientación vertical) y se convierte (usando ffmpeg) y luego se reproduce desde el servidor, parece que se gira. ¿Alguna idea?



Dependiendo de la versión de ffmpeg que tenga y de cómo esté compilada, una de las siguientes opciones debería funcionar ...

ffmpeg -vfilters "rotate=90" -i input.mov output.mp4

...o...

ffmpeg -vf "transpose=1" -i input.mov output.mp4


En aras de la exhaustividad, la razón por la que ocurre esto es que los iPhones solo capturan videos en una orientación fija. La orientación medida se registra en metadatos específicos de Apple.

El efecto es que Quicktime Player lee los metadatos y gira el video a la orientación correcta durante la reproducción, pero otro software (por ejemplo, VLC) no lo hace y lo muestra como orientado en los datos reales del códec.

Esta es la razón por la que rotate=90 (o vflip , o transpose , o etc.) funcionará para algunas personas, pero no para otras. Dependiendo de cómo se mantenga la cámara durante la grabación, la rotación necesaria podría ser de 90, 180 o incluso 270 grados. Sin leer los metadatos, solo estás adivinando cuánta rotación es necesaria y el cambio que corrige un video fallará por otro.


Entonces, yo también me encontré con este problema, y ​​aquí tengo $ 0.02 en él:

1.) algunos videos TIENEN metadatos de Orientación / Rotación, otros no: MTS (sony AVHCD) o los AVI que tengo - NO tengo una etiqueta de orientación. MOVs y MP4s (ipad / iphone o samsung galaxy note2) LO TIENEN.

you can check the setting via ''exiftool -Rotation file''. My videos often have 90 or 180 as the rotation.

2.) ffmpeg - independientemente de la página de manual con la etiqueta de metadatos, parece que NUNCA lo establece en el archivo de salida. - La etiqueta de rotación es SIEMPRE ''0''. lo reporta correctamente en la salida, pero nunca es correcto que exiftool lo reporte. - Pero oye - al menos está ahí y siempre 0.

3.) ángulos de rotación: si desea rotar +/- 90: transponer = 1 para las agujas del reloj 90, 2 ccw ahora si necesita 180 grados - solo agregue este filtro DOS VECES. recuerde, es una cadena de filtros que usted especifica. :-) - ver más abajo.

4.) gire y luego amplíe la escala: esto es complicado, ya que rápidamente entra en las infracciones del formato de salida MP4. Digamos que tienes un MOV 1920x1080. rotar 90 da 1080x1920 y luego se vuelve a escalar a -1: 720 -> 1080 * (720/1920) = 405 horiz Y 405 horizontales NO se puede dividir por 2 - ERROR. arregla esto manualmente FIJAR ESTO automáticamente - requiere un poco de trabajo de shell-script.

5.) escala y luego gira: puedes hacerlo de esta manera, pero luego terminas con 720x1280. asco Pero el ejemplo de filtro aquí sería: "-vf yadif = 1, scale = -1: 720, transpose = 1" Simplemente no es lo que quiero, pero podría funcionar bastante bien.

Poniéndolo todo junto: - NOTA - ''Etiqueta de Rotación intencionalmente INCORRECTA'', solo para demostrarlo - ¡no aparecerá TODO en la salida! Esto tomará la entrada, y la girará en 180 grados , ENTONCES LA ESCALA, restableciendo la etiqueta de rotación. - Por lo general, iPhone / iPad2 puede crear material girado de 180 grados. solo puedes dejar ''-datos de rotación = x'' fuera de la línea ...

/ usr / bin / ffmpeg -i input-movie.mov -timestamp 2012-06-23 08:58:10 -map_metadata 0: 0 -metadata Rotación = 270 -sws_flags lanczos -vcodec libx264 -x264opts me = umh -b 2600k - vf yadif = 1, transpose = 1, transpose = 1, scale = 1280: 720 -f mp4 -y output-movie.MP4

Tengo varios dispositivos, como un settop box, ipad2, note2, y convierto TODO mi material de entrada (sin importar si es mp4, mov, MTS, AVI) a 720p mp4, y hasta ahora TODOS los videos resultantes se reproducen correctamente (orientación, sonido) en cada dev.

Espero eso ayude.


FFMPEG cambió el comportamiento predeterminado para rotar automáticamente las fuentes de video con metadatos de rotación en 2015 . Esto fue lanzado como v2.7.

Si su versión de ffmpeg es v2.7 o más reciente, pero sus metadatos de rotación no se respetan, es probable que el problema esté utilizando una rotación personalizada basada en metadatos. Esto hará que la misma lógica se aplique dos veces, cambiando o cancelando la rotación.

Además de eliminar su rotación personalizada (recomendado), hay una opción para desactivar la rotación automática con -noautorotate .

ffmpeg -noautorotate -i input.mp4 ...

Esto también funcionará en algunas versiones anteriores.


Filmé el video con Ipad3 y estaba orientado al revés, lo que supongo que es la situación común de todos los dispositivos Apple en algunas versiones. Además de eso, el archivo MOV de 3 minutos de duración (1920x1090) tomó aproximadamente 500 Mb de tamaño, lo que hizo que no estuviera disponible para compartir fácilmente. Tuve que convertirlo a MP4, y analizando todos los subprocesos que he encontrado en , aquí está la cadena de código final para ffmpeg que he usado (ffmpeg ver. 2.8.4):

ffmpeg -i IN.MOV -s 960x540 -metadata:s:v rotate="0" -acodec libmp3lame OUT.mp4

Supongo que puedes dejar ''-metadata: s: v rotate = "0"'' si no necesitas el cambio de tamaño y el códec de audio. Tenga en cuenta que si cambia el tamaño del video, el ancho y la altura deberían dividirse completamente en 4.


Lo que también puede hacer es eliminar los metadatos específicos de QuickTime cuando gire el .mov . Esto asegurará que el video se gire de la misma manera en VLC y QuickTime

ffmpeg -i in.mov -vf "transpose=1" -metadata:s:v:0 rotate=0 out.mov

Aquí está la documentación sobre la opción -metadata (de http://ffmpeg.org/ffmpeg.html ):

-metadata[:metadata_specifier] key=value (output,per-metadata)

Establecer un par de clave / valor de metadatos.

Se puede proporcionar un metadata_specifier opcional para establecer metadatos en secuencias o capítulos. Consulte la documentación de -map_metadata para más detalles.

Esta opción anula el conjunto de metadatos con -map_metadata. También es posible eliminar metadatos utilizando un valor vacío.

Por ejemplo, para configurar el título en el archivo de salida:

ffmpeg -i in.avi -metadata title="my title" out.flv

Para configurar el idioma de la primera transmisión de audio:

ffmpeg -i INPUT -metadata:s:a:1 language=eng OUTPUT


Para incluir en las páginas web mis videos en formato retrato de iPhone, acabo de descubrir la siguiente receta para obtener archivos .mp4 en la pantalla retrato.

Paso 1: en QuickTime Player, exporte su archivo a 480p (supongo que 720p o 1080p también funcionarán). Obtienes un archivo .mov de nuevo.

Paso 2: tome el nuevo archivo en QT Player y expórtelo a "iPad, iPhone ...". Obtienes un archivo .m4v.

Paso 3: Estoy usando Miro Video Converter, pero es probable que cualquier convertidor fácilmente disponible funcione, para obtener su archivo .mp4.

Funciona como un encanto (de largo aliento).


Usa el filtro vflip

ffmpeg -i input.mov -vf "vflip" output.mp4

Rotar no funcionó para mí y la transposición = 1 giraba 90 grados