¿Cuál es el mejor formato de vídeo para la concatenación?

¿Cuál es el mejor formato de vídeo para la concatenación?

He estado luchando con archivos .mp4 durante aproximadamente 2 días, tratando de concatenar una serie de aproximadamente 20 en 1 solo archivo. Cualquier diferencia entre los archivos es una pesadilla. Algunos archivos tienen diferentes fps y otros, diferentes proporciones.

Quería saber si mp4 es el formato que debería usar o si existe un formato mejor y fácil de usar para la concatenación. El tiempo no es un problema, simplemente necesito un formato de calidad relativamente alta que concatene en la mayoría de las circunstancias.

Si esto no existe, cualquier sugerencia sobre cómo lidiar con las propiedades enormemente variables de los archivos mp4 (no estoy del todo seguro de qué puede diferir aparte de los fps y la proporción entre videos que pueden causar un problema) sería excelente.

Estoy usando ffmpeg para intentar concatenar los archivos. Primero intenté usar el demuxer y luego el filtro concat, sin embargo, encuentro el filtro concat muy desalentador y no sé cómo usarlo.

Cada video tiene audio, algunos tienen imágenes fijas y otros en movimiento.

Respuesta1

Los archivos multimedia son complejos, por lo que la concatenación tiene varios requisitos:

  • Todos los segmentos que se van a concatenar deben tener el mismo número y tipo de secuencias.
  • Todas las transmisiones deben tener los mismos parámetros.

Dado que cada entrada puede variar en cualquier parámetro arbitrario, recomiendo usar el filtro concat. Tendrá que ajustar cada entrada a un conjunto común de parámetros mediante filtros. El formato de entrada no importa mucho porque de todos modos vas a volver a codificar todo.

Ejemplo básico y genérico donde main.mp4tiene video y audio y end.mp4tiene video y no audio. Se supone que todos los demás parámetros son diferentes. Los filtros utilizados aquí son: anullsrc, scale, pad, setsar, fps, format, aformat y concat.

ffmpeg -i main.mp4 -i end.mp4 -f lavfi -t 0.1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,format=yuv420p[v0];[1:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,format=yuv420p[v1];[0:a]aformat=channel_layouts=stereo:sample_rates=44100[a0];[v0][a0][v1][2:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac -movflags +faststart output.mp4

Hay varias formas de hacer esto y es posible que deba realizar ajustes según sus entradas o para satisfacer sus requisitos.

información relacionada