Warum ist ein FLAC, der aus einer decodierten MP3-Datei codiert ist, größer als die MP3-Datei?

3148
Ryan Thompson

Um genauer zu sein als im Titel, nehme ich an, ich habe eine MP3-Datei mit 320 kbps. Wenn ich sie dekomprimiere, sollten logischerweise alle Daten außer etwa 320 Kilobit von jeder Sekunde Audio redundante Daten sein, die wegkomprimiert werden können. Wenn ich also die dekomprimierte Datei in FLAC oder einen anderen verlustfreien Codec codiere, warum ist sie dann so viel größer?

Ist es theoretisch möglich, das Quell-MP3-Audio verlustfrei aus einer dekomprimierten WAV-Datei wiederzugewinnen? (Ich weiß, dass das MP3 selbst verlustbehaftet ist. Ich frage, ob es möglich ist, ohne weiteren Verlust erneut zu kodieren .)

EDIT: Lassen Sie mich die damit zusammenhängende Frage und die dahinter stehenden Gründe erläutern. Angenommen, ich habe ein Wav, das aus einer MP3-Datei dekomprimiert wurde (und davon ausgehen, dass ich aus irgendeinem Grund nicht die MP3-Datei selbst habe). Wenn ich keine weitere Qualität verlieren möchte, kann ich sie mit FLAC oder einem anderen verlustfreien Encoder neu codieren und eine größere Datei erhalten, nur um die gleiche Qualität zu erhalten. Oder ich kann es erneut in mp3 umcodieren und die gleiche Größe wie das Original erhalten, aber mehr Daten verlieren. Offensichtlich ist keiner dieser Fälle ideal. Ich kann entweder die Originalgröße oder die Originalqualität haben, aber nicht beides (ich meine die Qualität des Original-MP3s, nicht die ursprüngliche verlustfreie Quelle). Meine Frage ist: Können wir beide bekommen? Ist es theoretisch möglich, die verlustbehafteten komprimierten Daten aus den verlustbehafteten dekomprimierten Daten wiederherzustellen, ohne noch mehr zu verlieren?

Wenn es möglich ist, könnte ich mir einen verlustfreien Kompressionsalgorithmus vorstellen, der das Audio mit FLAC komprimiert. Dann wird auch das Audiomaterial nach Anzeichen einer vorherigen verlustbehafteten Komprimierung durchsucht. Wenn es erkannt wird, wird es verlustfrei in die verlustbehaftete Originaldatei komprimiert. Dann bleibt die Datei kleiner.

13
Hier ist mein Lieblingshandbuch zum Rippen und Kodieren von Audio. Viel Spaß, es ist eine ausgezeichnete Lektüre: http://mp3.radified.com/ vor 14 Jahren 0
Der Decoder füllt den 320-kb-Wert nicht einfach mit bedeutungslosen Bits bis zu 1411 kb auf, die Bitrate einer PCM-Datei wird durch den Bit-pro-Abtastwert, die Anzahl der Kanäle und die Abtastrate angegeben. Für Standard-CD-Audio ist dies (2 Kanäle) * (44,1 kHz Abtastrate) * (16 Bit pro Abtastung) = 1411 kbps. skelly vor 14 Jahren 2
Einfach, MP3 ist komprimiert, FLAC ist unkomprimiert. Beim Konvertieren werden die MP3-Daten dekomprimiert. Moab vor 11 Jahren 0
Das ist falsch. FLAC ist ein Audiokomprimierungsformat. Ryan Thompson vor 11 Jahren 2

4 Antworten auf die Frage

31
endolith

Der Grund, warum FLAC größer ist als der MP3 der gleichen Daten, liegt darin, dass sie unterschiedlich codieren. :) MP3 kodiert lediglich Wahrnehmungsinformationen, während FLAC jeden einzelnen Datenpunkt in einem kompakteren Format speichert.

  • Ein WAV in ein FLAC zu konvertieren ist wie das Konvertieren eines BMP in ein PNG.
    • Gleiche genaue Pixel, jedoch verlustfrei komprimiert wie eine ZIP-Datei in eine kleinere Größe.
  • Das Konvertieren einer WAV in eine MP3 ist wie das Konvertieren eines BMP in ein JPEG.
    • Statt exakte Pixel zu speichern, werden hier tatsächlich Anweisungen zum Erzeugen von Quadraten mit Farbwellen gespeichert, die wie das Original aussehen.

