Como o FFmpeg controla a bitdepth e a taxa de bits?

0

Ao converter um áudio com FFmpeg, existem as opções -ar e -ac , que controlam a taxa de amostragem e o número de canais, respectivamente. Ele também oferece a opção -ab , que controla a taxa de bits, mas nenhuma opção para controlar a profundidade de bits.

Desde…

[bitrate] = [number of channels] * [sampling rate] * [bitdepth]

... isso significa que o ffmpeg calcula bitdepth dos outros 3 parâmetros?

Outro post diz que bitdepth é controlado em a opção de formato. Isso me confundiu porque a equação acima pode não conter mais se o usuário definir todos os 4 parâmetros.

Alguém poderia explicar como bitdepth e bitrate funcionam no FFmpeg?

    
por Cyker 30.08.2017 / 02:37

1 resposta

1

Quanto às possibilidades de definir a profundidade de bits : Depende dos seus arquivos de origem e no seu formato de saída.

Por exemplo, leve pcm_s16le e pcm_s24le - ambos processarão arquivos PCM, mas com 16 bits / 24 bits de profundidade de bits, respectivamente. (Você pode encontrar esta informação com ffmpeg -h encoder=<YOUR_ENCODER> .)

Se você tiver um formato que pode levar várias profundidades de bit (como libmp3lame ), o FFmpeg especificará por padrão o valor usado observando o arquivo de origem: Então, se você usar -c:a libmp3lame e seu arquivo de entrada um pouco de profundidade de 16 bits, então o FFmpeg usará 16 bits. Se você tiver um arquivo de 32 bits e quiser codificá-lo em um codec que possa conter apenas 16 bits, o FFmpeg fará uma amostragem para você.

Você também pode especificar por si mesmo usando -sample_fmt .

Quanto à sua fórmula de taxa de bits : o FFmpeg, como praticamente todas as outras ferramentas, vê o número de canais de áudio, a profundidade de bits e a taxa de amostragem como valores fixos (o que significa que não mudar intra-arquivo), enquanto a taxa de bits é a variável que se correlaciona com a qualidade da codificação. Isso, no entanto, só é verdadeiro para codecs com perdas; é por isso que re-codificar um arquivo WAV 200 vezes não fará diferença, enquanto re-codificar os mesmos arquivos 20 vezes com um codificador de MP3 bastante decente já poderia levar a resultados insuportáveis.

Codecs com perda de qualidade adicionam qualidade à sua equação: por exemplo, em MP3, um valor de 320k teria uma qualidade muito boa, pois o codificador não precisaria descartar muitas informações para permanecer dentro dos valores especificados. Se você usou -b:a 64k , o codificador teria que eliminar muitas informações para atingir a taxa de bits especificada. Os codificadores diminuirão o mínimo necessário para atingir a taxa de bits: Muito banalizado e, portanto, apenas exemplos teóricos de informações que podem ser descartadas:

  • Se combinar todas as freqüências de 8-16kHz em uma onda senoidal semi-complexa faria com que o codificador atingisse a taxa de bits, ele o faria.
  • Se excluir todos os sinais abaixo de -32 dB faria o truque, bastaria.

Para algumas explicações do mundo real sobre quais informações serão descartadas, sugiro que você comece lendo artigo da Wikipédia sobre    compactação de dados de áudio .

    
por 30.08.2017 / 03:13

Tags