FFmpeg Substituto de canal em áudio usando arquivos de áudio externos

0

Eu tenho 2 arquivos de áudio no formato AC3 e ambos contêm apenas um canal (audio1.ac3 e audio2.ac3)

Por outro lado eu tenho um arquivo mkv que contém o vídeo e 2 streams de áudio (video.mkv)

O fluxo de áudio 1 está no formato AC3 e tem 4 canais (vamos chamá-los de L1 R1 C1 LFE1)

O fluxo de áudio 2 está no formato AC3 e tem 4 canais também. (vamos chamá-los de L2 R2 C2 LFE2)

Eu quero substituir o canal central no fluxo de áudio 1 e no fluxo de áudio 2, usando os arquivos AC3 que mencionei anteriormente. Eu quero como saída final o arquivo mkv com esses dois fluxos de áudio:

Audio stream 1 -> L1 R1 (audio1.ac3 as center C1) LFE1

Audio stream 2 -> L2 R2 (audio2.ac3 as center C2) LFE2

Eu gostaria de preservar as tags de metadados que já existiam no arquivo mkv para os nomes desses fluxos de áudio, e fazer todo o processo sem perda de qualidade e usando o FFmpeg na linha de comando (estou no Windows, mas posso faça do Ubuntu também)

Todas as informações que encontrei referem-se à substituição completa do fluxo, mas não ao nível do canal. Talvez seja algo que não possa ser feito.

Nota: Todos os arquivos de áudio têm a mesma taxa de amostragem, parâmetros que os fluxos no arquivo mkv.

    
por tom_len 08.10.2018 / 18:46

1 resposta

1

Substitua o canal por áudio usando arquivos de áudio externos

Um método é usar o filtro aderir :

ffmpeg -i input.mkv -i audio1.ac3 -i audio2.ac3 -filter_complex "[0:a:0][1:a]join=inputs=2:channel_layout=5.1:map=0.0-FL|0.1-FR|1.0-FC|0.3-LFE|0.4-BL|0.5-BR[a0];[0:a:1][2:a]join=inputs=2:channel_layout=5.1:map=0.0-FL|0.1-FR|1.0-FC|0.3-LFE|0.4-BL|0.5-BR[a1]" -map 0:v -map "[a0]" -map "[a1]" -c:v copy -c:a flac output.mkv

Eu fiz algumas suposições sobre o pedido do canal. Você pode ter que ajustar. Veja ffmpeg -layouts para informações de layout do canal.

Preserve as tags de metadados

Na documentação (na opção -map_metadata ):

By default, global metadata is copied from the first input file, per-stream and per-chapter metadata is copied along with streams/chapters.

Você não forneceu nenhuma informação detalhada sobre seus arquivos ou os metadados (a saída completa de ffmpeg -i input.mkv -i audio1.ac3 -i audio2.ac3 teria sido suficiente), portanto, assumirei que o comportamento padrão funcione.

Sem perda de qualidade

A filtragem requer recodificação, portanto, um formato sem perdas (flac) é usado no exemplo.

    
por 09.10.2018 / 22:40

Tags