Pourquoi un FLAC encodé à partir d'un MP3 décodé est-il plus gros que le MP3?


13

Pour être plus précis que dans le titre, supposons que j'ai un fichier MP3 de 320 kbps. Si je le décompresse, alors logiquement, toutes les données à l'exception d'environ 320 kilobits par seconde d'audio doivent être des données redondantes, pouvant être compressées. Donc, quand j'encode le fichier décompressé en FLAC, ou tout autre codec sans perte, pourquoi est-il si grand?

Sur une note connexe, est-il théoriquement possible de récupérer sans perte l'audio mp3 source à partir d'un wav décompressé? (Je sais que le mp3 lui-même est avec perte. Je demande s'il est possible de ré-encoder sans autre perte.)

EDIT: Permettez-moi de clarifier la question connexe, et la justification derrière elle. Supposons que j'ai un wav qui a été décompressé à partir d'un fichier MP3 (et supposons que je n'ai pas le mp3 lui-même pour une raison quelconque). Si je ne veux plus perdre de qualité, je peux le ré-encoder avec FLAC ou tout autre encodeur sans perte et obtenir un fichier plus gros juste pour maintenir la même qualité. Ou, je peux le réencoder en mp3 à nouveau et obtenir la même taille que l'original mais perdre plus de données. De toute évidence, aucun de ces cas n'est idéal. Je peux avoir la taille d'origine ou la qualité d'origine, mais pas les deux (je veux dire la qualité du mp3 d'origine, pas la source sans perte d'origine). Ma question est: pouvons-nous obtenir les deux? Est-il théoriquement possible de récupérer les données compressées avec perte à partir des données décompressées avec perte, sans en perdre encore plus?

Si c'est possible, je pourrais imaginer un algorithme de compression sans perte qui comprime l'audio avec FLAC. Ensuite, il analyse également l'audio pour détecter tout signe de compression avec perte précédente et, s'il est détecté, le recompresse sans perte dans le fichier avec perte d'origine. Il conserve ensuite le fichier le plus petit.


voici mon guide préféré pour l'extraction et l'encodage audio. profitez-en, c'est une excellente lecture: mp3.radified.com

2
Le décodeur ne remplit pas simplement les 320kb jusqu'à 1411kb avec des bits sans signification, le débit binaire d'un fichier PCM est donné par la valeur bit par échantillon, le nombre de canaux et la fréquence d'échantillonnage. Pour un CD audio standard, il s'agit de (2 canaux) * (taux d'échantillonnage de 44,1 KHz) * (16 bits par échantillon) = 1411 kbps.
skelly

Simple, MP3 est compressé, FLAC n'est pas compressé. Lorsque vous convertissez, il décompresse les données MP3.
Moab

2
C'est faux. FLAC est un format de compression audio.
Ryan C. Thompson

Réponses:


31

La raison pour laquelle le FLAC est plus grand que le MP3 des mêmes données est parce qu'elles codent différemment. :) MP3 encode simplement les informations perceptuelles, tandis que FLAC stocke chaque grain de données, juste dans un format plus compact.

  • Convertir un WAV en FLAC, c'est comme convertir un BMP en PNG.
    • Mêmes pixels exacts, mais compressés sans perte comme un fichier ZIP dans une taille plus petite.
  • Convertir un WAV en MP3, c'est comme convertir un BMP en JPEG.

De même, MP3 stocke juste des instructions pour générer des ondulations qui, une fois ajoutées, ressemblent un peu à l'original. Mais la différence entre le signal vrai et le signal généré (le signal d'erreur) consiste en des artefacts bruyants aléatoires, comme des jaggies JPEG . Lorsque vous stockez ensuite cela dans un format perfectionniste comme FLAC, il doit stocker tous ces jaggies, et le bruit aléatoire est plus difficile à compresser sans perte, ce qui augmente la taille du fichier. (Le bruit vraiment aléatoire est incompressible. Lorsque vous compressez un fichier sans perte, vous éliminez les motifs répétitifs redondants et le faites ressembler davantage à du bruit aléatoire.)

Je parie que si vous convertissez le JPEG en PNG, vous verrez le même type d'augmentation de taille que vous voyez lors de la conversion de MP3 en FLAC, car le codec perfectionniste sans perte doit se souvenir de chaque petit jaggy et artefact qui n'était pas dans le bmp d'origine.

Cette analogie n'est pas parfaite, car l'audio ressemble plus à une photo qu'à un diagramme au trait, mais il aide à faire passer l'idée:

Taille BMP d'origine: 29 kB

Points bleus au format PNG

Taille PNG: 629 B

Points bleus au format JPEG avec des jaggies

Taille JPEG: 1,7 ko

Points bleus avec jaggies ré-encodés en PNG

PNG créé à partir de JPEG: 6,2 kB


3
Mais bien sûr, une fois qu'un fichier est converti en JPG, les données sont perdues et ne peuvent pas être récupérées en les convertissant en PNG. S'il y a plus de données dans le FLAC / PNG, une grande partie sera fictive.
pavium

1
Oui. Des données significatives sont perdues et des données erronées sont créées.
endolith

1
Cela est clairement illustré dans les diagrammes d'exemple d'endolith.
hplbsh

1
Ceci est une réponse incroyablement approfondie. Bon travail!
cowgod

1
Tu as raison. Je ne sais pas à quoi je pensais.
Kevin Panko

2

Lorsque vous décodez un MP3, quel que soit le débit binaire, vous obtenez un son PCM standard à 1411 kbit / s / 44 100 Hz (ou quelle que soit la source) qui possède tous les effets visibles et non visibles du processus d'encodage avec perte, ce format est requis pour la lecture et encodage / ré-encodage, tout fichier de n'importe quel codec est décompressé lorsque vous le lisez sur votre ordinateur, lecteur MP3, etc.

L'encodeur FLAC ne se soucie pas si l'audio en cours de compression provient d'un MP3 décodé ou d'un tout nouveau CD, il réduira simplement la taille du fichier source sans aucune modification des données audio, ce qui rendra possible une récupération complète de la source, un processus sans perte.

Un fichier FLAC créé à partir d'un MP3 sonnera exactement comme le MP3, un fichier FLAC créé à partir d'une piste de CD sonnera exactement comme le CD.


0

Pour répondre à la deuxième partie, si vous vous convertissez à nouveau en WAV à partir du MP3, puis choisissez un encodeur sans perte, vous devriez avoir un fichier de qualité identique lorsque vous avez terminé.

Quant à savoir pourquoi le FLAC est plus grand que le MP3, vous prenez l'un des formats les plus compressés, le décompressez, puis le recompressez dans un outil de compression moins efficace (mais avec une qualité de lecture plus élevée).

C'est un peu comme demander pourquoi la conversion d'un JPG en PNG l'agrandit - vous décompressez [partiellement] le fichier, puis recompressez sans perte. FLAC, comme PNG, n'est pas optimisé pour l' espace , mais pour la qualité .


FLAC (et PNG) sont sans perte, donc dire que ceux-ci sont optimisés pour la qualité n'a pas de sens.
Joakim Elofsson

3
@Joakim: sans perte == qualité maximale, donc les formats sans perte sont optimisés pour la qualité par définition .
Quack Quichote

2
c'est mon point, par définition donc il n'y a pas d'optimisation. si la définition est de qualité maximale, alors il n'y a rien à optimiser
Joakim Elofsson

0

mp3 demande qu'un décodeur soit lisible, le résultat du décodeur est une approximation de la piste originale (généralement à partir d'un CD), donc le décodeur ajoute des données pour le rendre lisible (et ce ne sont pas des données absurdes). L'approximation résultante a obtenu le même débit binaire que la piste d'origine. Sans décodage du mp3, les informations n'ont aucun sens, elles ne peuvent donc pas être converties en autre chose (à moins d'un encodage très similaire, comme un stéréo-mp3 en 2X mono-mp3). Et FLAC et mp3 ne sont même pas proches de similaires. Lorsque vous décodez un FLAC, le résultat n'est pas une approximation des données d'origine codées dans FLAC, mais c'est exactement la même chose.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.