Usando el demuxer concat (agregue silencio al principio y / o final)
Use el demuxer concat si desea evitar volver a codificar el segmento principal. Este método funciona para agregar silencio al principio o al final (o ambos).
Use el filtro de fuente de audio anullsrc para crear el audio silencioso. Deberá hacer coincidir el formato, el diseño del canal y la frecuencia de muestreo del archivo de audio principal. Ejemplo para hacer un canal 5.1, frecuencia de muestreo de 48000 Hz, archivo de audio AC3 silencioso de 1 segundo (ya que este era el formato en la pregunta):
ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
Ahora haga un archivo de texto llamado input.txt
que enumere los archivos que se concatenarán:
file 'silent.ac3'
file 'main.ac3'
Si desea el silencio al final, simplemente cambie el orden de los archivos input.txt
.
Ahora puede concatenar los archivos usando el demuxer concat :
ffmpeg -f concat -i input.txt -codec copy output.ac3
Usando el filtro concat (agregue silencio al principio y / o al final)
Use el filtro concat si desea hacer todo en un comando, o si desea generar un formato diferente al de la entrada (ya que este método se vuelve a codificar de todos modos). Este método funciona para agregar silencio al principio o al final o a ambos.
Ejemplo para agregar 1 segundo de silencio al comienzo de un estéreo, entrada de frecuencia de muestreo de 44100 Hz:
ffmpeg -f lavfi -t 1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -i audio.oga -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" output.m4a
El filtrado resultará en una nueva codificación, mientras que el demuxer concat no lo hará.
En anullsrc se recomienda hacer coincidir el diseño del canal y la frecuencia de muestreo de la entrada.
Si desea agregar silencio al final en lugar de simplemente cambiar el orden de las entradas dadas al filtro concat: [1:a][0:a]concat=n=2:v=0:a=1
.
Usando el filtro adelay (agregue silencio al comienzo)
Use el filtro de audio adelay si desea hacer todo en un comando, o si desea emitir en un formato diferente a la entrada (ya que este método se vuelve a codificar de todos modos). Esto solo funciona para agregar silencio al comienzo de un archivo.
Este ejemplo agregará 1 segundo de silencio al comienzo de una entrada estéreo:
ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
- El filtrado resultará en una nueva codificación, mientras que el demuxer concat no lo hará.
- El valor está en milisegundos. Los usuarios de versiones recientes (git master actual o algo más nuevo que FFmpeg 4.1) pueden usar en su lugar
1s
por un segundo.
- Cada canal necesita su propio retraso. Por ejemplo, se usaría una entrada mono
adelay=1000
, mientras que se usaría una entrada 5.1 adelay=1000|1000|1000|1000|1000|1000
.
Usando el filtro apad (agregue silencio al final)
Use el filtro de audio apad si desea hacer todo en un comando, o si desea emitir en un formato diferente a la entrada (ya que este método vuelve a codificar de todos modos). Esto solo funciona para agregar silencio al final de un archivo.
Este ejemplo agregará 1 segundo de silencio al final:
ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
El filtrado resultará en una nueva codificación, mientras que el demuxer concat no lo hará.
La pad_dur
opción se agregó después del lanzamiento de FFmpeg 4.1, por lo que deberá utilizar una compilación reciente de la rama maestra git o esperar a FFmpeg 4.2.