3.9. Audio für Fortgeschrittene

3.9.1. Surround/Multichannel-Wiedergabe

3.9.1.1. DVDs

Die meisten DVDs und viele andere Dateien enthalten Surround-Sound. MPlayer unterstützt Surround-Wiedergabe, aktiviert diese jedoch nicht in der Voreinstellung, da Stereo-Ausrüstung weit gebräuchlicher ist. Um eine Datei abzuspielen, die mehr als zwei Audiokanäle hat, benutze die Option -channels. Um eine DVD mit 5.1-Ton abzuspielen, benutze beispielsweise:

mplayer dvd://1 -channels 6

Beachte, dass es sich trotz des Namens "5.1" um sechs diskrete Kanäle handelt. Wenn du eine entsprechende Ausrüstung für Surround-Sound hast, ist es sicher, die Option channels in die MPlayer-Konfigurationsdatei ~/.mplayer/config zu schreiben. Um zum Beispiel Quadrophonie-Wiedergabe als Voreinstellung zu verwenden, füge folgende Zeile hinzu:

channels=4

MPlayer wird dann den Ton in vier Kanäle ausgeben, falls alle vier Kanäle zur Verfügung stehen.

3.9.1.2. Stereo-Dateien auf vier Lautsprechern wiedergeben

MPlayer dupliziert per Voreinstellung keine Kanäle, genausowenig wie die meisten Audiotreiber. Wenn du dies manuell tun möchtest:

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

Siehe den Abschnitt über das Kopieren von Kanälen für eine Erklärung.

3.9.1.3. AC3/DTS-Passthrough

DVDs enthalten Surround-Ton normalerweise encodiert im Format AC3 (Dolby Digital) oder DTS (Digital Theater System). Manche moderne Audioausrüstung ist dazu in der Lage, diese Formate intern zu decodieren. MPlayer kann angewiesen werden, die Audiodaten weiterzuleiten, ohne diese zu decodieren. Dies wird jedoch nur funktionieren, wenn du einen S/PDIF- (Sony/Philips Digital Interface) Anschluß an deiner Soundkarte hast.

Wenn deine Audioausrüstung sowohl AC3 als auch DTS decodieren kann, ist es sicher, Passthrough für beide Formate zu aktivieren. Sonst solltest du Passthrough nur für das Format aktivieren, das deine Ausrüstung unterstützt.

Passthrough auf der Kommandozeile aktivieren:

  • Für nur AC3, benutze -ac hwac3

  • Für nur DTS, benutze -ac hwdts

  • Für AC3 und DTS, benutze -afm hwac3

Passthrough in der MPlayer-Konfigurationsdatei aktivieren:

  • Für nur AC3, benutze ac=hwac3,

  • Für nur DTS, benutze ac=hwdts,

  • Für AC3 und DTS, benutze afm=hwac3

Beachte, dass am Ende von ac=hwac3, und ac=hwdts, ein Komma (",")steht. Dies wird dafür sorgen, dass MPlayer auf andere Codecs zurückgreift, die er normalerweise benutzt, wenn eine Datei keinen AC3- oder DTS-Ton besitzt. afm=hwac3 benötigt kein Komma; MPlayer wird sowieso auf andere zurückgreigen, wenn eine Audiofamilie angegeben wurde.

3.9.1.4. MPEG-Audio-Passthrough

Digitale TV-Übertragungen (wie DVB und ATSC) und manche DVDs haben normalerweise MPEG-Audiostreams (vornehmlich MP2). Manche MPEG-Hardwaredecoder wie vollausgestattete DVB-Karten und DXR2-Adapter können dieses Format nativ decodieren. MPlayer kann angewiesen werden, die Audiodaten weiterzuleiten, ohne sie zu decodieren.

Um diesen Codec zu verwenden:

 mplayer -ac hwmpa 

3.9.1.5. Matrix-encodierter Ton

***TODO***

Dieser Abschnitt muss noch geschrieben werden und kann nicht vervollständigt werden, bis uns jemand mit Beispieldateien zum Testen versorgt. Wenn du irgendwelche Matrix-encodierten Audiodateien hast, weißt, wo man welche finden kann oder andere hilfreiche Informationen hast, schicke bitte eine Nachricht auf die MPlayer-DOCS-Mailing-Liste. Benutzt "[matrix-encoded audio]" in der Betreffzeile.

Wenn keine Dateien oder weitere Informationen hervorkommen, wird dieser Abschnitt entfernt.

Gute Links:

3.9.1.6. Surround-Emulation bei Kopfhörern