In ähnlicher Weise speichert MP3 lediglich Anweisungen zum Erzeugen von Wellen, die, wenn sie zusammengefügt werden, so klingen wie das Original. Der Unterschied zwischen dem wahren Signal und dem erzeugten Signal (dem Fehlersignal) besteht jedoch aus zufälligen, rauschartigen Artefakten wie JPEG-Jaggies . Wenn Sie diese dann in einem Perfektionismus-Format wie FLAC speichern, müssen all diese Jaggies gespeichert werden, und zufälliges Rauschen lässt sich schwerer verlustfrei komprimieren, wodurch die Datei vergrößert wird. (Wirklich zufälliges Rauschen ist nicht komprimierbar. Wenn Sie eine Datei verlustfrei komprimieren, eliminieren Sie redundante Wiederholungsmuster und lassen sie eher wie zufälliges Rauschen aussehen.)

Ich wette, wenn Sie JPEG in PNG konvertieren, werden Sie die gleiche Vergrößerung wie bei der Konvertierung von MP3 in FLAC sehen, da der verlustfreie Perfektionist-Codec sich an jedes kleine Jaggy und Artefakt erinnern muss, das nicht im Original-BMP enthalten war.

Diese Analogie ist nicht perfekt, da Audio eher einem Foto als einem Liniendiagramm ähnelt, aber es hilft, die Idee zu vermitteln:

Ursprüngliche BMP-Größe: 29 kB

Blaue Punkte in PNG-Form

PNG-Größe: 629 B

Blaue Punkte in JPEG-Form mit Jaggies

JPEG-Größe: 1,7 kB

Blue dots with jaggies re-encoded to PNG

PNG erstellt aus JPEG: 6,2 kB

Sobald eine Datei in JPG konvertiert wurde, gehen die Daten jedoch verloren und können nicht durch die Konvertierung in PNG wiederhergestellt werden. Wenn im FLAC / PNG mehr Daten vorhanden sind, ist vieles davon fiktiv. pavium vor 14 Jahren 3
Ja. Bedeutungsvolle Daten gehen verloren und es werden fehlerhafte Daten erstellt. endolith vor 14 Jahren 1
Dies ist in den Beispieldiagrammen des Endolithen deutlich zu sehen. hplbsh vor 14 Jahren 1
Dies ist eine erstaunlich gründliche Antwort. Gut gemacht! cowgod vor 14 Jahren 1
Ok, ich denke, das wirft eine verwandte Frage auf: Kann man in dem Beispiel das genaue 1,7-kB-JPEG aus dem 6,2-kB-PNG-Format wiederherstellen? Kann eine verlustbehaftete Original-Audiodatei analog aus ihrer dekodierten Form wiederhergestellt werden? Ryan Thompson vor 14 Jahren 0
Well, the 6.2 kB PNG contains exactly the same information as the 1.7 kB JPEG, but I don't think you could recreate the original JPEG through the normal encoding process. You could probably write an analyzer to figure out what the original JPEG was, though, by doing a DCT of each 8x8 square. But there might be variants of the JPEG format that give multiple ways to encode the same pattern, so I don't know. endolith vor 14 Jahren 0
Ich denke, es wäre theoretisch möglich, ein Programm zu erstellen, das genau das Gegenteil von dem tut, was der MP3-Encoder getan hat. Wenn er genau wusste, welcher Codierungsalgorithmus verwendet wurde und welche Einstellungen verwendet wurden, würde er nur das Gegenteil tun . Es gibt jedoch keinen ultimativen Algorithmus für die "MP3-Codierung" - jedes Encoderprogramm kann etwas anders sein. In der Praxis ist dies also nicht möglich. Kevin Panko vor 14 Jahren 0
Es ist sogar theoretisch nicht möglich, genau das Gegenteil von dem zu tun, was der MP3-Encoder tut, da der MP3-Encoder Informationen dabei wegwirft. Deshalb heißt es "verlustbehaftete Komprimierung". Die Informationen gehen verloren und können niemals aus der kodierten Datei wiederhergestellt werden. Das Beste, was Sie tun können, ist es zu decodieren. Wenn Sie die Encoder-Einstellungen kennen, können Sie den Decoder wahrscheinlich ein wenig anpassen, um eine etwas genauere Darstellung zu erhalten, aber er wird niemals perfekt sein. endolith vor 14 Jahren 0
Du hast recht. Ich weiß nicht, was ich dachte. Kevin Panko vor 14 Jahren 1
Die Liniendiagramm-Analogie funktioniert, wenn Sie Kraftwerk hören. kinokijuf vor 11 Jahren 1
2
skelly

