Mówiąc dokładniej niż w tytule, załóżmy, że mam plik MP3 o szybkości 320 kb / s. Jeśli go zdekompresuję, to logicznie wszystkie dane z wyjątkiem około 320 kilobitów na każdą sekundę dźwięku powinny być nadmiarowymi danymi, które można skompresować. Kiedy koduję zdekompresowany plik do FLAC lub innego bezstratnego kodeka, dlaczego jest on o wiele większy?
W pokrewnej uwadze, czy teoretycznie jest możliwe bezstratne odzyskanie źródłowego dźwięku mp3 z dekompresowanego wav? (Wiem, że sam plik mp3 jest stratny. Pytam, czy można go ponownie zakodować bez żadnych dalszych strat).
EDYCJA: Pozwól mi wyjaśnić powiązane pytanie i uzasadnienie tego. Załóżmy, że mam plik WAV, który został zdekompresowany z pliku MP3 (i zakładam, że z jakiegoś powodu nie mam samego pliku MP3). Jeśli nie chcę stracić więcej jakości, mogę ponownie zakodować go za pomocą FLAC lub innego bezstratnego kodera i uzyskać większy plik, aby zachować tę samą jakość. Mogę też ponownie zakodować go do formatu mp3 i uzyskać taki sam rozmiar jak oryginał, ale stracić więcej danych. Oczywiście żaden z tych przypadków nie jest idealny. Mogę mieć oryginalny rozmiar lub oryginalną jakość, ale nie oba (mam na myśli jakość oryginalnego mp3, a nie oryginalne bezstratne źródło). Moje pytanie brzmi: czy możemy dostać oba? Czy teoretycznie możliwe jest odzyskanie stratnie skompresowanych danych z stratnych, zdekompresowanych danych, bez utraty jeszcze więcej?
Jeśli to możliwe, wyobrażam sobie algorytm bezstratnej kompresji, który kompresuje dźwięk za pomocą FLAC. Następnie skanuje również dźwięk pod kątem wszelkich oznak wcześniejszej stratnej kompresji, a jeśli zostanie wykryty, ponownie kompresuje go bezstratnie do oryginalnego pliku stratnego. Następnie zachowuje dowolny plik, który jest mniejszy.
źródło
Odpowiedzi:
Powodem, dla którego FLAC jest większy niż MP3 tych samych danych, jest to, że kodują one inaczej. :) MP3 po prostu koduje informacje percepcyjne, podczas gdy FLAC przechowuje każdą pojedynczą plamkę danych, tylko w bardziej kompaktowym formacie.
Podobnie, MP3 przechowuje tylko instrukcje generowania zmarszczek, które po zsumowaniu brzmią jak oryginalne. Różnica między sygnałem prawdziwym a sygnałem generowanym (sygnałem błędu) składa się z przypadkowych, hałaśliwych artefaktów, takich jak JPEG jaggies . Kiedy następnie przechowujesz to w perfekcjonistycznym formacie, takim jak FLAC, musi przechowywać wszystkie te jaggies, a losowy hałas jest trudniejszy do skompresowania bezstratnie, więc zwiększa rozmiar pliku. (Prawdziwie losowy szum jest nieściśliwy. Gdy kompresujesz plik bezstratnie, eliminujesz zbędne powtarzające się wzorce i sprawiasz, że wygląda bardziej jak losowy szum).
Założę się, że jeśli przekonwertujesz JPEG na PNG, zobaczysz taki sam wzrost wielkości, jak podczas konwertowania MP3 na FLAC, ponieważ perfekcyjny bezstratny kodek musi pamiętać każdy mały szum i artefakt, który nie był w oryginalnym bmp.
Ta analogia nie jest idealna, ponieważ dźwięk jest bardziej jak zdjęcie niż schemat grafiki liniowej, ale pomaga w zrozumieniu:
Oryginalny rozmiar BMP: 29 kB
Rozmiar PNG: 629 B.
Rozmiar JPEG: 1,7 kB
PNG utworzony z JPEG: 6,2 kB
źródło
Podczas dekodowania pliku MP3, bez względu na bitrate, otrzymujesz standardowy dźwięk PCM 1411 kb / s / 44100 Hz (lub cokolwiek to było źródło), który ma wszystkie zauważalne i niezauważalne efekty procesu kodowania stratnego, ten format jest wymagany do odtwarzania i kodowanie / ponowne kodowanie, każdy plik dowolnego kodeka jest dekompresowany podczas odtwarzania na komputerze, odtwarzaczu MP3 itp.
Koder FLAC nie dba o to, czy skompresowany przez niego dźwięk pochodzi z dekodowanego pliku MP3 lub z nowej płyty CD, po prostu zmniejszy rozmiar pliku źródłowego bez zmiany danych audio, umożliwiając pełne odzyskanie źródła, bezstratny proces.
Plik FLAC utworzony z MP3 będzie brzmiał dokładnie tak samo jak MP3, plik FLAC utworzony ze ścieżki CD będzie brzmiał dokładnie tak samo jak CD.
źródło
Aby odpowiedzieć na drugą część, jeśli konwertujesz z powrotem do WAV z MP3, a następnie wybierasz bezstratny koder, powinieneś mieć plik o identycznej jakości po zakończeniu.
Jeśli chodzi o to, dlaczego FLAC jest większy niż MP3, bierzesz jeden z bardziej skompresowanych formatów, dekompresujesz go, a następnie ponownie kompresujesz w mniej wydajnym narzędziu do kompresji (choć z wyższą jakością odtwarzania).
To trochę jak pytanie, dlaczego konwersja JPG do PNG czyni go większym - [częściowo] dekompresujesz plik, a następnie kompresujesz bezstratnie. FLAC, podobnie jak PNG, nie jest zoptymalizowany pod kątem miejsca , ale jakości .
źródło
mp3 wymaga dekodera do odtworzenia, wynikiem dekodera jest przybliżenie oryginalnej ścieżki (zwykle z płyty CD), więc dekoder dodaje dane, aby umożliwić odtwarzanie (i nie są to nonsensowne dane). Wynikowe przybliżenie uzyskało taką samą szybkość transmisji jak oryginalny utwór. Bez dekodowania mp3 informacja nie ma sensu, więc nie można go przekonwertować na nic innego (chyba że kodowanie bardzo podobne, np. Stereo-mp3 na 2X mono-mp3). A FLAC i mp3 nie są nawet podobne. Podczas dekodowania FLAC wynik nie jest przybliżeniem danych oryginalnych zakodowanych w FLAC, ale jest dokładnie taki sam.
źródło