MPlayer besitzt einen HRTF- (Head Related Transfer Function) Filter basierend auf einem MIT-Projekt, bei dem Messungen von an einem Puppenkopf befestigten Mikrofonen vorgenommen wurden.

Obwohl es unmöglich ist, ein Surroundsystem exakt zu imitieren, liefert MPlayers HRTF-Filter in 2-Kanal-Kopfhörern einen räumlich eindringlicheren Ton. Reguläres Heruntermixen kombiniert einfach alle Kanäle zu zweien; neben der Kombinierung der Kanäle generiert hrtf feine Echos, erhöht die Stereoseparation leicht und verändert die Lautstärke mancher Frequenzen. Ob HRTF-Klänge besser klingen, kann vom Quellmaterial und persönlichem Geschmack abhängen, den Filter auszuprobieren ist aber definitiv einen Versuch wert.

Eine DVD mit HRTF abspielen:

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

hrtf funktioniert nur gut bei 5 oder 6 Kanälen und benötigt außerdem 48 kHz Ton. DVD-Ton ist schon 48 kHz, wenn du aber eine Datei mit einer anderen Samplerate hast, die du mit hrtf abspielen willst, musst du sie resamplen:

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

3.9.1.7. Troubleshooting/Problemlösung

Wenn du keinen Ton aus deinen Surround-Kanälen hören kannst, überprüfe deine Mixereinstellungen mit Mixerprogrammen wie alsamixer; Audioausgaben sind oft stummgeschaltet und per Voreinstellung auf Lautstärke 0 gesetzt.

3.9.2. Kanalmanipulationen

3.9.2.1. Allgemeine Informationen

Leider gibt es keinen Standard, der vorgibt, wie Kanäle angeordnet sind. Die unten gelisteten Reihenfolgen sind die von AC3 und halbwegs typisch; versuche diese und schaue, ob sie zu deiner Quelle passen. Kanäle sind durchnummeriert, beginnend bei 0.

Mono

  1. mittig

Stereo

  1. links

  2. rechts

Quadraphonisch

  1. links vorne

  2. rechts vorne

  3. links hinten

  4. rechts hinten

Surround 4.0

  1. links vorne

  2. rechts vorne

  3. mittig hinten

  4. mittig vorne

Surround 5.0

  1. links vorne

  2. rechts vorne

  3. links hinten

  4. rechts hinten

  5. mittig vorne

Surround 5.1

  1. links vorne

  2. rechts vorne

  3. links hinten

  4. rechts hinten

  5. mittig vorne

  6. Subwoofer

Die Option -channels wird benutzt, um vom Audiodecoder eine Anzahl Kanäle zu fordern. Manche Audiocodecs benutzen die angegebenen Kanäle, um zu entscheiden, ob Heruntermixen der Quelle nötig ist. Beachte, dass dies nicht immer die Anzahl der Ausgabekanäle beeinflusst. Zum Beispiel wird die Angabe der Option -channels 4 bei der Wiedergabe einer Stereo-MP3-Datei zur Ausgabe in 2 Kanälen führen, da der MP3-Codec keine zusätzlichen Kanäle produziert.

Der Audiofilter channels kann genutzt werden, um Kanäle zu erstellen oder zu entfernen. Er ist nützlich für die Kontrolle der Anzahl der Kanäle, die an die Soundkarte geschickt werden. Siehe folgenden Abschnitt für weitergehende Informationen zur Kanalmanipulation.

3.9.2.2. Mono-Wiedergabe mit zwei Lautsprechern

Mono klingt viel besser, wenn es von zwei Lautsprechern wiedergegeben wird - besonders bei Kopfhörern. Audiodateien, die wirklich nur einen Kanal haben, werden automatisch von zwei Lautsprechern wiedergeben; leider sind jedoch die meisten Dateien in mono tatsächlich als stereo encodiert, bei dem ein Kanal stumm ist. Der einfachste und sicherste Weg, zwei Lautsprecher dasselbe ausgeben zu lassen ist der Filter extrastereo:

mplayer dateiname -af extrastereo=0

Dieser mittelt über beide Kanäle, was darin resultiert, dass beide Kanäle jeweils halb so laut sind wie das Original. Die nächsten Abschnitte enthalten Beispiele für andere Möglichkeiten, dies ohne Minderung der Lautstärke zu erreichen, sie sind aber komplexer und erfordern verschiedene Optionen, je nach dem, welche Kanäle beibehalten werden sollen. Wenn du wirklich die Lautstärke beibehalten musst, ist es möglicherweise leichter, mit dem Filter volume zu experimentieren und den dafür richtigen Wert zu finden. Zum Beispiel:

