La concatenación de videos con ffmpeg produce video silencioso cuando el primer video no tiene pista de audio


3

Tengo 3 archivos mp4:

  • 1.mp4 - Tiene video, no audio
  • 2.mp4 - Tiene video y audio
  • 3.mp4 - Tiene video y audio

He creado un archivo de clips (clips.txt) para la concatenación:

file '1.mp4'
file '2.mp4'
file '3.mp4'

Ejecuto la siguiente línea de comando:

ffmpeg -f concat -i "clips.txt" -c:a aac -b:a 160k -y "out.mp4"

El archivo que se produce tiene video pero no audio, probablemente porque 1.mp4 no tiene una pista de audio.

Si reorganizo clips.txt para que 1.mp4 no sea el primero, out.mp4 tiene una pista de audio.

¿Hay alguna manera de forzar a ffmpeg a usar audio? Supongo que tendría que producir una pista de audio silenciosa para cualquier video silencioso.

¡Gracias!


o agregue una pista silenciosa primero a la que no tiene audio, vea stackoverflow.com/questions/11779490/… para algunas ideas
Psycogeek

Eso era lo que estaba pensando que tendría que hacer. Esperaba una solución más limpia, pero decidí que me limitaría a eso.
Phil

Respuestas:


6

Para cualquier persona que tropiece con esto y quiera lograr lo mismo que yo, lo resolví de la siguiente manera:

ffmpeg -i "1.mp4" -f lavfi -i aevalsrc=0 -shortest -y "new_1.mp4"

Lo que esto dice es:

  • Tome 1.mp4 (que es el videoclip sin audio) (-i "1.mp4")
  • Genere el mínimo silencio requerido (-f lavfi -i aevalsrc = 0 -shortest)
  • Muestra el resultado (-y "new_1.mp4")

Desde aquí concatenaré como lo hice antes, pero reemplazando "1.mp4" en clips.txt con "new_1.mp4"


2
Para el audio silencioso, asegúrese de que coincida con el diseño del canal y la frecuencia de muestreo de las otras entradas. Por ejemplo, audio estéreo a 44.1kHz: -i anullsrc=cl=stereo:r=44100 (Estas son las configuraciones por defecto para el filtro anullsrc ).
llogan

Oh. No sabía hacer eso. ¡Gracias!
Phil

2
Además, considere agregar -c:v copy para simplemente remodelar el video en lugar de volver a codificarlo.
llogan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.