Eu tenho um arquivo de áudio 5.1 do AC3 no qual gostaria de inserir x segundos de áudio silencioso no início. Isso não tem nada a ver com o muxing de vídeo; portanto, seu deslocamento é inútil, pois parece funcionar apenas com um fluxo de áudio que acompanha um vídeo. Eu gostaria de conseguir isso com o ffmpeg. Alguma ideia?
14
Respostas:
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):
Agora crie um arquivo de texto chamado
input.txt
que lista os arquivos a serem concatenados: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 :
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:
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:
1s
por um segundo.adelay=1000
, enquanto uma entrada 5.1 usariaadelay=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:
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.fonte
[Parsed_aevalsrc_0 @ 000000000195fec0] This syntax is deprecated. Use '|' to sep arate the list items.
A nova sintaxe é-i "aevalsrc=0|0|0|0|0|0:d=1"