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_complexcon 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 128kComo la
amixsuperposición de audios he agregado un audio silencioso a cada uno de los audios de entrada. También puede probaramergeyadelaydonde el documento en sí tiene una explicación clara.¡Espero que esto te ayude!
fuente
ffprobepara calcular las duraciones.amixfiltro todavía vuelve a codificar.-c copylos 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.mp3Aquí 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.wavObserve algunas cosas que necesita saber aquí:
/dev/zero, es agradable, sin embargo, ¿puede haber una mejor manera de hacerlo?t=12)silence.wavarchivo. Puedes usar filtros comoanullsrc(vernb_samplesen la documentación ) u otros, pero esto es bastante penoso si me preguntas.-shortestse aplica el parámetro.fuente