Quiero concatenar múltiples archivos WAV en un solo archivo WAV usando FFMPEG.
He usado el siguiente comando y genera el archivo requerido.
Mando:
ffmpeg -f concat -i mylist.txt -c copy output.wav
Archivo :
#mylist.txt
file '1.wav'
file '2.wav'
file '3.wav'
file '4.wav'
Pero como puede ver, el problema es que tengo que crear un archivo de texto para especificar la lista de archivos WAV para concatenar.
Puedo hacer todas estas tareas, pero preferiría un solo comando, algo que se parezca
ffmpeg -i 1.wav -i 2.wav -i 3.wav -i 4.wav output.wav
o
ffmpeg -i "concat:1.wav|2.wav|3.wav|4.wav" -c copy output.wav
He probado estos dos comandos simples pero devuelven solo la voz de 1.wav
Por favor, ayúdame a escribir un solo comando (o corregir los 2 comandos anteriores) que logre el resultado deseado.
No sugiera otros codificadores / editores de medios, solo quiero usar FFMPEG, ya que ya está instalado y utilizado en otros lugares.
fuente
[0:0][1:0][2:0][3:0]
para que coincida con la cantidad de archivos. Use eso exactamente como dice. Lo único que debe cambiar son los archivos de entrada yn=4
.Too many inputs specified for the "concat" filter.
cuando intento procesar solo 2 entradas con el código original. Sin embargo, funciona cuando elimino[2:0][3:0]
... lo que tiene sentido para mí, ya que en este caso no hay cosas como transmisiones2:0
y3:0
...n
.Creo que la mejor opción es usar sox, no ffmpeg:
La solución proviene de ¿Cómo agrego un montón de archivos .wav mientras mantengo el orden numérico (sin relleno de cero)?
fuente
.wav
, perosox
no parece ser compatible.mp3
..wav
La wiki de FFmpeg menciona que usar el
concat
protocolo no es posible con todos los tipos de archivos. Funciona bien con la mayoría de los contenedores y flujos de bits MPEG, pero obviamente no con archivos WAV con audio PCM.No necesariamente tiene que crear un archivo temporal y usarlo. Con Bash (u otros shells que admiten la sustitución de procesos ), puede hacer todo en un solo comando:
La sustitución del proceso
<( )
crea un archivo (o, para ser precisos, un descriptor de archivo) sobre la marcha, queffmpeg
puede leerse. Este archivo contendrá la ruta a cada.wav
archivo en el directorio actual. Tenemos que ponerle el prefijo$(pwd)
para obtener la ruta correcta en relación con su directorio actual, y no en relación con el descriptor de archivo.Por supuesto, el comando dentro de la sustitución se puede cambiar a otra cosa.
fuente
Unsafe file name
error, necesitaría la-safe 0
opción antes-i
. árbitro. stackoverflow.com/q/38996925/297679Otra opción es usar concat
fuente
En la secuencia de comandos Cmd.EXE .BAT de Win8:
De esta manera, no se molesta con los nombres de los archivos de origen ni con el parámetro concat-count.
fuente
Podrías usar
shntool
para archivos wav.fuente