¿Cómo controla FFmpeg la profundidad y la tasa de bits?

¿Cómo controla FFmpeg la profundidad y la tasa de bits?

Al convertir un audio con FFmpeg, existen -aropciones -acque controlan la frecuencia de muestreo y la cantidad de canales, respectivamente. También ofrece -abuna opción que controla la tasa de bits, pero ninguna opción para controlar la profundidad de bits.

Desde…

[tasa de bits] = [número de canales] * [tasa de muestreo] * [profundidad de bits]

…¿significa esto que ffmpeg calcula la profundidad de bits a partir de los otros 3 parámetros?

Otra publicacióndice que la profundidad de bits se controla en la opción de formato. Esto me confundió porque es posible que la ecuación anterior ya no se cumpla si el usuario configura los 4 parámetros.

¿Alguien podría explicar cómo funcionan la profundidad de bits y la tasa de bits en FFmpeg?

Respuesta1

En cuanto a las posibilidades deestablecer la profundidad de bits: Depende de sus archivos fuente y de su formato de salida.

Por ejemplo, tome pcm_s16ley pcm_s24le- ambos renderizarán archivos PCM, pero con una profundidad de bits de 16 bits/24 bits respectivamente. (Puedes encontrar esta información con ffmpeg -h encoder=<YOUR_ENCODER>.)

Si tiene un formato que puede tomar varias profundidades de bits (como libmp3lame), FFmpeg especificará de forma predeterminada el valor utilizado mirando el archivo fuente: Entonces, si toma -c:a libmp3lamey su archivo de entrada tiene una profundidad de bits de 16 bits, entonces FFmpeg utilizará 16 bits. Si tiene un archivo de 32 bits y desea codificarlo en un códec que solo puede contener 16 bits, FFmpeg lo probará por usted.

Pero también puedes especificarlo tú mismo.usando-sample_fmt.


En cuanto a tufórmula de velocidad de bits: FFmpeg, como prácticamente todas las demás herramientas, ve el número de canales de audio, la profundidad de bits y la frecuencia de muestreo como valores fijos (lo que significa que no cambiarán dentro del archivo), mientras que la velocidad de bits es la variable que se correlaciona con la calidad de la codificación. Sin embargo, esto sólo es cierto para los códecs con pérdida; es por eso que volver a codificar un archivo WAV 200 veces no hará ninguna diferencia, mientras que volver a codificar los mismos archivos 20 veces con un codificador MP3 bastante decente ya podría conducir a resultados insoportables.

Los códecs con pérdida añaden calidad a su ecuación: por ejemplo, en MP3, un valor de 320klograría una muy buena calidad, ya que el codificador no tendría que soltar mucha información para permanecer dentro de los valores especificados. Si usara -b:a 64k, el codificador tendría que eliminar mucha información para lograr la velocidad de bits especificada. Los codificadores disminuirán tan bajo como sea necesario para lograr la velocidad de bits:Ejemplos muy trivializados y, por lo tanto, solo teóricos de información que podrían descartarse:

  • Si al combinar todas las frecuencias de 8 a 16 kHz en una onda sinusoidal semicompleja el codificador alcanzara la velocidad de bits, lo haría.
  • Si eliminar todas las señales por debajo de -32 dB fuera suficiente, sería suficiente.

Para obtener una explicación del mundo real sobre qué información se eliminará, le sugiero que comience leyendoArtículo de Wikipedia sobre compresión de datos de audio.

información relacionada