Eu tenho uma faixa de áudio 5.1 de um filme em que a frente esquerda e a frente direita contêm música e o centro contém diálogo. Tocar a faixa 5.1 no VLC combina tudo bem.
Estou tentando converter a faixa 5.1 para estéreo usando ffmpeg -ac 2
, no entanto, o mix estéreo resultante tem um volume muito mais fraco do que reproduzir a faixa 5.1 nativamente.
A adição -af "pan=stereo|c0=FL|c1=FR"
fornece o volume correto, mas não há diálogo porque o canal central não está incluído.
Então a solução talvez seja misturar esquerda / centro / direita em estéreo e jogar fora os canais de subwoofer de back-end? (Eu estou supondo aqui ...)
Portanto, a pergunta é: como faço para que o ffmpeg downmix 5.1 seja estéreo da mesma forma que o VLC, com o mesmo volume forte no resultado final?
-ac 2
. Então, eu estou perguntando como fazer o ffmpeg gerar o mesmo resultado bom que o VLC.Respostas:
Encontrei a resposta que Shane forneceu para fornecer muito pouco dos outros canais e muito do centro. Os filmes com fones de ouvido pareciam desequilibrados, com todo o diálogo e efeitos / música de fundo insuficientes.
De acordo com os padrões ATSC (seção 7.8, página 91), a fórmula a seguir é usada para downmix 5.1 ao estéreo convencional (ao contrário da matriz):
clev e slev devem ser 0,707, de acordo com as tabelas 5.9 e 5.10 no documento mencionado, assumindo um nível de mixagem central / surround igual a 0. Outros valores são fornecidos nessas tabelas que reduzem a quantidade de mixagem central, que eu não acho útil.
Com isso em mente, a seguinte opção ffmpeg produz um som equilibrado com diálogo audível. Observe que não é necessário especificar os canais de áudio.
Uma observação sobre o uso do símbolo menor que, na documentação do filtro de panela :
fonte
ac -2
opção. Em outras palavras, a única diferença entre usar esse filtro e fazerac -2
é muito mais digitação.As respostas sobre essa questão tornaram-se uma bagunça, com muitas contendo informações redundantes e outras imprecisões completas. Esta resposta é uma tentativa de otimizar as informações nessas respostas, eliminando os problemas nelas.
Mais importante, vale lembrar que a resposta de Gregory, atualmente a resposta mais votada para esta pergunta, não é diferente do que usar a
-ac 2
opção - mais sobre isso abaixo.Fazer downmixing de um fluxo de áudio de 5.1 canais para estéreo com
-ac 2
O FFmpeg vem com recursos internos para mixagem de uma faixa 5.1 para estéreo, e esta também é a solução recomendada pela documentação do FFmpeg :
O
-ac 2
switch funciona misturando proporções dos 5 primeiros canais do fluxo de 6 canais da fonte - Traseira esquerda, Traseira direita, Frente esquerda, Frente direita e Frente central - nos canais Frente esquerda e Frente direita do fluxo estéreo de saída:Ao fazer isso, o áudio do canal LFE (o .1 em 5.1, reservado para o subwoofer e usado para efeitos profundos e de baixa frequência) é descartado completamente ao usar esta opção.
Infelizmente, em meus testes
-ac 2
resultou em níveis gerais de música e diálogo que eram os mais diferentes da fonte, tornando-a a fórmula de downmix que fornece a pior saída de todas as fórmulas que testei, embora você possa testá-lo e descobrir que ele fornece uma mistura bem adequada para as suas necessidades; nesse caso, usar qualquer outra fórmula seria um exagero para você.Para misturar uma faixa DTS com
-ac 2
sem transcodificá-la (ou seja, manter o codec e a extensão iguais):Como apontado por Mephisto em sua resposta, se o diálogo e a música parecerem bem equilibrados entre si, mas simplesmente não tiverem volume, você poderá diminuir o mix do fluxo e aumentar seu volume:
Para a
-vol
opção, 100% do volume na fonte é equivalente ao valor inteiro 256, e usar um valor maior que isso aumentará o volume geral do fluxo de áudio. No entanto, observe que isso pode resultar em distorção ou artefatos, especialmente durante as seções mais altas.Para misturar um fluxo de áudio em estéreo e transcodificá-lo para o codec AC3, por exemplo:
Downmixing um fluxo de áudio de 5.1 canais para estéreo com um algoritmo de mix personalizado
Se você deseja uma downmix de mais alta qualidade ou é absolutamente necessário incluir o fluxo LFE em sua saída, pode usar a chave de filtro de áudio do FFmpeg (
-af
) para downmix o áudio usando uma fórmula de mixagem personalizada.Downmixing com a fórmula ATSC (resposta de Gregory)
No momento da publicação desta resposta, a resposta mais votada para essa pergunta era a de Gregory , que coloca a fórmula da especificação ATSC (consulte a seção 7.8.2, Fazendo downmixing em dois canais ) em um filtro de áudio FFmpeg. Essa especificação está diretamente vinculada à documentação do FFmpeg sobre o tópico , indicando que é altamente provável que seja a mesma fórmula que o FFmpeg já implementa para seu
-ac 2
switch. Se isso for verdade, digitar a fórmula inteira na resposta de Gregory não seria diferente do que usar o-ac 2
comutador e, portanto, uma perda de tempo.Decidi testar isso com certeza, recodificando a mesma entrada de áudio usando ambos
-ac 2
e o-af
filtro da resposta de Gregory (os comandos exatos usados podem ser vistos nas notas de rodapé desta resposta).Em seguida, comparei os tamanhos dos arquivos de saída resultantes e constatei que eram, byte por byte, o mesmo tamanho:
Por fim, abri os dois arquivos de saída no Audacity e comparei suas formas de onda para confirmar que eram idênticas (clique para ampliar):
Parece, portanto, bastante conclusivo que a fórmula ATSC detalhada na resposta de Gregory é a mesma já implementada pelo FFmpeg , e que usá-la é totalmente redundante quando não faz nada que
-ac 2
não faz, e é um comando muito mais complicado.Downmixing sem descartar o canal LFE (resposta de Dave_750)
Das várias incluídas nas respostas, essa é a única das fórmulas downmix que parecem misturar o canal LFE no estéreo de saída, em vez de descartá-lo completamente e, como resultado, o que garante o menor som da fonte é perdido.
O nível geral do volume é mais alto e mais cheio do
-ac 2
que o normal, mas também mais baixo que o downmix abaixo do Nightmode Dialogue. No entanto, os níveis de música estão muito mais próximos da fonte do que o downmix do Nightmode Dialogue e, devido à inclusão da faixa LFE, aumentar o volume da saída ao usar essa fórmula de downmix pode criar um fluxo de saída que soa mais fiel à fonte 5.1 do que todos os outros fórmulas que testei.Se você tiver a capacidade, eu recomendo a codificação do (s) seu (s) fluxo (s) de áudio usando esta fórmula de downmix e o downmix Nightmode Dialogue e comparando cuidadosamente as formas de onda dos dois para determinar qual é o melhor.
Para misturar uma faixa 5.1 em estéreo usando essa fórmula e aumentar seu nível de volume para 425 (onde 256 é 100% do nível de volume da fonte original):
Desmistificando o Diálogo do Modo Noturno de Robert Collier (resposta de Shane Harrelson)
A fórmula Diálogo noturno, criado por Robert Collier na Doom9 fórum e fontes de Shane Harrelson em sua resposta, resulta em uma melhor downmix que o
-ac 2
switch - em vez de diálogos excessivamente tranquilos, traz de volta a níveis que são muito mais perto da fonte.Da descrição de Robert Collier da mistura:
Infelizmente, a música dessa fórmula downmix é muito menor do que na fonte 5.1 (que provavelmente foi projetada considerando a intenção de Collier de criar um mix "modo noturno") e devido à perda completa da faixa LFE, o áudio geral de saída não soar tão cheio ou próximo da fonte quanto a fórmula de Dave_750 com volume aprimorado .
No entanto, se por algum motivo você quiser evitar aumentar o volume geral do fluxo, o Nightmode Dialogue provavelmente seria sua melhor opção - embora, novamente, eu recomendo codificar seu fluxo de áudio para ambos e comparar cuidadosamente as formas de onda dos dois. .
Para fazer downmix com a fórmula do Nightmode Dialogue no FFmpeg:
Resposta do Tarc
Essa resposta simplesmente coloca a fórmula de downmix do Nightmode Dialogue da resposta de Shane Harrelson em um comando para converter o fluxo de áudio em um contêiner MKV. Embora o comando fornecido nesta resposta funcione bem em um fluxo de áudio, a adaptação para uma faixa de áudio autônoma causaria o erro:
Isso ocorre porque o codec de áudio não pode ser copiado durante a downmixing - como todas as outras alterações que o FFmpeg faz em um fluxo de saída, uma downmix exige que a faixa seja recodificada para que as alterações sejam aplicadas.
Este comando também incluiu uma
-ac 2
opção redundante que o FFmpeg teria ignorado.Comandos de teste
Para demonstrar a confiabilidade dos testes que realizei para esta resposta, abaixo estão todos os comandos que usei para testar cada fórmula de downmix.
O comando test usado para a
-ac 2
opção:O comando test usado para a resposta de Gregory:
O comando test usado para a resposta de Dave_750:
O comando test usado para a resposta de Shane Harrelson:
fonte
-ac 2
me deu um resultado inferior, para começar, o que levou à postagem original. Vou tentar novamente e, se possível, compartilhar um trecho de 5,1 que não produz um resultado satisfatório com a mixagem embutida. Também é muito bom saber que você pode fazer down-mix sem transcodificação!ac -2
opção também me deu o resultado mais inferior de todas as fórmulas de downmix, acho que isso é apenas uma falha na fórmula do padrão ATSC.ffmpeg -i 5.1.mp4 -ac 2 2.mp4
funciona, masffplay -i 5.1.mp4 -ac 2
não funciona.Experimente esta downmix:
como sugerido por Robert Collier no fórum Doom9.
fonte
Portanto, combinando a resposta de @Shane Harrelson com a resposta de @Jordan Harris para outra pergunta - com o modo preguiçoso ativado - aqui é necessário converter
input_51.mkv
(5.1) emoutput_stereo.mkv
(estéreo):Os
-c:v copy
meios de peça que o fluxo de vídeo não está sendo tocado (eu acho que o v ideo c ODEC configurações está sendo policial IED). Sem ele, levará muito mais tempo. Apenas repetir a resposta acima para completar,-ac 2
significa dois canais de áudio e-af
especifica um filtro de áudio.Depois de examinar um pouco o comando, descobri que está definindo como os dois canais estéreo são compostos; o
FL
(canal frontal esquerdo) é retirado do originalFC
(centro frontal) mais0.30*FL
(30% da frente esquerda) mais0.30*BL
(30% da parte traseira esquerda) e assim por diante.fonte
Esta é uma pergunta antiga agora, mas me apontou na direção certa e queria compartilhar meu resultado:
Colocar metade do FC e LFE na esquerda e na direita dá um total de 1 para os volumes efetivos dos dois alto-falantes. O uso de .707 * Dianteiro / Traseiro Esquerdo / Direito reduz esses canais a um bom nível, para que não domine o centro.
fonte
Se a opção -ac 2 fornecer uma downmix equilibrada, em que nem a música nem a fala soam muito mais do que os outros componentes, você só precisa aumentar o volume com
Eu usei 512 no exemplo, o que aumenta o som, tornando-o duas vezes mais alto. A regra é que 256 é equivalente a 100%
Não exagere no valor e verifique os resultados nessas partes do filme com explosões ou ruídos altos. É muito fácil introduzir distorção usando um valor muito alto.
fonte
-ac 2
O volume de canais no downmix é inalterado com o codec de ponto flutuante -> pcm_f32le, aac
O volume no downmix (5.1 a 2.0 sem LFE) é reduzido em 1 / 2.5 = -7.96 dB com codec inteiro -> pcm_s16le, libfdk_aac
Os filmes têm o som apontado em uma direção e nenhuma pressão sonora máxima em todos os canais. Portanto, o volume reduzido de downmix está errado, pouca compactação de nível é o caminho certo. É isso que Dolby faz.
fonte
Depois de ler esta página inteira e alguns experimentos, criei esse script chamado "down_mix":
Ajuste as variáveis acima ao seu gosto. Não tive problemas com volume baixo, então deixei de fora, mas facilmente adicionei.
fonte
O filtro ffmpeg "-ac 2" funciona bem desde que seu destino seja codificado em pcm_s16le. Ao codificar para pcm_f32le no formato wav, o volume é aumentado em 9dB e mais. Portanto: não use o filtro "-ac 2" nesses casos.
fonte