Usando o desmuxador concat (adicione silêncio ao início e / ou final)
Use o desmuxador concat se desejar evitar recodificar o segmento principal. Este método funciona para adicionar silêncio ao começo ou ao fim (ou ambos).
Use o filtro de fonte de áudio anullsrc para criar o áudio silencioso. Você precisará corresponder ao formato, layout do canal e taxa de amostragem do arquivo de áudio principal. Exemplo para criar um canal de 5,1 canais, taxa de amostragem de 48000 Hz e um segundo arquivo de áudio AC3 silencioso (como esse era o formato da pergunta):
ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
Agora crie um arquivo de texto chamado input.txt
que lista os arquivos a serem concatenados:
file 'silent.ac3'
file 'main.ac3'
Se você quiser o silêncio no final, basta alterar a ordem dos arquivos input.txt
.
Agora você pode concatenar os arquivos usando o desmuxer concat :
ffmpeg -f concat -i input.txt -codec copy output.ac3
Usando o filtro concat (adicione silêncio ao início e / ou final)
Use o filtro concat se desejar fazer tudo em um comando ou se desejar gerar um formato diferente da entrada (pois esse método é recodificado de qualquer maneira). Este método funciona para adicionar silêncio ao começo ou ao fim ou a ambos.
Exemplo para adicionar 1 segundo de silêncio ao início de uma entrada estéreo com taxa de amostragem 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
A filtragem resultará na recodificação enquanto o desmuxador concat não.
No anullsrc, é recomendável combinar o layout do canal e a taxa de amostragem da entrada.
Se você deseja adicionar silêncio até o fim, em vez basta mudar a ordem das entradas dadas ao filtro concat: [1:a][0:a]concat=n=2:v=0:a=1
.
Usando o filtro adelay (adicione silêncio ao início)
Use o filtro de áudio adelay se desejar fazer tudo em um comando ou se desejar gerar um formato diferente da entrada (pois esse método é recodificado de qualquer maneira). Isso funciona apenas para adicionar silêncio ao início de um arquivo.
Este exemplo adicionará 1 segundo de silêncio ao início de uma entrada estéreo:
ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
- A filtragem resultará na recodificação enquanto o desmuxador concat não.
- O valor está em milissegundos. Usuários de versões recentes (git master atual ou algo mais novo que o FFmpeg 4.1) podem usar
1s
por um segundo.
- Cada canal precisa de seu próprio atraso. Por exemplo, uma entrada mono usaria
adelay=1000
, enquanto uma entrada 5.1 usaria adelay=1000|1000|1000|1000|1000|1000
.
Usando o filtro apad (adicione silêncio até o fim)
Use o filtro de áudio apad se desejar fazer tudo em um comando ou se desejar gerar um formato diferente da entrada (pois esse método é recodificado de qualquer maneira). Isso funciona apenas para adicionar silêncio ao final de um arquivo.
Este exemplo adicionará 1 segundo de silêncio ao final:
ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
A filtragem resultará na recodificação enquanto o desmuxador concat não.
A pad_dur
opção foi adicionada após o lançamento do FFmpeg 4.1, portanto, você precisará usar uma compilação recente a partir da ramificação principal do git ou aguardar o FFmpeg 4.2.