Wenn Sie eine MP3-Datei entschlüsseln, unabhängig von der Bitrate, erhalten Sie standardmäßiges PCM-Audio mit 1411 kbps / 44100 Hz 16bit (oder was auch immer die Quelle war), das alle auffälligen und nicht wahrnehmbaren Auswirkungen des verlustbehafteten Codiervorgangs aufweist Beim Kodieren / Umcodieren wird jede Datei eines beliebigen Codecs dekomprimiert, wenn Sie sie auf Ihrem Computer, MP3-Player usw. abspielen.

Dem FLAC-Encoder ist es egal, ob das zu komprimierende Audio von einer decodierten MP3-Datei oder einer brandneuen CD stammt. Die Größe der Quelldatei wird einfach reduziert, ohne dass die Audiodaten geändert werden müssen. Dadurch wird eine vollständige Wiederherstellung der Quelle möglich. ein verlustfreier Prozess.

Eine aus einem MP3 erstellte FLAC-Datei klingt genauso wie die MP3-Datei, eine aus einem CD-Track erstellte FLAC-Datei klingt genauso wie die CD.

0
warren

Um den zweiten Teil zu beantworten: Wenn Sie vom MP3-Gerät zurück in eine WAV -Datei konvertieren und einen verlustfreien Encoder auswählen, sollten Sie eine Datei mit identischer Qualität haben, wenn Sie fertig sind.

Der Grund, warum FLAC größer ist als MP3, verwenden Sie eines der stärker komprimierten Formate. Dekomprimieren Sie es und komprimieren Sie es in einem weniger effizienten Komprimierungswerkzeug (allerdings mit einer besseren Wiedergabequalität).

Es ist ein bisschen wie die Frage, warum das Konvertieren eines JPG in ein PNG größer wird - Sie dekomprimieren die Datei teilweise und dekomprimieren sie dann verlustfrei. FLAC ist wie PNG nicht auf Platz optimiert, sondern auf Qualität .

FLAC (und PNG) sind verlustfrei, so dass die Qualitätsoptimierung keinen Sinn macht. Joakim Elofsson vor 14 Jahren 0
@Joakim: verlustfrei == maximale Qualität, daher werden verlustfreie Formate für die Qualität * per Definition * optimiert. quack quixote vor 14 Jahren 3
Das ist mein Punkt, per Definition, also gibt es keine Optimierung. Wenn es sich bei der Definition um maximale Qualität handelt, gibt es nichts zu optimieren Joakim Elofsson vor 14 Jahren 2
0
Joakim Elofsson

mp3 erfordert, dass ein Decoder abspielbar ist, das Ergebnis des Decoders ist eine Annäherung an den Original-Track (normalerweise von einer CD), sodass der Decoder Daten hinzufügt, um ihn abspielbar zu machen (und dies sind keine unsinnigen Daten). Die resultierende Näherung hat dieselbe Bitrate wie der ursprüngliche Titel. Ohne das mp3-Format zu dekodieren, macht die Information keinen Sinn und kann daher nicht in irgendetwas anderes konvertiert werden (es sei denn, das Coding ist sehr ähnlich, z. B. Stereo-MP3 zu 2X Mono-MP3). Und FLAC und MP3 sind nicht annähernd ähnlich. Bei der Dekodierung eines FLAC ist das Ergebnis keine Annäherung der in FLAC codierten Origndaten, sondern genau dieselbe.