O ffmpeg pode detectar a taxa de bits real de um arquivo de áudio?

1

O ffmpeg pode me dizer se um arquivo de áudio foi aprimorado ou não? Eu vejo neste artigo, eles usaram um analisador de espectro para verificar a taxa de bits real de um áudio arquivo . O ffmpeg pode determinar a taxa de bits real e codificar os arquivos adequadamente? Por apropriado, eu quero codificar a taxa de bits correta para a qualidade de áudio que o arquivo contém?

    
por Sun 20.11.2014 / 06:56

2 respostas

5

A página a que você está vinculado é muito imprecisa no que diz. A taxa de bits real de um sinal pode de fato não ser a mesma que a quantidade de informação codificada nele, mas o limite do espectro de freqüência não está diretamente relacionado à taxa de bits.

Veja, posso optar por codificar um arquivo original com resolução espectral total de 192 kBit / s com um codificador de MP3, cortar as freqüências mais altas a 16 kHz usando uma configuração de filtro ou codificador e você - com base nisso artigo - pense que é apenas 128 kBit / s.

Em outras palavras, a ausência de certas frequências altas não implica necessariamente que uma codificação de baixa taxa de bits seja mascarada por outra rodada de codificação com uma taxa de bits arbitrária. Isso só mostra que, de fato, há altas freqüências ausentes, o que pode ser percebido como um som abafado.

O FFmpeg na verdade tem um analisador espectral embutido, mas falta uma escala nos eixos e, portanto, isn Tão útil quanto talvez Spek .

Para dar uma demonstração, gerei um arquivo no Audacity que contém 30 s de ondas senoidais a 20, 18, 16 e 14 kHz, com uma amplitude de 0,8, sobreposto em um arquivo PCM WAV mono de 16 bits. / p>

Eu então usei o LAME para codificá-los para MP3 em diferentes taxas de bits:

for b in 320 192 128 96 64 32; do lame -b "$b" test.wav "test-$b.mp3"; done

Podemos ver pelas mensagens que, em vez do "padrão" de 20 kHz, o LAME realmente usa um filtro de baixa passagem para o arquivo de 64 kBit / s em 16-17 kHz. Para 32 kBit / s, ele mudará para um filtro de 8 kHz.

Vamos colocá-los em um espectógrafo como o Spek e ver o que acontece. Como esperado, mesmo para 96 kBit / s, você obtém o espectro de freqüência total - veja a linha vermelha aparecendo em 20 kHz. Você também naturalmente obtém os harmônicos em múltiplos das frequências, o que é devido à compressão de MP3.

Para64kBit/s,vocêpodeverofiltrode16kHzfuncionando,oqueresultanalinhavermelhaaparecendoparaaondasenoidalde16kHz-masaindaháfreqüênciasacimadisso,jáqueofiltrodebaixapassagemnãoestáatenuandofrequênciasacimadopontodecorte.

Finalmente, para 32 kBit / s, você pode ver o filtro de 8 kHz em ação. Aqui, de fato, as freqüências acima são atenuadas o suficiente para que não sejam visíveis. No entanto, apesar desse filtro, você pode ouvir algo no arquivo.

Então,oquevimoséqueaausênciadealtasfreqüênciasindicaumfiltrosendousado,masafrequênciadecortenãopodeserusadaparadeterminarataxadebitsnaqualumarquivofoicodificado.

Querumaprova?Vamosgerarumarquivocortadoem8kHzcom320kBit/s:

$lame--lowpass8000-b320ktest.wavtest-fake.mp3LAME3.99.564bits(http://lame.sf.net)Resampling:input44.1kHzoutput22.05kHzUsingpolyphaselowpassfilter,transitionband:7913Hz-8180HzEncodingtest.wavtotest-fake.mp3

Aquivocêpodeverolimite,mastambémnotaráque,devidoàaltataxadebits,aquantidadedealias(ruído)éreduzidasignificativamente:

Quando você ouve os arquivos, o arquivo de teste falso soa muito "mais limpo" do que o arquivo de 32 kBit / s com o mesmo espectro de freqüência.

    
por 20.11.2014 / 09:35
-1

No que diz respeito a sua pergunta se o ffmpeg pode ou não detectar a taxa de bits de um arquivo de áudio, a resposta é sim.

Aqui está um exemplo de saída do ffmpeg para um arquivo mp3:

Duration: 00:04:12.73, start: 0.025056, bitrate: 332 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s

Além disso, o ffmpeg facilita a codificação com taxas de bits predefinidas ( link )

Eu devo dizer, eu não tenho certeza sobre a sua pergunta sobre a detecção de upscaling mas, eu aposto que não pode. No entanto, observando os detalhes do arquivo, com a intuição, você poderá ver o "cheiro de código" do upscaling.

Espero que isso ajude!

    
por 20.11.2014 / 07:46

Tags