¿Por qué un FLAC codificado de un MP3 decodificado es más grande que el MP3?

13

Para ser más preciso que en el título, supongamos que tengo un archivo MP3 de 320 kbps. Si lo descomprimo, entonces lógicamente, todos los datos, excepto aproximadamente 320 kilobits de cada segundo de audio, deberían ser datos redundantes, capaces de ser comprimidos. Entonces, cuando codifico el archivo descomprimido en FLAC, o cualquier otro códec sin pérdida, ¿por qué es mucho más grande?

En una nota relacionada, ¿es teóricamente posible recuperar sin pérdidas la fuente de audio mp3 de un wav descomprimido? (Sé que el mp3 en sí es con pérdida. Estoy preguntando si es posible volver a codificar sin ninguna pérdida adicional ).

EDITAR: Permítanme aclarar la pregunta relacionada, y la razón detrás de esto. Supongamos que tengo un wav que se descomprimió de un archivo MP3 (y supongo que no tengo el mp3 por alguna razón). Si no quiero perder más calidad, puedo volver a codificarlo con FLAC o cualquier otro codificador sin pérdidas y obtener un archivo más grande solo para mantener la misma calidad. O bien, puedo volver a codificarlo en mp3 nuevamente y obtener el mismo tamaño que el original, pero pierdo más datos. Obviamente, ninguno de estos casos es ideal. Puedo tener el tamaño original o la calidad original, pero no ambos (me refiero a la calidad del mp3 original, no a la fuente original sin pérdidas). Mi pregunta es: ¿podemos obtener ambos? ¿Es teóricamente posible recuperar los datos comprimidos con pérdida de los datos descomprimidos con pérdida, sin perder aún más?

Si es posible, podría imaginar un algoritmo de compresión sin pérdidas que comprima el audio con FLAC. Luego también escanea el audio en busca de cualquier signo de compresión con pérdida previa y, si se detecta, lo vuelve a comprimir sin pérdidas en el archivo con pérdida original. Luego mantiene el archivo que sea más pequeño.

Ryan C. Thompson
fuente
Aquí está mi guía favorita para extraer y codificar audio. disfruta, es una excelente lectura: mp3.radified.com
2
El decodificador no simplemente rellena los 320 kb hasta 1411 kb con bits sin sentido, la tasa de bits de un archivo PCM viene dada por el valor de bit por muestra, el número de canales y la frecuencia de muestreo. Para el audio de CD estándar, esto es (2 canales) * (frecuencia de muestreo de 44,1 KHz) * (16 bits por muestra) = 1411 kbps.
skelly
Simple, MP3 está comprimido, FLAC no está comprimido. Cuando convierte, descomprime los datos MP3.
Moab
2
Eso está mal. FLAC es un formato de compresión de audio.
Ryan C. Thompson

Respuestas:

31

La razón por la que el FLAC es más grande que el MP3 de los mismos datos es porque codifican de manera diferente. :) MP3 solo codifica información perceptiva, mientras que FLAC almacena cada mota de datos, solo en un formato más compacto.

  • Convertir un WAV en un FLAC es como convertir un BMP en un PNG.
    • Los mismos píxeles exactos, pero comprimidos sin pérdidas como un archivo ZIP en un tamaño más pequeño.
  • Convertir un WAV a un MP3 es como convertir un BMP a un JPEG.
    • En lugar de almacenar píxeles exactos, en realidad está almacenando instrucciones para generar cuadrados con ondas de color que se parecen al original.

Del mismo modo, MP3 solo almacena instrucciones para generar ondas que, cuando se agregan, suenan como el original. Pero la diferencia entre la señal verdadera y la señal generada (la señal de error) consiste en artefactos ruidosos aleatorios, como jaggies JPEG . Cuando almacena esto en un formato perfeccionista como FLAC, necesita almacenar todos esos jaggies, y el ruido aleatorio es más difícil de comprimir sin pérdida, por lo que aumenta el tamaño del archivo. (El ruido verdaderamente aleatorio es incompresible. Cuando comprime un archivo sin pérdidas, está eliminando patrones repetitivos redundantes y haciendo que se parezca más al ruido aleatorio).

