Ao converter um áudio com FFmpeg, existem opções -ar
e -ac
, que controlam a taxa de amostragem e o número de canais, respectivamente. Ele também oferece -ab
opção que controla a taxa de bits, mas nenhuma opção para controlar a profundidade de bits.
Desde…
[taxa de bits] = [número de canais] * [taxa de amostragem] * [profundidade de bits]
…isso significa que o ffmpeg calcula a profundidade de bits a partir dos outros 3 parâmetros?
Outra postagemdiz que a profundidade de bits é controlada na opção de formato. Isso me confundiu porque a equação acima pode não ser mais válida se o usuário definir todos os 4 parâmetros.
Alguém poderia explicar como a profundidade de bits e a taxa de bits funcionam no FFmpeg?
Responder1
Quanto às possibilidades dedefinir a profundidade de bits: Depende dos arquivos de origem e do formato de saída.
Por exemplo, pegue pcm_s16le
e pcm_s24le
- ambos renderizarão arquivos PCM, mas com 16 bits/24 bits de profundidade de bits, respectivamente. (Você pode encontrar essas informações com ffmpeg -h encoder=<YOUR_ENCODER>
.)
Se você tiver um formato que pode aceitar várias profundidades de bits (como libmp3lame
), o FFmpeg especificará por padrão o valor usado observando o arquivo de origem: Então, se você pegar -c:a libmp3lame
e seu arquivo de entrada tiver uma profundidade de bits de 16 bits, entã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ê.
Mas você também pode especificá-lo sozinhousando-sample_fmt
.
Quanto ao seufó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 eles não mudarão dentro do arquivo), enquanto a taxa de bits é a variável que se correlaciona com a qualidade da codificação. Isso, entretanto, só é verdade para codecs com perdas; é por isso que recodificar um arquivo WAV 200 vezes não fará diferença, enquanto recodificar os mesmos arquivos 20 vezes com um codificador de MP3 bastante decente já pode levar a resultados insuportáveis.
Codecs com perdas acrescentam qualidade à sua equação: por exemplo, em MP3, um valor de 320k
obteria uma qualidade muito boa, pois o codificador não teria que descartar muita informação para permanecer dentro dos valores especificados. Se você usasse -b:a 64k
, o codificador teria que descartar muitas informações para atingir a taxa de bits especificada. Os codificadores diminuirão tanto quanto necessário para atingir a taxa de bits:Exemplos muito banalizados e, portanto, apenas teóricos de informações que poderiam ser descartadas:
- Se combinar todas as frequências de 8 a 16kHz em uma onda senoidal semicomplexa fizesse com que o codificador atingisse a taxa de bits, ele o faria.
- Se excluir todos os sinais abaixo de -32dB resolvesse, funcionaria.
Para obter alguma explicação do mundo real sobre quais informações serão descartadas, sugiro que você comece lendoArtigo da Wikipedia sobre compactação de dados de áudio.