3.7. Zaawansowane audio

3.7.1. Dźwięk przestrzenny/wielokanałowy

3.7.1.1. DVDs

Większość płyt DVD, a także wiele innych plików, zawiera dźwięk przestrzenny. MPlayer obsługuje dźwięk przestrzenny, ale opcja ta nie jest domyślnie włączona, ponieważ sprzęt przeznaczony dla zwykłego stereo jest znacznie bedziej popularny. Aby odtworzyć plik zawierający więcej niż dwa kanały audio, użyj opcji -channels. Na przykład, aby odtworzyć DVD z audio 5.1:

mplayer dvd://1 -channels 6

Zauważmy, że mimo nazwy "5.1", używanych jest 6 kanałów. Jeżeli posiadasz sprzęt pozwalający na odtwarzanie dźwięku przestrzennego możesz bezpiecznie wpisać channels do swojego pliku konfiguracyjnego MPlayera (~/.mplayer/config). Przykładowo, aby domyślnie włączyć efekt kwadrofonii, należy dodać wiersz:

channels=4

Od tego momentu, MPlayer będzie odtwarzał cztery kanały audio, zawsze gdy będą one dostępne.

3.7.1.2. Odtwarzanie plików stereo przy użyciu czterech głośników

MPlayer standardowo nie duplikuje kanałów, ani nie robi tego większość sterowników audio. Jeżeli chcesz zrobić to ręcznie:

mplayer filename -af channels=2:2:0:1:0:0

Zobacz sekcję o kopiowaniu kanałów, jest tam wyjaśnienie tego polecenia.

3.7.1.3. Przekazywanie AC3/DTS

Dźwięk przestrzenny na płytach DVD zazwyczaj kodowany jest w formacie AC3 (Dolby Digital) lub DTS (Digital Theater System). Część współczesnego sprzętu audio jest w stanie dekodować te formaty. MPlayer może zostać skonfigurowany, aby przekazywał dane audio bez ich dekodowania. Rozwiązanie takie będzie działało tylko, jeżeli posiadasz w swojej karcie muzycznej złącze S/PDIF (Sony/Philips Digital Interface).

Jeżeli twój sprzęt audio potrafi dekodować zarówno AC3 jak i DTS, możesz bezpiecznie włączyć przekazywanie dla obu formatów. W przeciwnym razie, tylko dla tego formatu, który jest obsługiwany przez Twój sprzęt.

Aby włączyć przekazywanie z wiersza poleceń:

  • dla AC3 użyj -ac hwac3

  • dla DTS użyj -ac hwdts

  • dla AC3 i DTS użyj -afm hwac3

Aby włączyć przekazywanie w pliku konfiguracyjnym MPlayera:

  • dla AC3 użyj ac=hwac3,

  • dla DTS użyj ac=hwdts,

  • dla AC3 i DTS użyj afm=hwac3

Zauważ, że na końcu opcji ac=hwac3, oraz ac=hwdts, są przecinki. Powodują one, że MPlayer będzie używał standardowych kodeków, które są normalnie używane podczas odtwarzania plików, które nie posiadają dźwięku AC3 ani DTS. Opcja afm=hwac3 nie wymaga przecinka, samo podanie rodziny kodeków powoduje że MPlayer wypróbuje inne gdy będzie musiał.

3.7.1.4. Przekazywanie dźwięku MPEG

Cyfrowe transmisje TV (takie jak DVB czy ATSC), także niektóre płyty DVDs zazwyczaj zawierają strumienie audio w formacie MPEG (zazwyczaj MP2). Część sprzętowych dekoderów MPEG, takich jak pełnofunkcjonalne karty DVB, oraz adaptery DXR2, potrafi natywnie dekodować ten format. MPlayer może zostać tak skonfigurowany, aby przekazywać dane audio bez ich dekodowania.

Aby użyć tego sposobu dekodowania:

 mplayer -ac hwmpa 

3.7.1.5. Dźwięk zakodowany macierzowo

***TODO***

Ta sekcja musi dopiero zostać napisana i nie może zostać ukończona zanim ktoś nie dostarczy przykładowych plików do testów. Jeżeli posiadasz jakieś pliki audio zakodowane macierzowo (matrix-encoded), wiesz kto je posiada lub wiesz cokolwiek co mogłoby być pomocne, wyślij proszę informację na listę mailingową MPlayer-DOCS W temacie podaj "[matrix-encoded audio]".

Jeżeli nie nadejdą żadne wiadomości, ta sekcja zostanie usunięta.

Przydatne linki:

3.7.1.6. Emulacja przestrzeni w słuchawkach

