Tengo tres archivos .mov con video en Apple ProRes (apcn) y audio en PCM S24 LE (in24), de idéntica longitud y dimensiones (1920x1080), frame rate (23.976024) y cada uno con la misma pista de audio. Me gustaría:
convertir a video H.264 y audio AAC, conservando muy buena calidad (para exhibición pública), y
generar un solo video panorámico en H.264/AAC, es decir, tendrá 1920 px por 3 de ancho y 1080 px de alto.
Para generar la pantalla panorámica que he resuelto, puedo usar este comando, suponiendo que haya preparado los archivos mp4 individuales:
ffmpeg -i left.mp4 -i centre.mp4 -i right.mp4
-filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3" triple.mp4
Pregunta principal:
¿Debo hacer el proceso en dos pasos: (a) convertir archivos, (b) crear un archivo de pantalla ancha, o eso significa que el video de pantalla ancha se vuelve a codificar, por lo tanto, es de peor calidad? Me gustaría mantener los archivos separados, así que si no hay otro impacto, preferiría hacerlo en dos pasos. Si debo hacer la conversión a H.264 al mismo tiempo que hago la pantalla ancha, ¿cómo combino los diferentes comandos?
Sub-preguntas:
Al preparar la pantalla panorámica, me encontré con un método alternativo que se overlay
muestra a continuación. ¿Hay alguna ventaja de cualquier manera? Parece que overlay
debería ser más lento, pero en las pruebas parecía lo mismo.
ffmpeg -i left.mp4 -i centre.mp4 -i right.mp4 -filter_complex "[0:v:0]pad=iw*3:ih[bg]; [bg][1:v:0]overlay=w[leftcentre]; [leftcentre][2:v:0]overlay=w*2" triple.mp4
Al preparar la pantalla panorámica, creo que ffmpeg elige el audio de solo uno de los archivos de entrada. Dado que el audio es el mismo en cada uno, no me importa cuál. ¿Es así o es de alguna manera combinarlos?
¿Tengo razón al pensar que un término como [1:v:0]
en la filter_complex
expresión significa 'segunda entrada, solo primera pista de video'?
Aquí está mi comando para convertir los archivos .mov, que parece funcionar como se desea. ¿Hay algo obviamente malo en ello?
ffmpeg -i left.mov -c:v libx264 -preset medium -tune film -crf 16 -c:a aac -b:a 256k left.mp4
En cuanto a la calidad, es mejor usar los MOV originales, pero si el apilamiento basado en MP4 se ve bien, ese es el árbitro final.
ffmpeg -i left.mov -i centre.mov -i right.mov
-filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3"
-c:v libx264 -tune film -crf 16 -b:a 256k triple.mp4
Al usar los originales, no importa si lo hace en un paso o en dos. Para fines de simplificación, lo haría en dos, entonces las dos codificaciones no compiten por la memoria o la CPU.
Los stack
filtros son algo más eficientes. Requieren que todas las entradas tengan el mismo tamaño en la dimensión normal a la dirección de unión, es decir, la misma altura para hstack. Overlay es un filtro genérico, por lo que no lo es. Además, los filtros de pila se congelarán en el primer y último cuadro de las entradas que comiencen tarde o terminen antes.
En los archivos digitales, el audio y el video son independientes, es decir, existen dentro del mismo archivo y se sincronizan a través de marcas de tiempo, pero lógicamente son entidades distintas. ffmpeg se basa en las opciones -map para seleccionar secuencias para incluirlas en la salida. En ausencia de cualquier opción de mapa, elige un audio, el "mejor", de entre todas las entradas. Consulte https://ffmpeg.org/ffmpeg.html#Stream-selection
[1:v:0]
... " significa 'segunda entrada, solo la primera pista de video'? " --> Sí.
Se ve bien. La idoneidad del tune
valor depende del material.
hstack
usarlos para crear un .mp4 de triple ancho. ¡Me sorprende ver que el tamaño del archivo es más pequeño para el archivo de ancho triple que cualquier archivo .mp4 individual! Bitrate Viewer me muestra que el archivo de triple ancho tiene una tasa de bits significativamente más baja (un promedio de 12 Mbps en lugar de 18 Mbps) a pesar de tener tres veces el ancho. ¿Está recodificando usando algunos valores predeterminados y necesito usar algunos argumentos para controlar el nivel de calidad de esa recodificación?-crf 16
proporcionar la calidad adecuada para mis archivos .mp4 individuales de 1920x1080, ¿debería seguir usándolo para crear mi .mp4 de pantalla ancha apilada o necesito reducir ese valor para obtener la misma calidad en un archivo de 5760x1080? ?
Pham Don
Rory
Rory
ffmpeg -i 1920_LEFT.mov -i 1920_CENTRE.mov -i 1920_RIGHT.mov -filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3" -c:v libx264 -tune film -crf 16 -b:a 256k myOutputFile.mp4
Rory
Michael Liebmann