mplayer dateiname -af extrastereo=0,volume=5

3.9.2.3. Kopieren/Verschieben von Kanälen

Der Filter channels kann einen beliebigen oder alle Kanäle verschieben. All die Suboptionen für den channels-Filter einzustellen kann kompliziert sein und erfordert ein wenig Sorgfalt.

  1. Entscheide, wieviele Ausgabekanäle du benötigst. Dies ist die erste Suboption.

  2. Zähle, wieviele Kanäle du umordnen möchtest. Dies ist die zweite Suboption. Jeder Kanal kann gleichzeitig zu mehreren verschiedenen Kanälen verschoben werden. Behalte jedoch im Gedächtnis, dass ein Kanal leer ist, wenn er (auch wenn er nur an ein Ziel) verschoben wird, es sei denn, ein anderer Kanal ersetzt ihn. Um einen Kanal zu kopieren, wobei die Quelle gleich bleibt, verschiebe den Kanal ins Ziel und in die Quelle, zum Beispiel:

    channel 2 --> channel 3
    channel 2 --> channel 2

  3. Schreibe die Kanalkopien als Suboptionspaare aus. Beachte, dass der erste Kanal 0 ist, der zweite 1 usw. Die Reihenfolge dieser Suboptionen spielt keine Rolle, solang sie entsprechend in Paare der Form Quelle:Ziel gruppiert sind.

Beispiel: ein Kanal auf zwei Lautsprecher

Hier ist ein Beispiel einer weiteren Möglichkeit, einen Kanal auf zwei Lautsprechern wiederzugeben. Für dieses Beispiel sei angenommen, dass der linke Kanal abgespielt und der rechte verworfen werden soll. Befolge die oben angegebenen Schritte:

  1. Um einen Ausgabekanal für jeden der beiden Lautsprecher bereitzustellen, muss die erste Suboption "2" sein.

  2. Der linke Kanal muss zum rechten verschoben werden, und auch zu sich selbst, damit er nicht leer ist. Dies sind insgesamt also zwei Bewegungen, was die zweite Suboption auch "2" macht.

  3. Den linken Kanal (Kanal 0) zum rechten (Kanal 1) zu verschieben, entspricht dem Suboptionspaar "0:1", "0:0" bewegt den linken Kanal auf sich selbst.

All dies zusammengesetzt ergibt:

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

Der Vorteil, den diese Methode gegenüber extrastereo hat, ist, dass die Lautstärke auf jedem Ausgabekanal die gleiche ist wie die des Eingabekanals. Der Nachteil ist, dass die Suboptionen zu "2:2:1:0:1:1" geändert werden müssen, wenn der gewünschte Ton im rechten Kanal ist. Außerdem ist es schwerer zu merken und einzutippen.

Beispiel: ein Kanal auf zwei Lautsprecher, Abkürzung

Tatsächlich gibt es einen viel einfacheren Weg, um mit dem channels-Filter den linken Kanal auf beiden Lautsprechern wiederzugeben:

mplayer dateiname -af channels=1

Der zweite Kanal wird verworfen und ohne weitere Suboptionen bleibt der übrige Kanal allein. Soundkartentreiber spielen einkanaliges Audio automatisch auf beiden Lautsprechern ab. Dies funktioniert nur, wenn der gewünschte Kanal der linke ist.

Beispiel: Dupliziere die vorderen Kanäle hinten

Eine weitere übliche Aktion ist die Duplizierung der vorderen Kanäle, um sie auf den hinteren Lautsprechern einer quadraphonischen Installation abzuspielen.

  1. Es sollte vier Ausgabekanäle geben. Die erste Suboption ist "4".

  2. Jeder der zwei Frontkanäle muss zum entsprechenden hinteren Kanal und zu sich selbst bewegt werden. Das sind vier Bewegungen, also ist die zweite Suboption "4".

  3. Der vordere linke Kanal (0) muss zum hinteren linken (Kanal 2) bewegt werden: "0:2". Der vordere linke muss auch zu sich selbst bewegt werden: "0:0". Der vordere rechte (Kanal 1) wird zum hinteren rechten (Kanal 3) bewegt: "1:3", und zu sich selbst: "1:1".

Setze alle Suboptionen zusammen und du erhältst:

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

3.9.2.4. Kanäle mixen

