MPlayers Audio-Interface wird libao2 genannt. Es enthält zur Zeit diese Treiber:
/dev/audio
) für BSD und Solaris8Fakt ist, dass Linux-Soundkartentreiber Kompatibilitätsprobleme haben. Der Grund für diese Probleme liegt darin, dass MPlayer ein Feature des Soundkartentreibers benutzt, um Audio und Video synchron zu halten. Leider kümmern sich einige Soundkartentreiberprogrammierer nicht besonders um diese Funktion, da sie weder für die Wiedergabe von MP3s noch für Soundeffeket benötigt wird.
Andere Medienplayer wie z.B. aviplay oder xine funktionieren bei dir wahrscheinlich so, wie sie sind, weil sie eine "simplere" Methode wie internes Timing für die Audio-/Video-Synchronisation verwenden. Anmerkung: es hat sich oft gezeigt, dass ihre Methoden nicht ganz so effizient wie MPlayers Methoden sind.
Wenn du MPlayer zusammen mit einem korrekt geschriebenen Soundkartentreiber verwendest, dann wirst du niemals A/V-Desyncs aufgrund des Audiotreibers erleben (höchstens mit sehr schlecht erstellten Dateien. Schau in einem solchen Fall in die Dokumentation, wie du das beheben kannst).
Einige Anmerkungen:
-ao
oss
(dies ist die Standardeinstellung). Wenn du kleine Fehler,
Verzögerungen oder irgendetwas anderes ungewöhliches hörst,
versuche mal -ao sdl
(HINWEIS: die SDL-Bibliotheken und das
dazugehörige Devel-Paket müssen installiert sein). Der SDL-
Audiotreiber hilft in vielen Fällen (er unterstützt auch ESD,
ARTS und Up-/Downsampling. ESD ist der Sounddaemon von GNOME, arts der
von KDE).-ao
alsa5
verwenden, weil ALSA 0.5 einen fehlerhaften OSS-
Emulationscode hat. MPlayer wird mit etwa so einer Meldung
abstürzen:DEMUXER: Too many (945 in 8390980 bytes)
video packets in the buffer!
Verwende auf Solaris-Systemen den SUN-Audio-Treiber mit
-ao sun
, ansonsten wirst du weder Video noch Ton haben.
VIA Onboard-Chipsatz (via82cxxx), nur 48kHz | ||
Treiber: | von sourceforge.net | |
Aureal Vortex 2 | ||
OSS: | kein Treiber | |
OSS/Pro: | OK | |
ALSA: | kein Treiberr | |
Max kHz: | 48 | |
Treiber: | aureal.sourceforge.net | |
Treiber 2: | von Pontscho's Seite (Puffergröße auf 32k erhöht) | |
GUS PnP | ||
OSS: | kein Treiber | |
OSS/Pro: | OK | |
ALSA: | OK | |
Max kHz: | 48 | |
SB Live! | ||
OSS: | Analog OK, SP/DIF funktioniert nicht | |
ALSA: | beide OK | |
Max kHz: | 192 | |
SB AWE 64 | ||
OSS: | max 44kHz | |
ALSA: | 48kHz klingt schlecht | |
Max kHz: | 48 | |
Gravis UltraSound ACE | ||
OSS: | nicht OK | |
ALSA: | OK | |
Max kHz: | 44 | |
Gravis UltraSound MAX | ||
OSS: | OK | |
ALSA: | OK (?) | |
Max kHz: | 48 | |
ESS 688 | ||
OSS: | OK | |
ALSA: | OK (?) | |
Max kHz: | 48 | |
C-Media-Karten (welche genau?) | ||
OSS: | nicht OK (scharfe ssss-Geräusche) (?) | |
ALSA: | OK (?) | |
Max kHz: | ? | |
Yamaha-Karten (*ymf*) | ||
OSS: | nicht OK (?) (evtl. -ao sdl ) | |
ALSA: | nur mit der OSS-Emulation von ALSA 0.5
UND -ao sdl OK (!) (?) | |
Max kHz: | ? | |
Karten mit envy24-Chips (wie z.B. Terratec EWS88MT) | ||
OSS: | ? | |
OSS/Pro: | OK | |
ALSA: | ? | |
Max kHz: | ? | |
PC-Lautsprecher oder DAC | ||
OSS: | OK (Benutz den SDL-Treiber: -ao sdl ) | |
ALSA: | kein Treiber | |
Max kHz: | Der Treiber emuliert 44.1, evtl auch mehr. | |
Treiber: | ftp://ftp.infradead.org/pub/pcsp |
Unter Linux wird ein 2.4.x Kernel sehr empfohlen. Kernel 2.2 wird nicht getestet.
Wenn der sound während der Wiedergabe von CD-ROM "klickende"
Geräusche verursacht, schalte die Interupt-Unmaskierung ein, zum Beispiel
hdparm -u1 /dev/cdrom
(man hdparm
). Dies ist
allgemein besser und wird in der CD-ROM-
Sektion genauer beschrieben.
Rückmeldungen zu diesem Dokument sind willkommen. Bitte sag uns, wie MPlayer und deine Soundkarte(n) zusammen funktionieren.
Die alten Audioplugins wurden von einer neuen Filterschicht abgelöst.
Audiofilter werden benutzt, um die Parameter der Daten zu ändern, bevor
sie die Soundkarte erreichen. Die Aktivierung der Filter geschieht normalerweise
automatisch, kann aber auch erzwungen oder verhindert werden. Die Filter
werden aktiviert, wenn die Parameter der Daten von denen der Soundkarte
abweichen und deaktiviert, wenn sie gleich sind. Die Option -af
filter1,filter2,...
wird benutzt, um Filter einzufügen, die nicht
automatisch eingefügt werden. Diese Filter werden in der Reihenfolge
abgearbeitet, wie sie angegeben wurden.
Beispiele:
mplayer -af resample,pan movie.avi
Schickt die Audiodaten durch das Resample-Filter und danach durch den Pan-Filter. Die Liste darf keine Leerzeichen enthalten, sonst klappt's nicht.
Viele Filter kennen Parameter, mit denen ihr Verhalten geändert werden kann. Diese Parameter werden unten detailliert beschrieben. Wenn keine Parameter angegeben werden, dann verwendet der Filter seine Standardwerte. Hier ist ein Beispiel, wie Filter mit Parametern verwendet werden können:
mplayer -af resample=11025,pan=1:0.5:0.5 -channels 1
-srate 11025 media.avi
Das setzt die Ausgabefrequenz des Resampleplugins auf 11025Hz und downmixt das Audio auf einen Kanal mit dem Pan-Filter.
Die meisten Filter geben mehr Statusinformationen aus, wenn -v
benutzt wird.
Die allgemeine Kontrolle der Filterschicht geschieht über
-af-adv
. Diese Option kennt zwei Parameter:
force
list
-af
.MPlayer unterstützt vollständig Up-/Downsampling. Dieser Filter kann benutzt werden, wenn du eine Soundkarte hast, die nur eine feste Frequenz unterstützt, oder die nur maximal 44.1kHz unterstützt. Dieser Filter wird automatisch aktiviert, wenn er benötigt wird. Er kann aber auch explizit auf der Kommandozeile aktiviert werden. Er kennt drei Optionen:
srate
sloppy
srate
) abweicht. Diese Option
kann benutzt werden, wenn das Playback nur sehr langsam startet.fast
Beispiele:
mplayer -af resample=44100:0:1
Dies setzt die Ausgabefrequenz des Resample-Filters auf exakt 44100Hz mit linearer Interpolation.
Der channels
-Filter kann benutzt werden, um Kanäle
hinzuzufügen oder zu entfernen. Er kann auch benutzt werden, um
Kanäle umzuleiten oder sie zu kopieren. Er wird automatisch aktiviert,
falls die Anzahl der Kanäle bei Eingang und Ausgang der Audiofilterschicht
unterschiedlich ist, oder wenn ein anderer Filter diesen Filter benötigt.
Wenn er nicht gebraucht wird, so entlädt sich dieser Filter automatisch.
Die Anzahl der Parameter ist dynamisch:
nch
nr
von1:nach1:von2:nach2:von3:nach3...
Wenn nur nch
angegeben wird, dann werden die
Standardumleitungen benutzt, die so aussehen: Wenn mehr Ausgabekanäle
gefordert sind als Eingangskanäle existieren, so werden leere Kanäle
erzeugt (bis auf's Mixen von Mono auf Stereo: hier wird der Monokanal auf beide
Kanäle kopiert). Ist die Anzahl dagegen kleiner, so werden die
überschüssigen Kanäle entfernt.
Beispiel 1:
mplayer -af channels=4:4:0:1:1:0:2:2:3:3 media.avi
Ändert die Anzahl der Kanäle auf 4 und legt vier Routen fest, die die Kanäle 0 und 1 vertauschen und die Kanäle 2 und 3 intakt lassen. Wenn die Quelldatei nur zwei Kanäle hat, so sind die Kanäle 2 und 3 leise, aber 0 und 1 werden trotzdem vertauscht.
Beispiel 2:
mplayer -af channels=6:4:0:0:0:1:0:2:0:3 media.avi
Ändert die Anzahl der Kanäle auf 6 und gibt 4 Routen an, die Kanal 0 auf Kanal 0 und 3 kopieren. Die Kanäle 4 und 5 bleiben stumm.
Dieser Filter konviert das Sampleformat. Er wird automatisch aktiviert, wenn er benötigt wird.
bps
f
alaw
, mulaw
oder
imaadpcm
, float
oder int
,
unsigned
oder signed
, le
oder
be
(little oder big endian).
Dieser Parameter wird benötigt und führt zu einem Laufzeitfehler,
wenn er weggelassen wird.Beispiel:
mplayer media.avi -af format=4:float
setzt das Ausgabeformat auf 4 Bytes pro Sample Fließkommadaten.
Dieser Filter verzögert den Sound auf dem Weg zum Lautsprecher, damit die verschiedenen Kanäle zur gleichen Zeit bei der Sitzposition ankommen. Dieser Filter ist nur dann nützlich, wenn du mehr als zwei Lautsprecher hast. Dieser Filter erhält eine variable Anzahl Parameter:
d1:d2:d3...
Um die benötigte Verzögerung für die verschiedenen Kanäle zu berechnen, tu folgendes:
Beispiel:
mplayer -af delay=10.5:10.5:0:0:7:0 media.avi
verzögert die Kanäle vorne links und vorne rechts um 10.5ms, die beiden hinteren Kanäle um 0ms und den zentrierten Kanal um 7ms.
Dieser Filter stellt eine Softwarelautstärkeregelung dar. Sei bei der Benutzung dieses Filters vorsichtig, da er den Signal-zu-Rausch-Abstand verringern kann. In den meisten Fällen ist es besser, beim Mixer deiner Soundkarte den PCM-Regler auf's Maximum zu setzen und diesen Filter wegzulassen. Ändere dann die Lautstärke mit dem Hauptregler des Mixers. Wenn der Computer an einen externen Verstärker angeschlossen ist (was meistens der Fall ist), dann kann der Rauschpegel minimiert werden, indem der Hauptregler und der Lautstärkeregler des Verstärkers angepasst werden, bis das Hintergrundzischen verschwunden ist. Der Filter selber kennt zwei Parameter:
v
c
Beispiel:
mplayer -af volume=10.1:0 media.avi
verstärkt den Sound um 10.1dB und schneidet hart ab, wenn die Lautstärke zu hoch wird.
Dieser Filter besitzt noch ein zweites Feature: Er misst die maximale Lautstärke und gibt sie aus, wenn MPlayer beendet wird. Dieser Wert kann benutzt werden, um die Verstärkung in MEncoder so zu setzen, dass die Dynamikbandbreite vollständig ausgenutzt wird.
Dieser Filter ist ein 10-Band Graphicequalizer, der durch 10 IIR-Bandpassfilter (infinite impulse response, rekursive Filter) realisiert wird. Das bedeutet, dass er unabhängig vom wiederzugebenden Audiotyp funktioniert. Die Mittenfrequenzen der zehn Bändern sind:
Band Nr. | Mittenfrequenz |
0 | 31.25 Hz |
1 | 62.50 Hz |
2 | 125.0 Hz |
3 | 250.0 Hz |
4 | 500.0 Hz |
5 | 1.000 kHz |
6 | 2.000 kHz |
7 | 4.000 kHz |
8 | 8.000 kHz |
9 | 16.00 kHz |
Wenn die Samplefrequenz des Sounds niedriger als die Mittenfrequenz eines Bandes ist, so wird dieses Band deaktiviert. Ein bekannter Fehler dieses Filters liegt darin, dass die Charakteristiken des höchsten Bandes nicht ganz symmetrisch sind, wenn die Samplefrequenz nahe der Mittenfrequenz des Bandes liegt. Das kann umgangen werden, wenn vorher ein Upsampling mit dem resample-Filter vorgenommen wird.
Dieser Filter bekommt zehn Parameter:
g1:g2:g3...g10
Beispiel:
mplayer -af equalizer=11:11:10:5:0:-12:0:5:12:12 media.avi
verstärkt den Sound in den oberen und unteren Frequenzbereichen und löscht ihn um 1kHz beinahe komplett aus.
Dieser Filter kann benutzt werden, um Kanäle beliebig zu mischen. Er ist grundlegend nur eine Kombination des Lautstärkefilters und des channels-Filters. Es gibt zwei Haupteinsatzgebiete für diesen Filter:
Dieser Filter ist nicht ganz leicht zu bedienen und benötigt viel Ausprobieren, bevor die gewünschten Ergebnisse erzielt werden. Die Anzahl der Parameter hängt von der Anzahl der Ausgabekanäle ab:
nch
l00:l01:l02:..l10:l11:l12:...ln0:ln1:ln2:...
l[i][j]
gibt an, wieviel vom Einganskanal j in den Ausgabekanal i zu mischen
ist.Beispiel:
mplayer -af pan=1:0.5:0.5 -channels 1 media.avi
mischt stereo auf mono.
MPlayer bietet Unterstützung für Audio-Plugins. Audio-
Plugins können benutzt werden, um die Einstellungen der Audio-Daten zu
ändern, bevor sie die Soundkarte erreichen. Sie aktiviert durch die
Option -aop
aktiviert, welche
list=plugin1,plugin2,...
als Argument hat. Das list
wird benötigt, um festzulegen, in welcher Reihenfolge die Plugins benutzt
werden sollen. Beispiel:
mplayer media.avi -aop list=resample,format
würde den Ton durch das Resampling-Plugin laufen lassen, gefolgt vom Format-Plugins.
Die Plugins können auch Schalter haben, welche ihr Verhalten ändern. Diese Schalter werden im unteren Abschnitt im Detail beschrieben. Ein Plugin wird mit den Standardeinstellungen gestartet, wenn dem Plugin Optionen mitgegeben werden. Hier ist ein Beispiel, wie man Plugins in Kombination mit pluginspezifischen Schaltern verwendet:
mplayer media.avi -aop
list=resample,format:fout=44100:format=0x8
würde die Ausgabefrequenz des Resample-Plugins auf 44100Hz and das Ausgabeformat des Format-Plugins auf AFMT_U8 stellen.
Momentan können Audio-Plugins nicht im MEncoder verwendet werden.
MPlayer unterstützt vollständiges up/downsampling von
Audiostreams. Dieses Plugin kann verwendet werden, wenn man eine Soundkarte
mit fester Frequenz besitzt, oder wenn man eine alte Soundkarte am Hals hat,
welche nur max 44.1kHz verarbeitet. Ob die Verwendung dieses Plugins
benötigt wird oder nicht erkennt MPlayer automatisch.
Dieses Plugin hat einen Schalter, fout
, welcher benutzt wird, um
die gewünschte Ausgabefrequenz zu setzen. Der Standard ist 48kHz und wird
in <Hz> angegeben.
Verwendung:
mplayer medium.avi -aop
list=resample:fout=<erforderliche Frequenz in Hz, z.B. 44100>
Hinweis: Die Ausgabefrequenz sollte nicht vom Standard-Wert hochskaliert werden. Die Skalierung führt dazu, dass der Audio- und Video-Stream in Zeitlupe wiedergegeben werden, und man erhält zusätzlich Audioverzerrungen.
MPlayer hat ein Audio-Plugin das matrix-codierten Surround Sound decodieren kann. Dolby Surround ist ein Beispiel eines matrix-codierten Formats. Viele Dateien mit zwei Audiokanälen enthalten tatsächlich matrix Surround Sound. Um dieses Feature zu benutzen, brauchst du eine Soundkarte mit mindestens vier Kanälen.
Verwendung:
mplayer medium.avi -aop list=surround
Wenn deine Soundkarte keinen signed 16bit int
Datentyp
unterstützt, kann dieses Plugin benutzt werden, um das Format in eines zu
ändern, das deine Soundkarte versteht. Es hat nur einen Schalter
format
, welcher auf eine Nummer gestellt werden kann, die man der
Datei libao2/afmt.h
findet. Dieses Plugin wird praktisch nie
gebraucht und ist für erfahrene Anwender gedacht. Bedenke, dass dieses
Plugin nur das Sampleformat und nicht die Samplefrequenz oder die Anzahl
Kanäle ändert.
Verwendung:
mplayer medium.avi -aop
list=format:format=<required output format>
Dieses Plugin verzögert den Ton und ist als Beispiel gedacht, wie man neue Plugins schreibt. Es kann für nichts sinnvolles aus der Anwenderperspektive verwendet werden und ist hier nur aus Gründen der Vollständigkeit erwähnt. Verwende dieses Plugin nicht, wenn du kein Entwickler bist.
Dieses Plugin ist ein Software-Ersatz für die Lautstärkereglung
und kann in Maschinen mit kaputtem Mixer-Device verwendet werden. Es kann auch
verwendet werden, um die Ausgabelautstärke von MPlayer zu
ändern, ohne die Einstellung der PCM-Lautstärke im Mixer zu
ändern. Es gibt einen Schalter volume
, welcher verwendet
wird, um den anfänglichen Schallpegel festzulegen. Der anfängliche
Schallpegel kann auf Werte zwischen 0 und 255 festgelegt werden (normal auf
101, was 0db Verstärkung entspricht). Benutze dieses Plugin mit Vorsicht,
da es den Signal/Rauschabstand verringern kann.In den meisten Fällen ist
es das beste, den Reglere für PCM auf das Maximum zu stellen,
dieses Plugin nicht zu verwenden und die Lautstärke zu deinen Boxen mit
der Master-Lautstärkeregelung zu kontrollieren. Wenn ein externer
Verstärker mit dem Computer verbunden ist (was fast immer der Fall ist),
kann der Geräuschepegel durch die Anpassung des Master-Stufe und der
Lautstärkeknöpfe des Verstärkers minimiert werden, bis das
Hintergrundrauschen verschwindet.
Verwendung:
mplayer media.avi -aop
list=volume:volume=<0-255>
Dieses Plugin besitzt auch einen Kompressor oder "soft-clipping"- Fähigkeiten. Die Kompression kann benutzt werden, wenn der Dynamikbereich des Sounds sehr hoch ist, oder wenn der Dynamikbereich der Lautsprecher sehr niedrig ist. Sei dir bewusst, dass dieses Feature Verzerrungen verursacht. Es sollte erst als letzte Möglichkeit in Betracht gezogen werden.
Verwendung:
mplayer media.avi -aop
list=volume:softclip
Dieses Plugin erhöht linear die Differenz zwischen dem linken und rechten Kanal (wie das XMMS Extrastereo-Plugin), was zum Teil zu "live"- Effekten bei der Wiedergabe führt.
Verwendung:
mplayer media.avi -aop list=extrastereo
mplayer media.avi -aop list=extrastereo:mul=3.45
Der Koeffizient (mul
) ist eine Fließkommazahl,
welche standardmäßig auf 2.5 gestellt ist. Wenn man den Wert auf
0.0 setzt, erhält man einen Mono-Ton (Durchschnitt beider Kanäle).
Wenn man den Wert auf 1.0 setzt, bleibt der Ton gleich. Wenn man den Wert auf
-1.0 setzt, werden der linke und rechte Kanal vertauscht.
Dieses Plugin maximiert die Lautstärke, ohne den Ton zu verzerren.
Verwendung:
mplayer media.avi -aop list=volnorm