ffmpeg para convertir y fusionar 3 videos en un solo video de pantalla ancha

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:

  1. Al preparar la pantalla panorámica, me encontré con un método alternativo que se overlaymuestra a continuación. ¿Hay alguna ventaja de cualquier manera? Parece que overlaydeberí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

  2. 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?

  3. ¿Tengo razón al pensar que un término como [1:v:0]en la filter_complexexpresión significa 'segunda entrada, solo primera pista de video'?

  4. 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

¿Puedo preguntar cómo va tu proyecto? Estoy planeando hacer lo mismo, pero no sé si lo que quiero hacer funcionará. Estoy planeando usar dos osmo pocket y hacer clic en grabar al mismo tiempo y uno a la izquierda y otro a la derecha grabando al mismo tiempo. Creo que es bastante similar al tuyo de tener una visión más amplia. ¿Puedo preguntarte si tienes una muestra tuya o cómo resultó la tuya? Muchas gracias y espero saber de todos.
¡Hola! El proyecto funcionó bien, usé los comandos ffmpeg similares a los de arriba para hacer un solo archivo de película de pantalla ancha. Usé esto para reproducirlo dividido en tres proyectores usando un Matrox TripleHead2Go.
fwiw este es el comando que terminé usando (creo):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
Para tu información, mi fuente no fueron grabaciones de varias cámaras, sino varias horas de grabaciones de una cámara que se había editado en una obra de arte de múltiples pantallas que se proyectaría usando tres proyectores simultáneamente. Estaba uniendo los tres videos en uno solo de pantalla ancha para asegurar que estuvieran sincronizados exactamente cuando se reprodujeran, ya que estarían reproduciéndose continuamente durante días en un entorno de galería sin nadie para verificar la sincronización. Por lo tanto, usamos un Matrox TripleHead2Go para dividir el video de pantalla ancha en tres salidas separadas pero sincronizadas para los proyectores. Solo había una transmisión de audio.
Esto realmente no responde la pregunta. Si tiene una pregunta diferente, puede hacerla haciendo clic en Preguntar . También puede agregar una recompensa para llamar más la atención sobre esta pregunta una vez que tenga suficiente reputación . - De la revisión

Respuestas (1)

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.

  1. Los stackfiltros 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.

  2. 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

  3. [1:v:0]... " significa 'segunda entrada, solo la primera pista de video'? " --> Sí.

  4. Se ve bien. La idoneidad del tunevalor depende del material.

¡Muchas gracias! Acabo de hacer esto en dos pasos, crear archivos .mp4 y luego hstackusarlos 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?
Para que quede claro: ¿usó MP4 o MOV como fuente para el apilamiento?
Usé los .mp4s. Lo hará con los archivos .mov en su lugar.
Pequeño seguimiento: si he decidido -crf 16proporcionar 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? ?
Cuanto mayor sea la resolución, más relajado puede ser el CRF (hasta cierto punto), pero parece que está obteniendo el resultado opuesto. No mire el tamaño del archivo, haga una verificación subjetiva.