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 testsrc
com 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
concat
filtro.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
concat
filtro (ou seja,[4:a][5:a]
) e aumentarian=3
paran=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
-shortest
opção garante que a codificação termine quando o fluxo mais curto (vídeo ou áudio) terminar.