Der Filter pan in Kanäle in vom Benutzer angegebenen Verhältnissen mixen. Dies ermöglicht alles, was der channels-Filter kann, und mehr. Leider sind die Suboptionen auch viel schwieriger.

  1. Entscheide, mit wievielen Kanälen du arbeiten möchtest. Dies musst du mit der Option -channels und/oder -af channels angeben. Spätere Beispiele werden dir zeigen, wann welcher zu benutzen ist.

  2. Entscheide, mit wievielen Kanälen du pan füttern möchtest (weitere decodierte Kanäle werden verworfen). Dies ist die erste Suboption, und diese kontrolliert auch, wieviele Kanäle für die Ausgabebereitgestellt werden.

  3. Die übrigen Suboptionen geben an, wieviel von jedem Kanal in jeden anderen Kanal gemixt werden. Das ist der komplizierte Teil. Um die Arbeit übersichtlich zu machen, zerlege die Suboptionen in mehrere Teile, einen Teil für jeden Ausgabekanal. Jede Suboption innerhalb eines Teils entspricht einem Eingabekanal. Die Anzahl, die du angibst, ist die prozentuale Menge, die vom Eingabekanal in den Ausgabekanal gemixt wird.

    pan akzeptiert Werte von 0 bis 512, was Werte von 0% bis 512000% der ursprünglichen Lautstärke ergibt.. Sei vorsichtig bei Werten größer als 1. Dies liefert nicht nur eine sehr hohe Lautstärke, sondern sprengt auch den Samplebereich deiner Soundkarte, und du könntest schmerzvolle Pops und Klicken hören. Wenn du willst, kannst du auf pan ,volume folgen lassen, um eine Abschneidung zu ermöglichen, es ist aber das beste, die Werte von pan niedrig genug zu halten, dass keine Abschneidung nötig ist.

Beispiel: Ein Kanal auf zwei Lautsprechern

Hier ist also noch ein Beispiel für die Wiedergabe des linken Kanals auf zwei Lautsprechern. Befolge die Schritte oben:

  1. pan sollte zwei Kanäle ausgeben, also ist die erste Suboption "2".

  2. Da wir zwei Eingabekanäle haben, gibt es die Suboptionen in zwei Teilen. Da es auch zwei Ausgabekanäle gibt, wird es pro Teil zwei Suboptionen geben. Der linke Kanal der Datei sollte in voller Lautstärke auf den neuen linken Kanal und den rechten gehen, daher ist der erste Teil der Suboptionen "1:1". Der rechte Kanal sollte weggelassen werden, daher ist der zweite "0:0". Alle 0-Werte am Ende können weggelassen werden, aber um das Verstehen leichter zu machen, behalten wir sie.

Diese Optionen ergeben zusammen:

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

Wenn der rechte Kanal anstelle des linken gewünscht ist, sind die Suboptionen für pan "2:0:0:1:1".

Beispiel: Ein Kanal auf zwei Lautsprechern, Abkürzung

Wie bei der Option channels gibt es eine Abkürzung, die nur mit dem linken Kanal funktioniert:

mplayer dateiname -af pan=1:1

Da pan nur einen Eingabekanal hat (der andere wird verworfen), gibt es nur einen Teil mit einer Suboption, die angibt, dass der einzige Kanal 100% von sich selbst bekommt.

Beispiel: 6-kanaliges PCM heruntermixen

MPlayers Decoder für 6-kanaliges PCM ist nicht in der Lage, herunterzumixen. Hier ist eine Möglichkeit, PCM unter Verwendung von pan herunterzumixen:

  1. Die Anzahl der Ausgabekanäle ist zwei, daher ist die erste Suboption "2".

  2. Bei sechs Eingabekanälen gibt es sechs Teile Optionen. Glücklicherweise müssen wir nur zwei Teile machen, da wir uns nur für die Ausgabe der ersten beiden Kanäle interessieren. Die übrigen vier Teile können weggelassen werden. Sei dir im klaren darüber, dass nicht alle Audiodateien mit mehreren Kanälen die gleiche Kanalabfolge haben! Dieses Beispiel demonstriert das Heruntermixen einer Datei mit den gleichen Kanälen wie MAC3 5.1:

    0 - vorne links
    1 - vorne rechts
    2 - hinten links
    3 - hinten rechts
    4 - mittig vorne
    5 - Subwoofer

    Der erste Teil der Suboptionen listet die Prozente der ursprünglichen Lautstärke, und zwar in der Reihenfolge, die jeder Ausgabekanal vom vorderen linken Kanal erhalten soll: "1:0". Der vordere rechte Kanal sollte zur rechten Ausgabe gehen: "0:1". Das gleiche gilt für die hinteren Kanäle: "1:0" und "0:1". Der mittlere Kanal geht mit jeweils halber Lautstärke in beide Ausgabekanäle: "0.5:0.5", und der Subwoofer geht mit voller Lautstärke in beide: "1:1".