MPlayer posiada filtr HRTF (Head Related Transfer Function) bazujący na projekcie MIT, w ramach którego wykonane zostały pomiary z mikrofonów zamontowanych na głowie ludzkiego manekina.

Chociaż nie jest możliwe dokładne zasymulowanie systemu dźwięku przestrzennego, filtr HRTF zawarty w MPlayerze powoduje bardziej przestrzenne zanurzenie w dźwięku przy użyciu 2-kanałowych słuchawek. Standardowy procedura po prostu łączy wszystkie kanały w dwa. hrtf, obok łączenia kanałów, generuje także subtelne echa, nieznacznie zwiększa separację kanałów stereo, a także zmienia głośność niektórych częstotliwości. To, czy dźwięk HRTF brzmi lepiej, może zależeć od źródła dźwięku oraz gustu słuchacza, ale z pewnością jest on warty wypróbowania.

Odtwarzanie DVD z HRTF:

mplayer dvd://1 -channels 6 -af hrtf

hrtf działa poprawnie tylko przy 5 i 6 kanałach. Opcja ta wymaga także audio próbkowanego z częstotliwością 48kHz. Audio na płytach DVD jest już próbkowane 48kHz, lecz jeżeli chcesz odtworzyć plik z innym próbkowaniem i opcją hrtf, musisz dokonać jego przepróbkowania tego pliku:

mplayer filename -channels 6 -af resample=48000,hrtf

3.7.1.7. Rozwiązywanie problemów

Jeżeli nie słyszysz żadnych dźwięków, sprawdź ustawienia miksera przy pomocy stosownego programu, takiego jak alsamixer; niejednokrotnie wyjścia audio są domyślnie wyciszone lub ich głośność jest ustawiona na zero.

3.7.2. Manipulowanie kanałami

3.7.2.1. Ogólne informacje

Niestety nie ma żadnego standardu opisującego w jaki sposób kanały są uporządkowane. Poniższe porządki przedstawiają te używane przez AC3, które są dość typowe. Spróbuj ich i sprawdź czy odpowiednie źródła dźwięku się zgadzają. Kanały są numerowane od 0.

mono

  1. środkowy

stereo

  1. lewy

  2. prawy

kwadrofonia

  1. lewy przedni

  2. prawy przedni

  3. lewy tylny

  4. prawy tylny

surround 4.0

  1. lewy przedni

  2. prawy przedni

  3. środkowy tylny

  4. środkowy przedni

surround 5.0

  1. lewy przedni

  2. prawy przedni

  3. lewy tylny

  4. prawy tylny

  5. środkowy przedni

surround 5.1

  1. lewy przedni

  2. prawy przedni

  3. lewy tylny

  4. prawy tylny

  5. środkowy przedni

  6. subwoofer (głośnik niskotonowy)

Opcja -channels jest używana w celu określenia liczby kanałów dekodowanego audio. Niektóre kodeki audio wykorzystują tę liczbę aby zdecydować czy konieczne jest zmniejszenie liczby kanałów poprzez miksowanie. Zauważ, że ustawienie tej opcji nie jest równoważne z ustawieniem liczby wyjściowych kanałów. Przykładowo, używając opcji -channels 4 aby odtworzyć plik stereo MP3, otrzymamy 2 kanały wyjściowe, bowiem kodek MP3 nie potrafi spreparować dodatkowych kanałów.

Filtr audio channels może być użyty aby stworzyć lub usunąć kanały, co może być przydatne przy określaniu liczy kanałów przesyłanych do karty muzycznej. Aby dowiedzieć się więcej, zobacz kolejne sekcje.

3.7.2.2. Odtwarzanie dźwięku mono przy użyciu dwóch głośników

Dźwięk mono brzmi znacznie lepiej, gdy jest odtwarzany przy użyciu dwóch głośników - szczególnie gdy używamy słuchawek. Pliki audio, które posiadają tylko jeden kanał audio są automatycznie odtwarzane przy użyciu obu głośników; niestety większość plików mono jest zakodowana jako dźwięk stereo, gdzie jeden kanał jest wyciszony. Najłatwiejszą i najbardziej niezawodną metodą pozwalającą na odtworzenie dźwięku przy użyciu obu głośników jest użycie filtru extrastereo:

mplayer filename -af extrastereo=0

Metoda ta uśrednia oba kanały, co skutkuje zmniejszeniu głośności każdego z kanałów o połowę względem oryginału. W następnej sekcji zawarto przykłady innych metod rozwiązania tego problemu bez zmniejszania głośności; niestety są one bardziej skomplikowanego i wymagają różnych opcji w zależności od kanału, który zawiera dane. Jeżeli na prawdę potrzebujesz utrzymać głośność, możliwe że łatwiej będzie odpowiednio dopasować głośność przy użyciu filtru volume. Na przykład:

mplayer filename -af extrastereo=0,volume=5

3.7.2.3. Kopiowanie i przesuwanie kanałów

Filtr channels potrafi przesunąć dowolny jeden lub wszystkie kanały. Ustawienie wszystkich podopcji filtru channels może być skomplikowane i wymaga nieco uwagi.

  1. Zdecyduj ile wyjściowych kanałów audio potrzebujesz. Oto pierwsza podopcja.

  2. Policz ile przesunięć kanałów zamierzasz wykonać. To jest druga podopcja. Każdy kanał może być przesunięty do kilku różnych kanałów w tym samym czasie, ale pamiętaj, że gdy przesuniesz kanał (również gdy tylko do jednego kanału docelowego), źródło zostanie opróżnione, chyba że inny kanał zostanie tam przesunięty. Aby skopiować kanał, pozostawiając źródło nietknięte, po prostu przesuń kanał zarówno do miejsca kopiowania, jak i do źródła. Na przykład:

    kanał 2 --> kanał 3
    kanał 2 --> kanał 2

  3. Wypisz kopie kanałów jako pary subopcji. Pamiętaj, że pierwszy kanał ma numer 0, drugi 1 itd. Kolejność subopcji nie jest istotna tak długo, ale muszą one być pogrupowane w pary typu źródło:cel.

Przykład: jeden kanał w dwóch głośnikach

Oto przykład innej metody odtwarzania jednego kanału w dwóch głośnikach. Załóżmy, że lewy kanał ma być odtwarzany, a prawy ma zostać pominięty. Zgodnie z krokami opisanymi powyżej:

  1. Aby dostarczyć dźwięk do każdego z dwóch głośników, pierwsza opcja musi mieć wartość "2".

  2. Lewy kanał musi zostać przesunięty do prawego kanału oraz lewego, aby nie został on pusty. Sumaryczna liczba przesunięć to dwa, zatem druga opcja to również "2".

  3. Aby przesunąć lewy kanał (kanał 0) do kanału prawego (kanał 1), para subopcji musi byc "0:1", "0:0" przesunie lewy kanał do siebie.

Po połączeniu wszystkiego razem otrzymamy:

mplayer filename -af channels=2:2:0:1:0:0

Przewaga tego przykładu nad opcją extrastereo jest taka, że głośność każdego z kanałów wyjściowych pozostanie taka sama jak kanału źródłowego. Wadą jest, że podopcje muszą zostać zmienione na "2:2:1:0:1:1", gdy dźwięk zawiera kanał prawy. Ponadto trudniej to zapamiętać i wpisać.

Przykład: lewy kanał w obu głośnikach (skrót)

Istnieje znacznie łatwiejsza metoda na użycie filtru channels w celu odtworzenia lewego kanału w dwóch głośnikach:

mplayer filename -af channels=1

Drugi kanał jest pomijany, a pierwszy jest pozostawiany, bez dodatkowych podopcji. Sterowniki kart muzycznych automatycznie odtwarzają jednokanałowy dźwięk wykorzystując oba głośniki. Oczywiście zadziała to tylko, gdy pożądanym kanałem jest kanał lewy.

Przykład: kopiowanie kanałów przednich do kanałów tylnych

Kolejną typową operacją jest kopiowanie kanałów przednich i odtwarzanie ich z tylnych głośników zestawu kwadrofonicznego.

  1. Potrzebujemy czterech kanałów wyjściowych, więc pierwsza podopcja to "4".

  2. Każdy z przednich kanałów musi zostać przesunięty do odpowiedniego kanału tylnego oraz do siebie. W sumie użyte będą cztery przesunięcia, więc druga opcja to "4".

  3. Lewy przedni kanał (kanał 0) musi zostać przesunięty do lewego tylnego (kanał 2): "0:2". Lewy przedni musi być także przesunięty do siebie: "0:0". Prawy przedni (kanał 1) musi zostać przesunięty do prawego tylnego (kanał 3): "1:3" oraz do siebie: "1:1".

Po połączeniu wszystkich podopcji otrzymujemy:

mplayer filename -af channels=4:4:0:2:0:0:1:3:1:1

3.7.2.4. Miksowanie kanałów