Apuesto a que si convierte el JPEG a PNG, verá el mismo tipo de aumento de tamaño que cuando se convierte MP3 a FLAC, ya que el códec perfeccionista sin pérdidas necesita recordar cada pequeña irregularidad y artefacto que no estaba en el bmp original.

Esta analogía no es perfecta, ya que el audio se parece más a una foto que a un diagrama lineal, pero ayuda a transmitir la idea:

Tamaño BMP original: 29 kB

Puntos azules en forma PNG

Tamaño PNG: 629 B

Puntos azules en formato JPEG con jaggies

Tamaño JPEG: 1.7 kB

Puntos azules con jaggies re-codificados a PNG

PNG creado a partir de JPEG: 6.2 kB

endolito
fuente
3
Pero, por supuesto, una vez que un archivo se convierte a JPG, los datos se pierden y no se pueden recuperar mediante la conversión a PNG. Si hay más datos en el FLAC / PNG, gran parte de ellos serán ficticios.
Pavium
1
Si. Se pierden datos significativos y se crean datos erróneos.
endolito el
1
Eso se ilustra claramente en los diagramas de ejemplo del endolito.
hplbsh
1
Esta es una respuesta increíblemente completa. ¡Buen trabajo!
cowgod
1
Tienes razón. No sé lo que estaba pensando.
Kevin Panko
2

Cuando decodifica un MP3, sin importar la tasa de bits, obtiene un audio PCM estándar de 1411 kbps / 44100Hz 16 bits (o lo que sea que sea la fuente) que tiene todos los efectos notables y no notables del proceso de codificación con pérdida, este formato es necesario para la reproducción y codificación / re-codificación, cualquier archivo de cualquier códec se descomprime cuando lo reproduce en su computadora, reproductor de MP3, etc.

Al codificador FLAC no le importa si el audio que está comprimiendo proviene de un MP3 decodificado o un CD nuevo, simplemente reducirá el tamaño del archivo fuente sin ningún cambio en los datos de audio, haciendo posible una recuperación completa de la fuente, Un proceso sin pérdidas.

Un archivo FLAC hecho de un MP3 sonará exactamente como el MP3, un archivo FLAC hecho de una pista de CD sonará exactamente como el CD.

skelly
fuente
0

Para responder la segunda parte, si vuelve a convertir a un WAV desde el MP3, luego elige un codificador sin pérdidas, debe tener un archivo de calidad idéntica cuando haya terminado.

En cuanto a por qué el FLAC es más grande que el MP3, está tomando uno de los formatos más comprimidos, descomprimiéndolo y luego volviéndolo a comprimir en una herramienta de compresión menos eficiente (aunque con una reproducción de mayor calidad).

Es como preguntar por qué la conversión de un JPG a PNG lo hace más grande: está descomprimiendo [parcialmente] el archivo y luego lo vuelve a comprimir sin pérdidas. FLAC, como PNG, no está optimizado para el espacio , sino para la calidad .

madriguera
fuente
FLAC (y PNG) no tienen pérdidas, por lo que decir que están optimizados para la calidad no tiene sentido.
Joakim Elofsson el
3
@Joakim: sin pérdida == calidad máxima, por lo que los formatos sin pérdida están optimizados para la calidad por definición .
quack quijote
2
ese es mi punto, por definición, por lo que no hay optimización. si la definición es calidad máxima, entonces no hay nada que optimizar
Joakim Elofsson el
0

mp3 requiere que un decodificador sea reproducible, el resultado del decodificador es una aproximación de la pista original (generalmente de un CD), por lo que el decodificador agrega datos para que sea reproducible (y esto no es información sin sentido). La aproximación resultante obtuvo la misma tasa de bits que la pista original. Sin decodificar el mp3, la información no tiene sentido, por lo que no se puede convertir a otra cosa (a menos que sea una codificación muy similar, como estéreo-mp3 a 2X mono-mp3). Y FLAC y mp3 ni siquiera son similares. Cuando decodifica un FLAC, el resultado no es una aproximación de los datos originales codificados en FLAC, sino que es exactamente el mismo.

Joakim Elofsson
fuente