Por favor mira la imagen:
Cada clip de audio tiene el mismo códec / sample_rate, pero tiene una duración diferente y cada espacio también es diferente. Siempre hay espacio entre clips, sin superposición. Por lo tanto, no hay razón para volver a codificar , ya que esto es básicamente un trabajo de copia de flujo. Es importante porque debo preservar la calidad original de cada clip.
Ahora, pensemos que encontré lo que buscaba. Le di a este comando un pseudo nombre "-start_at" , inserta el clip en la secuencia de audio en un momento dado. Con este pseudo comando, estableceré el tiempo en que cada clip debe comenzar. Y el resto del trabajo debe hacerse mediante ffmpeg command / filter / script, etc.
ffmpeg -start_at 00.00 -i audio1.opus -start_at 06.30 -i audio2.opus -start_at 21.15 -i audio3.opus -start_at 26.35 -i audio4.opus
Solo piense que ffmpeg llenará los huecos con sonidos silenciosos automáticamente.
Entonces, ¿hay un comando / filtro ffmpeg para esto? ¿O una gui / script ffmpeg, etc.?
Respuestas:
FFmpeg es capaz de manejar esto. Lo que necesita usar es
filter_complex
con encadenamiento de filtro. Puede crear un audio silencioso conaevalsrc
. Para crear un audio silencioso de 5 segundos,Entonces el siguiente comando funcionará para usted.
Aquí asumí que cada audio tiene una duración de 5 segundos y la re-codificación es opcional como,
-c:a libmp3lame -ac 2 -b:a 128k
Como la
amix
superposición de audios he agregado un audio silencioso a cada uno de los audios de entrada. También puede probaramerge
yadelay
donde el documento en sí tiene una explicación clara.¡Espero que esto te ayude!
fuente
ffprobe
para calcular las duraciones.amix
filtro todavía vuelve a codificar.-c copy
los intentos deberían dar lugar aStreamcopy requested for output stream 0:0, which is fed from a complex filtergraph. Filtering and streamcopy cannot be used together.
mensajes. Para preservar la calidad del audio de origen, envíe su audio a un códec sin pérdidas y luego-map [aout] -c:a pcm_s16le -ac 2 -ar 44100 - | ffmpeg -i - -c:a libmp3lame -b:a 320k ConcatenatedAudio.mp3
Aquí está el ejemplo de audio concat:
ffmpeg -y -f s16be -i /dev/zero -af "[in]anullsink;amovie=1.wav[a1];amovie=silence.wav[a2];amovie=2.wav[a3];amovie=4.wav[a4];[a1][a2][a3][a4]concat=n=4:v=0:a=1[out]" -shortest -t 12 output.wav
Observe algunas cosas que necesita saber aquí:
/dev/zero
, es agradable, sin embargo, ¿puede haber una mejor manera de hacerlo?t=12
)silence.wav
archivo. Puedes usar filtros comoanullsrc
(vernb_samples
en la documentación ) u otros, pero esto es bastante penoso si me preguntas.-shortest
se aplica el parámetro.fuente