Filtr pan potrafi zmiksować kanały w określonych przez użytkownika proporcjach. Pozwala to na wykonanie wszystkiego tego co potrafi filtr channels i wiele więcej. Niestety podopcje są tutaj znacznie bardziej skomplikowane.

  1. Zdecyduj z iloma kanałami chcesz pracować. Aby to określić możesz potrzebować użyć -channels i/lub -af channels. Późniejsze przykłady pokażą kiedy użyć którego.

  2. Zdecyduj ile kanałów ma zostać wprowadzonych do pan (dalsze dekodowane kanały zostaną porzucone). To jest pierwsza podopcja. Kontroluje ona także liczbę kanałów używanych jako wyjście.

  3. Pozostałe podopcje określają jak dużą część danego kanału zmiksować do kanału docelowego. To jest najbardziej skomplikowana część. Aby sprostać temu zadaniu, podzielmy podopcje na kilka grup, po jednej dla każdego kanału wyjściowego. Każda podopcja w zbiorze odpowiada pojedynczemu kanałowi wejściowemu. Liczba, którą podasz odpowiada części kanału wejściowego, która zostanie zmiksowana w kanale wyjściowym.

    pan akceptuje wartości od 0 do 512, co odpowiada wartościom od 0% do 51200% oryginalnej głośności. Bądź ostrożny używając wartości większych od 1. Może to spowodować nie tylko bardzo duże zwiększenie głośności, ale także, jeżeli przekroczysz zakres swojej karty muzycznej, możesz usłyszeć okropne trzaski. Jeżeli chcesz, możesz stosować po filtrze pan dopisać ,volume, co włączy obcinanie głośności, jednak najlepiej używać na tyle małych wartości parametrów pan, aby przycinanie nie było potrzebne.

Przykład: jeden kanał w dwóch głośnikach

Oto jeszcze jeden przykład, jak odtworzyć lewy kanał w dwóch głośnikach. Postępując zgodnie z krokami opisanymi powyżej:

  1. pan powinien używać dwóch kanałów wyjściowych, więc pierwsza podopcja to "2".

  2. Ponieważ mamy dwa kanały wejściowe, będziemy mieli dwie grupy podopcji. Ponieważ używane są również dwa kanały wyjściowe, w każdej grupie będą po dwie podopcje. Lewy kanał z pliku powinien zostać skopiowany z pełną głośnością do nowych kanału: lewego i prawego. W związku z tym, pierwsza grupa podopcji to "1:1". Prawy kanał powinien zostać pominięty, zatem druga grupa to "0:0". Wszelkie zera na końcu listy podopcji mogą zostać pominięte, ale dla przejrzystości przykładu, pozostawimy je.

Po złączeniu wszystkich podopcji otrzymamy:

mplayer filename -af pan=2:1:1:0:0

Jeżeli pożądanym kanałem jest prawy, a nie lewy, podopcje zmienią się na "2:0:0:1:1".

Przykład: lewy kanał w dwóch głośnikach (skrót)

Podobnie jak przy użyciu channels, istnieje skrót działający tylko z lewym kanałem:

mplayer filename -af pan=1:1

Jeżeli pan posiada tylko jeden kanał wejściowy (pozostałe kanały są pomijane), potrzebna jest tylko jedna grupa podopcji z jedną podopcją, która oznacza, że jedyny kanał będzie zawierał 100% siebie.

Przykład: zmniejszanie liczy kanałów w 6-kanałowym PCM

Dekoder 6-kanałowego PCM zawarty w MPlayerze nie potrafi zmniejszać liczby kanałów przez miksowanie. Oto metoda dokonania tego przy użyciu opcji pan:

  1. Liczba kanałów wyjściowych to 2, więc pierwsza podopcja to "2".

  2. Jako, że mamy 6 kanałów wejściowych, musimy użyć sześciu grup opcji. Na szczęście, ponieważ interesują nas tylko dwa pierwsze kanały, możemy użyć tylko dwóch grup opcji; pozostałe cztery grupy mogą zostać pominięte. Pamiętaj, że nie wszystkie wielokanałowe pliki audio mają tę samą kolejność kanałów. Poniższy przykład pokazuje zmniejszanie liczby kanałów w pliku, w którym kolejność kanałów jest taka, jak w AC3 5.1:

    0 - lewy przedni
    1 - prawy przedni
    2 - lewy tylny
    3 - prawy tylny
    4 - środkowy przedni
    5 - subwoofer (głośnik niskotonowy)

    Pierwsza grupa podopcji zawiera kolejne wartości oryginalnej głośności lewego przedniego kanału, które powinny być dostarczone do odpowiednich kanałów wyjściowych: "1:0". Prawy przedni kanał powinien zostać przeniesiony do prawego wyjściowego: "0:1". Analogicznie dla kanałów tylnych: "1:0" i "0:1". Kanał środkowy powinien zostać przeniesiony do obu kanałów wyjściowych z połową głośności: "0.5:0.5", zaś kanał głośnika niskotonowego powinien być słyszalny w obu kanałach wyjściowych z pełną głośnością: "1:1".

