Como posso adicionar períodos específicos de silêncio entre faixas com o ffmpeg?

Como posso adicionar períodos específicos de silêncio entre faixas com o ffmpeg?

Quero combinar vários arquivos de áudio com uma imagem de fundo para criar um vídeo. Eu sei que posso adicionar arquivos de áudio com um mapa como

-i audio1.mp3 -i audio2.mp3 -map 0 -map 1 -map 2

mas como posso adicionar períodos específicos de silêncio entre as faixas de áudio tendo uma única imagem como plano de fundo?

Responder1

Se entendi sua pergunta corretamente, você pode fornecer várias entradas e concatená-las:

ffmpeg \
  -loop 1 -i image.jpg
  -i audio1.wav \
  -f lavfi -t 5 -i anullsrc \
  -i audio2.wav \
  -filter_complex "[1:a][2:a][3:a]concat=n=3:v=0:a=1[outa]" \
  -map 0:v -c:v copy \
  -map "[outa]" -c:a aac -b:a 192k \
  -shortest \
  out.mkv

O que isso faz:

  • Isso usa uma única imagem como entrada #0 (mas você pode trocar -f lavfi -i testsrccom seu arquivo de vídeo real). As entradas 1 e 3 são os dois arquivos de áudio que você deseja usar.

  • A entrada nº 2 é um filtro que gera cinco segundos de silêncio.

  • Em seguida, você concatena todos os fluxos de áudio com o concatfiltro.

  • Para adicionar um terceiro arquivo de áudio, por exemplo, você especificaria duas entradas de áudio adicionais (silêncio e sua faixa real), adicionaria o rótulo de entrada para o concatfiltro (ou seja, [4:a][5:a]) e aumentaria n=3para n=5.

  • O arquivo de saída usa o vídeo de entrada como está ( -c:v copy) e o áudio é recodificado com AAC a 192 kbit/s. É necessário recodificar o fluxo de áudio, pois você está aplicando um filtro.

  • A -shortestopção garante que a codificação termine quando o fluxo mais curto (vídeo ou áudio) terminar.

informação relacionada