Tengo un archivo de audio AC3 5.1 en el que me gustaría insertar x segundos de audio silencioso al principio. Esto no tiene nada que ver con la muxing de video, por lo que su compensación es inútil ya que parece funcionar solo con una transmisión de audio que acompaña a una de video. Me gustaría lograr esto con ffmpeg. ¿Algunas ideas?
14
Respuestas:
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):
Ahora haga un archivo de texto llamado
input.txt
que enumere los archivos que se concatenarán:Si desea el silencio al final, simplemente cambie el orden de los archivos
input.txt
.Ahora puede concatenar los archivos usando el demuxer concat :
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:
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:
1s
por un segundo.adelay=1000
, mientras que se usaría una entrada 5.1adelay=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:
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.fuente
[Parsed_aevalsrc_0 @ 000000000195fec0] This syntax is deprecated. Use '|' to sep arate the list items.
La nueva sintaxis es-i "aevalsrc=0|0|0|0|0|0:d=1"