MP4 audio powyżej maksymalnej amplitudy

0

Czasem pobieram jakiś utwór muzyczny z Youtube w formacie MP4. Potem go słucham i zamieniam na WAV lub MP3 w zależności od potrzeb. W wielu przypadkach już na pierwszy rzut oka po wczytaniu do programu Audacity lub GoldWave widzę, że nagranie jest delikatnie przesterowane (w dzisiejszych czasach niestety jest to powszechne). Na słuch za pomocą dobrej jakości słuchawek zasłaniających całe małżowiny nie stwierdzam nieprawidłowości (właśnie na tym to polega, żeby nagranie było możliwie jak najgłośniejsze, ale dające się słuchać).

Najciekawsze jest to, że w jak wczytam takie nagranie do GoldWave lub Audacity, a potem uruchomię funkcję maksymalizacji głośności (zwiększenie głośności ile się da, ale bez odkształcania dźwięku, program sam liczy, o ile można rozgłośnić), to w większości przypadków program nieco ścisza nagranie, maksymalnie o ok. 2-3dB. Po takim ściszeniu, w maksymalnych wychyleniach amplitudy, jak analizuję fragmenty zawierające próbki mające skrajne wartości przed tym przyciszeniem, to często te same próbki mają różne wartości.

Stwierdziłem, że wewnętrznie program potrafi zapamiętać wartości próbek poza zakresem (jak to samo nagranie rozgłośniłem o dużą wartość, a zaraz potem o tą samą wartość ściszyłem, to nagranie pozostało nienaruszone). przy zapisaniu do WAV z oczywistych względów wartości poza zakresem są ograniczane do skrajnych wartości w zakresie, ale jak się zapisze wczytany MP4 jako WAV bez zmiany głośności, to nie słyszę żadnych różnic w brzmieniu i głośności dźwięku.

Moim zdaniem możliwa jest jedna z dwóch sytuacji:

  1. W obu programach jest błąd w algorytmie dekompresji MP4 polegający na tym, że dźwięk na wyjściu jest zbyt głośny i stąd niektóre wartości próbek uciekają poza zakres, choć wewnętrznie program zapamiętuje te wartości.
  2. Dźwięk po dekompresji jest odpowiedniej głośności, a różnice w wartościach leżących poza zakresem amplitudy są efektem błędów przybliżenia przy dekompresji, bo MP4 jest algorytmem kompresji stratnej i dźwięk po kompresji jest tylko przybliżeniem oryginalnego dźwięku, a po dekompresji jest tylko tym, co można było odtworzyć na podstawie danych o skompresowanym dźwięku.

Z jaką sytuacją najprawdopodobniej mam do czynienia?

1

W Audacity filtr Amplify słabo podgłaśnia.

Znacznie lepiej działa filtr Limiter, ale jak zapewne zauważysz, zniekształca falę.

Polecam spróbować. Może Ci spasuje ;)

0
andrzejlisek napisał(a):

Moim zdaniem możliwa jest jedna z dwóch sytuacji:

  1. W obu programach jest błąd w algorytmie dekompresji MP4 polegający na tym, że dźwięk na wyjściu jest zbyt głośny i stąd niektóre wartości próbek uciekają poza zakres, choć wewnętrznie program zapamiętuje te wartości.
  2. Dźwięk po dekompresji jest odpowiedniej głośności, a różnice w wartościach leżących poza zakresem amplitudy są efektem błędów przybliżenia przy dekompresji, bo MP4 jest algorytmem kompresji stratnej i dźwięk po kompresji jest tylko przybliżeniem oryginalnego dźwięku, a po dekompresji jest tylko tym, co można było odtworzyć na podstawie danych o skompresowanym dźwięku.

Z jaką sytuacją najprawdopodobniej mam do czynienia?

Opcja #2 jest bardzo prawdopodobna. Możesz sam to zresztą sprawdzić. Przekoduj jakieś nagranie (któremu daleko do przesterowania) do formatu MP4 i sprawdź maksymalne amplitudy przed i po kompresji. Obstawiam, że na wyjściu może pojawić się trochę próbek przekraczających maksymalne amplitudy na wejściu.

1

a potem uruchomię funkcję maksymalizacji głośności (zwiększenie głośności ile się da, ale bez odkształcania dźwięku, program sam liczy, o ile można rozgłośnić), to w większości przypadków program nieco ścisza nagranie, maksymalnie o ok. 2-3dB

Normalizacja głośności standardowo jest nie na maxa tylko do -3 dB, więc to nic dziwnego że właśnie o tyle przycisza ci przesterowany dźwięk.

a.png

Co do efektu "zapamiętywania wartości próbek poza zakresem" to nie tak. Audacity wewnętrznie operuje na 32-bitowych floatach, które mają ZNACZNIE większą precyzję i zakres niż 16-bitowe inty które zwykle masz w pliku WAV. Gdy zapisujesz projekt do pliku .aup to zapisujesz te floaty. Dopiero gdy eksportujesz do wave'a masz faktyczne przycięcie, zgodnie z wybranym formatem.

0

Mp4 z YouTube to tylko kontener. Dźwięk masz pewnie w aac, to tak na marginesie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1