All dies zusammen ergibt:

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

Die oben gelisteten Prozente sind nur ein einfaches Beispiel. Fühle dich nicht eingeschränkt, mit ihnen zu experimentieren.

Beispiel: Wiedergabe von 5.1-Audio auf großen Lautsprechern ohne Subwoofer

Wenn du ein riesiges Paar Front-Lautsprecher hast und kein Geld darauf verschwenden möchtest, einen Subwoofer für ein komplettes 5.1-Soundsystem zu erhalten. Wenn du die Option -channels 5 benutzt, damit liba52 5.1-Ton in 5.0 decodiert, wird der Subwoofer-Kanal einfach weggelassen. Wenn du den Subwoofer-Kanal selbst verteilen möchtest, musst du manuell mit pan heruntermixen:

  1. Da pan alle sechs Kanäle untersuchen muss, gib -channels 6 an, so dass liba52 sie alle decodiert.

  2. pan gibt nur fünf Kanäle aus, die erste Suboption ist 5.

  3. Sechs Eingabekanäle und fünf Ausgabekanäle bedeuten sechs Teile von fünf Suboptionen.

    • Der linke vordere Kanal wird nur auf sich selbst repliziert: "1:0:0:0:0"

    • Das gleiche gilt für den rechten vorderen Kanal: "0:1:0:0:0"

    • Das gleiche gilt für den linken hinteren Kanal:"0:0:1:0:0"

    • Und das gleiche auch für den rechten hinteren Kanal: "0:0:0:1:0"

    • Vordere Mitte auch: "0:0:0:0:1"

    • Jetzt müssen wir entscheiden, was mit dem Subwoofer geschieht, zum Beispiel eine Hälfte jeweils nach vorne rechts und vorne links: "0.5:0.5:0:0:0"

Kombiniere all diese Optionen, um folgendes zu erhalten:

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.9.3. Anpassung der softwaregesteuerten Lautstärke

Manche Audiotracks sind zu leise, um sie bequem ohne Anpassung zu hören. Das kann zum Problem werden, wenn dein Audiosystem diese Anpassung nicht für dich vornehmen kann. Die Option -softvol weist MPlayer an, einen internen Mixer zu verwenden. Du kannst die Tasten zur Anpassung der Lautstärke (in der Voreinstellung 9 und 0) verwenden, um wesentlich höhere Lautstärkelevel zu erreichen. Beachte, dass dies nicht den Mixer deiner Soundkarte umgeht; MPlayer wird das Signal nur verändern, bevor es an die Soundkarte gesendet wird. Das folgende Beispiel ist ein guter Anfang:

mplayer leise-datei -softvol -softvol-max 300

Die Option -softvol-max gibt die maximal erlaubte Ausgabelautstärke als prozentualen Wert hinsichtlich der Originallautstärke an. Beispielsweise würde -softvol-max 200 erlauben, die Lautstärke doppelt so hoch wie das ursprüngliche Level zu setzen. Es ist sicher, einen größeren Wert mit -softvol-max zu setzen; die höhere Lautstärke wird nicht verwendet, solange du nicht die entsprechenden Tasten drückst. Der einzige Nachteil bei Verwendung von hohen Werten ist, dass du nicht ganz so genaue Kontrolle bei der Verwendung der Tasten hast, da MPlayer die Lautstärke in Prozenten der maximalen Lautstärke anpasst. Benutze einen niedrigeren Wert mit -softvol-max und/oder gib -volstep 1 an, wenn du höhere Genauigkeit brauchst.

Die Option -softvol funktioniert durch Kontrolle des Audiofilters volume. Wenn du eine Datei von Anfang an mit einer gewissen Lautstärke abspielen möchtest, kannst du die volume manuell angeben:

mplayer leise-datei -af volume=10

Dies wird die Datei mit einer Erhöhung um zehn Dezibel wiedergeben. Sei vorsichtig bei der Verwendung des volume-Filters - du kannst deinen Ohren leicht schaden, wenn du einen zu hohen Wert benutzt. Beginne niedrig und arbeite dich stufenweise hoch, bis du ein Gefühl dafür bekommst, wieviel Anpassung notwendig ist. Außerdem kann es passieren, wenn du einen übermäßig hohen Wert angibst, dass volume das Signal kappen muss, um keine Daten an die Soundkarte zu schicken, die außerhalb des gültigen Bereichs liegen; dies führt zu gestörtem Ton.