Połącz wszystko razem, a otrzymasz:

mplayer 6-channel.wav -af pan=2:1:0:0:1:1:0:0:1:0.5:0.5:1:1

Przedstawione powyżej głośności są tylko przybliżonym przykładem. Nie czuj się nimi skrępowany i zmieniaj je zgodnie ze swoim uznaniem.

Przykład: Odtwarzanie audio 5.1 przy pomocy dużych głośników, bez subwoofera

Jeżeli posiadasz parę dużych przednich głośników, możesz nie mieć ochoty tracić pieniędzy na dodatkowy głośnik niskotonowy, tylko po to, aby mieć kompletny system 5.1. Jeżeli użyjesz opcji -channels 5, przekażesz do lib52 informację, że ma dekodować audio 5.1 dla systemu 5.0. Tym sposobem kanał głośnika niskotonowego zostanie po prostu pominięty. Jeżeli chcesz rozdzielić kanał subwoofera samodzielnie, musisz dokonać ręcznego zmiksowania przy użyciu pan:

  1. Jako, że pan musi analizować wszystkie 6 kanałów, podaj opcję -channels 6, aby liba52 zdekodował je wszystkie.

  2. Ponieważ pan będzie używał pięciu kanałów wyjściowych, pierwsza podopcja to "5".

  3. Sześć kanałów wejściowych i pięć wyjściowych oznacza 6 grup po 5 podopcji.

    • Lewy przedni kanał replikuje samego siebie: "1:0:0:0:0"

    • Identycznie dla prawego przedniego kanału: "0:1:0:0:0"

    • Tak samo dla lewego tylnego: "0:0:1:0:0"

    • Oraz tak samo dla prawego tylnego: "0:0:0:1:0"

    • Środkowy też: "0:0:0:0:1"

    • Teraz musimy zdecydować, co zrobić z subwooferem. Na przykład możemy podzielić go po połowie na lewy przedni i prawy przedni: "0.5:0.5:0:0:0"

Po połączeniu wszystkich opcji otrzymasz:

mplayer dvd://1 -channels 6 -af pan=5:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0.5:0.5:0:0:0

3.7.3. Programowa regulacja głośności

Niekóre ścieżki audio są zbyt ciche aby można ich komfortowo słuchać bez wzmocnienia. Staje się to problemem, gdy Twój sprzęt audio nie potrafi wzmacniać sygnału. Opcja -softvol instruuje MPlayera, aby ten używał wewnętrznego miksera. Możesz wtedy używać klawiszy strojenia głośności (domyślnie 9 i 0), aby uzyskać większe poziomy głośności. Pamiętaj, że nie omija to miksera Twojej karty muzycznej; MPlayer zwiększa tylko głośność sygnału przed przesłaniem go do Twojej karty. Poniższy przykład może być dobrym początkiem:

mplayer cichy-plik -softvol -softvol-max 300

Opcja -softvol-max określa maksymalny dozwolony poziom głośności, jako procent głośności oryginalnej. Przykładowo, -softvol-max 200 pozwoli na maksymalne zwiększenie głośności do 200% głośności oryginalnej. Można bezpiecznie używać dużych parametrów -softvol-max; większa głośność nie zostanie użyta, jeżeli nie zwiększysz jej przy pomocy klawiszy regulacji głośności. Jedyną wadą stosowania większych wartości jest to, że, ponieważ MPlayer ustala głośność jako procent głośności maksymalnej, nie będziesz w stanie precyzyjnie kontrolować głośności przy pomocy klawiszy regulacji głośności. Użyj mniejszych wartości parametrów -softvol-max i/lub dodaj opcję -volstep 1 aby uzyskać większą precyzję.

Opcja -softvol działa poprzez kontrolę filtru volume. Jeżeli chcesz odtwarzać plik z określoną głośnością, możesz podać opcję dla volume ręcznie:

mplayer cichy-plik -af volume=10

Pozwoli to na odtworzenie pliku z 10-decybelowym wzmocnieniem. Bądź ostrożny używając filtru volume - ustawiając zbyt dużą głośność możesz łatwo uszkodzić swój słuch. Zaczynaj od małych wartości i stopniowo zwiększaj je aż do uzyskania pożądanej głośności. Ponadto, jeżeli podasz zbyt dużą wartość, filtr volume może musieć przyciąć głośność, aby nie przesłać do karty muzycznej danych spoza akceptowalnego przez nią zakresu; będzie to powodować zniekształcenia dźwięku.