Az MPlayer audio interfészének a neve libao2. Jelenleg a következő meghajtókat tartalmazza :
A helyzet az, hogy a Linux hangkártyameghajtói nem túl jók. Az MPlayer a hangkártyameghajtók egyik olyan funkcióját használja a kép illetve a hang lejátszásának szinkronizálásához, melyet a meghajtókészítők előszeretettel felejtenek el helyesen implementálni, mivel ez szükségtelen MP3-ak, hangeffektek és egyebek lejátszásához.
Más médialejátszók (mint például az aviplay, a xine) általában működni szoktak (már ha éppen szoknak:) az ilyen meghajtókkal, tekintve hogy belső időzítéssel szinkronizálnak. Megjegyzendő hogy az idő az MPlayer módszerét hozta ki hatékonyabbnak.
Normálisan megírt hangkártyameghajtó használatával semmiféle hangból eredő szinkronizációs probléma nem adódhat, kivéve ha már maga a file is hibás.
Ha rossz audiomeghajtód van, az -autosync
opció használata
jó eséllyel segíteni fog. A pontos használatát és leírását lásd a man
page-ben.
Néhány megjegyzés:
DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!
Solaris rendszeren természetesen a SUN audio meghajtót kell használni, az -ao sun opcióval, különben lőttek mind a video, mind az audio lejátszásnak.
VIA alaplapi chipset (via82cxxx) 48Khz-ra limitált | ||
Driver: | innen | |
Aureal Vortex 2 | ||
OSS: | nincs | |
OSS/Pro: | OK | |
ALSA: | nincs | |
Max kHz: | 48 | |
Driver: | aureal.sourceforge.net | |
Driver2: | innen (bufferméret megnövelve 32k-ra) | |
GUS PnP | ||
OSS: | nincs | |
OSS/Pro: | OK | |
ALSA: | OK | |
Max kHz: | 48 | |
SB Live! | ||
OSS: | Analóg OK, SP/DIF nem megy | |
ALSA: | mindkettő OK | |
Max kHz: | 192 | |
SB AWE 64 | ||
OSS: | max 44kHz | |
ALSA: | 48kHz rosszul hangzik | |
Max kHz: | 48 | |
Gravis UltraSound ACE | ||
OSS: | OKAz új audio kóddal is bugzik... | |
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 kártyák (CMI8338/8738) | ||
OSS: | OK | |
ALSA: | OK - az SP/DIF-et az ALSA 0.9.x támogatja | |
Max kHz: | ? | |
Yamaha kártyák (*ymf*) | ||
OSS: | nem OK (?) (talán -ao sdl ?) | |
ALSA: | csak (?) ALSA 0.5-tel, OSS emulációval, ÉS -ao sdl-el jó (!) (?) | |
Max kHz: | ? | |
envy24 chip-es kártyák (mint pl Terratec EWS88MT) | ||
OSS: | ? | |
OSS/Pro: | OK | |
ALSA: | ? | |
Max kHz: | ? | |
PC Speaker vagy DAC | ||
OSS: | OK (használd az SDL meghajtót : -ao sdl) | |
ALSA: | nincs | |
Max kHz: | a meghajtó 44.1Khz-t emulál, vagy többet | |
Driver: | ftp://ftp.infradead.org/pub/pcsp |
Az audio szűrők a hang tulajdonságainak megváltoztatására szolgálnak.
(De)aktivációjuk automatikusan történik, ha a hang tulajdonságai különböznek
a hangkártya által igényelttől. Az -af szűrő1,szűrő2,...
opcióval bírálható felül a szűrők használata, és természetesen itt lehetséges
egyéb, nem automatikusan beillesztett szűrők használatba vétele is. A szűrők
végrehajtása a megadott sorrendben történik.
Példa:
mplayer -af resample,pan media.avi
Ez a parancs átvezeti a hangot a resampling (újramintavételező), majd a pan szűrőkön.
A legtöbb szűrőnek vannak opciói, melyeket a most következő fejezetekben tárgyalunk. Ha nincs megadva opció, a szűrő az alapértelmezett opcióit használja. Itt egy példa:
mplayer -af resample=11025,pan=1:0.5:0.5 -channels 1
-srate 11025 media.avi
Itt megadjuk hogy a hang legyen 11025Hz-re mintavételezve, ezután pedig egy csatornásra keverjük át a hangot a pan szűrővel.
A szűrő réteg viselkedésére globálisan az -af-adv
opcióval
lehet hatni. Ennek két alopciója van:
force
0
1
2
3
4
5
6
7
list
A szűrő rétegre a következő általános opciók is hatással vannak:
-v
-channels
-srate
-format
Az MPlayer teljes mértékben támogatja a fel/lemintavételezést a
resample
szűrő segítségével. Ezt többek között akkor lehet
értelmesen használni ha egy régi hangkártyád van ami maximum csak 44.1kHz-et
tud. Három opciója van:
srate <8000-192000>
sloppy
srate
opciónál megadott
értéktől. Akkor használandó, ha a lejátszás nagyon lassan indul.
Alapállapotban be van kapcsolva.type <0-2>
0
jelenti a lineáris
interpolációt, az 1
az egész számú poly-phase filter-bank-ot,
a 2
az előbbinek a lebegőpontos verziója. A lineáris
interpoláció a leggyorsabb, de a hangminőség hagy némi kívánnivalót maga
után, főleg a felmintavételezésnél. A legjobb minőséget a 2
eredményezi, de természetesen ennek a legnagyobb a CPU igénye.Példa:
mplayer -af resample=44100:0:0
Ez 44100Hz-re állítja a frekvenciát pontos kimenettel, és lineáris interpolációval.
A channels
szűrő csatornák hozzáadására és eltávolítására,
valamint a csatornák routolására és másolására szolgál. Ha használata
fölösleges, nem töltődik be. Az opciók száma dinamikus:
nch <1-6>
nr <1-6>
from1:to1:from2:to2:from3:to3...
Az átirányítás (route) lényege: ha kevesebb csatornából többre történik konvertálás, üres csatornák jönnek létre (kivéve a mono->stereo konvertálást). Ha pedig a kimeneti csatornák száma kevesebb mint a bemeneti, a limitet túllépett csatornák nem lesznek hallhatóak.
Példa 1:
mplayer -af channels=4:4:0:1:1:0:2:2:3:3 media.avi
Ez megváltoztatja a csatorák számát 4-re, és 4 útvonalat állít fel, melyek felcserélik a 0-ás és 1-es csatornát, a 2-es és 3-as érintetlenül hagyásával. Persze ha a lejátszandó média 2 csatornából áll, a 2-es és 3-as csatornák mindössze csendet fognak tartalmazni.
Példa 2:
mplayer -af channels=6:4:0:0:0:1:0:2:0:3 media.avi
6-ra változtatja a csatornák számát, és 4 útvonallal a 0-ás csatornát lemásolja a 0-tól a 3-ig terjedő csatornákra. A 4-es és 5-ös csatornákon csak csend van.
A format
szűrő a hang tulajdonságait konvertálja át.
bps <szám>
1
, 2
vagy 4
,
amik a mintánkénti byte-ok számat adják meg. Ezen opció megadása
szükséges.f <formátum>
alaw
, mulaw
vagy
imaadpcm
, float
vagy int
,
unsigned
vagy signed
, le
vagy
be
(little vagy big endian). Ezen opció megadása
szükséges.Példa:
mplayer -af format=4:float media.avi
beállítja a kimeneti formátumot 4 byte-ra mintánként.
A delay
szűrővel késleltetni lehet a hangszórókhoz érkező
hangot hogy a különböző helyről jövő hangok egyszerre érjenek oda a
hallgatóhoz.
Csak akkor hasznos ha több mint 2 hangszóród van. A paraméterek:
d1:d2:d3...
A megfelelő értékek kiszámítása a következőképpen történik:
Pl:
mplayer -af delay=10.5:10.5:0:0:7:0 media.avi
Ez az elülső bal és jobb csatornákat 10.5ms-el késlelteti, a két hátsót és a sub-ot 0ms-el, a középet pedig 7ms-el.
A szoftveres hangerőszabályzást a volume
audio szűrő
valósítja meg. Óvatosan használd, mert a jelet egészen a zajszintig lehet
vele csökkenteni. A legtöbb esetben érdemes inkább a PCM hangerőt
a maximumra rakni, utána pedig külső erősítőt használni, ezt a filtert
pedig mellőzni. Amennyiben a hangkártyád PCM mixere digitális és zajosnak
érzed, használd helyette a MASTER mixert. Ha külső erősítőt csatlakoztattál a gépedhez (majdnem
mindig így van), a zajszint a MASTER szint és az erősítő hangerőszabályzójának
együttes állítgatásával lecsökkenthető. Két opció van:
v <-200 - +60>
-200
és +60
között mely a
hangerőt adja meg dB-ben. Az alapértelmezett érték a 0dB.c
Példa:
mplayer -af volume=10.1:0 media.avi
ez a hangot 10.1dB-lel erősíti, és hard-clip-el ha a hangerő túl magas.
Ennek a szűrőnek van egy második funkciója is: méri a maximális hangerőt és kilépéskor kiírja. Ezt aztán a MEncoder-rel használva a teljes dinamikát ki lehet tölteni.
Az equalizer
szűrő egy 10 sávos equalizer,
10 IIR sáv pass szűrő implementálásával. Bármilyen lejátszandó hanggal
működik. A 10 sáv középső értékei a következők:
Sáv száma | Középérték |
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 |
Ha a lejátszott hang mintavételezési frekvenciája alacsonabb mint az egyik sáv megadott frekvenciája, akkor az adott sáv nem lesz használva. Ezen szűrő egyik ismert hibája, hogy a legfelső sáv karakterisztikája nem teljesen szimmetrikus ha a mintavételezési freki közel van sáv középértékéhez. Ez a probléma kiküszöbölhető a hang felmintavételezésével (resample szűrő).
Ennek a szűrőnek 10 paramétere van:
g1:g2:g3...g10
-12
és +12
között amik
a dB-ben adják meg a kívánt különbséget az egyes sávokbanPélda:
mplayer -af equalizer=11:11:10:5:0:-12:0:5:12:12 media.avi
erősíti a hangot a felső és alsó frekvenciatartományban, míg majdnem teljesen kioltja 1kHz körül.
A pan
szűrővel lehetséges a csatornák átkeverése. Gyakorlatilag
a hangerőszabályzó és a "channels" szűrők kombinációja. Kétféleképpen
lehet használni:
Ezt a szűrőt nehéz használni, és időt kell ráfordítani hogy a kívánt eredményt elérd. A használandó opciók száma függ a kimeneti csatornák számától:
nch <1-6>
1
és 6
között, és a kimeneti
csatornák számának megadására szolgál. Megadása kötelező.l00:l01:l02:..l10:l11:l12:...ln0:ln1:ln2:...
0
és 1
között.
l[i][j]
megadja, hogy mennyire lesz a j bemeneti csatorna
belemixelve az i kimeneti csatornába.Példa 1:
mplayer -af pan=1:0.5:0.5 -channels 1 media.avi
stereo -> mono lemixelés.
Példa 2:
mplayer -af pan=3:1:0:1:0.5:0.5 -channels 3 media.avi
3 kiement csatornát eredményez, melyek a 0-ás és 1-es csatornák eredeti állapotban, a 2-es csatorna pedig a 0-ás és az 1-es egybemixelése (melyet aztán el lehet küldeni egy sub-woofernek például).
A sub
szűrő egy sub woofer csatornát illeszt az audioba. Ez a
csatorna a 0-ás és 1-es csatornák átlaga lesz. Az így keletkező hangot
ezután áteresztjük egy 4th order Butterworth szűrőn, alapállapotban
60Hz-es vágási frekvenciával, ezután pedig hozzáadjuk az audiohoz.
Figyelem: ezt a szűrőt ki kell kapcsolni Dolby Digital 5.1-es hang esetén,
különben eltorzítja a sub woofer hangját. Két paramétere van:
fc <20-300>
ch <0-5>
0
és 5
melyek
megadják hogy melyik csatornába legyen beillesztve a sub audio.
Alapállapotban 5
. Megfigyelendő, hogy a csatornák száma
automatikusan meg lesz növelve erre az értékre, ha szükséges.Példa:
mplayer -af sub=100:4 -channels 5 media.avi
hozzáad egy sub-woofer csatornát 100Hz-es vágási frekvenciával a 4-es számú csatornára.
Matrix enkódolás térhatású hang dekódolására a surround
szűrő használatos. A Dolby Surround egy példa matrix enkódolású hangra.
Sok 2 csatornás hang valójában matrix térhatású hangot tartalmaz.
Ezen feature használatához legalább 4 csatornát támogató hangkártya
szükséges. Egy paramétere van:
d <0-1000>
0
és 1000
között, mely ms-ban megadja a hátsó hangszórók késleltetését.
Ez a késleltetés a következőképp állítható be: ha d1 a táv
a hallgatótol az elülső hangszórókig, és d2 a táv a hallgatótol
a hátsó hangszórókig, akkor a késleltetés értéke d
15ms-re állítandó ha d1 <= d2, és 15+5*(d1-d2)-re ha d1 > d2.
Az alapértelmezett értéke d
-nek 20ms.
Példa:
mplayer -af surround=15 -channels 4 media.avi
a hátsó hangszórókat 15ms-el késleltetve térhatású hang dekódolása.
Az MPlayer tartalmaz néhány audio plugint. Ezek a hang
tulajdonságainak megváltoztatására használhatóak. A használatuk az
-aop
opcióval történik, amit a
list=plugin1,plugin2,...
opció követ. A list
kapcsoló elhagyhatatlan, itt adható meg a használandó pluginek listája,
valamint a sorrendjük. Például a következő parancs:
mplayer media.avi -aop list=resample,format
először a resample pluginen, aztán a format pluginen keresztül vezeti a hangot.
A plugineknek is vannak opcióik, amelyek befolyásolják őket. Ezek részletesebben a következő fejezetekben vannak leírva. Ha egy pluginnak nem adsz meg beállításokat, az alapértelmezett beállításban fognak futni. Íme egy példa hogy hogyan használj több plugint, megadott opciókkal:
mplayer media.avi -aop
list=resample,format:fout=48000:format=0x8
Ez 44100Hz-es kimeneti frekvenciára mixel, és a kimeneti formátumot átállítja AFMT_U8-ra.
Currently audio plugins can not be used in MEncoder.
Az MPlayer képes az audio stream frekvenciáját növelni illetve csökkenteni. Ennek szükségessége autodetektálva van. Ez a funkció még nem működik a MEncoder-ben.
Használat :
mplayer media.avi -aop list=resample:fout=<a kívánt
frekvencia Hz-ben, pl 44100>
Az MPlayer-nek van egy audio pluginje ami a mátrix-kódolt hangok dekódolására szolgál (ilyen például a Dolby Surround).
Sok 2 csatornás file valójában mátrix-kódolt térhatású hangot tartalmaz.
Az ilyen dekódolás használatához egy legalább 4 csatornát támogató hangkártyára+meghajtóra van szükség.
Használat :
mplayer media.avi -aop list=surround
Ha a hangkártyád nem támogatja a signed 16bit int formátumot, ezzel
a pluginnel átalakíthatod a kimeneti hangot olyanba amit visz.
Egy opciója van neki, a format
, ami után megadandó a kívánt
formátum száma (lásd libao2/afmt.h). Ez a plugin ritkán használandó..
Használat :
mplayer media.avi -aop
list=format:format=<kimeneti formátum>
Példa plugin, csak developereknek. Lásd angol dox.
Ez a plugin szoftveres hangerőállításra képes, ezáltal olyan gépeken
is használható, ahol a hardveres mixer eszköz nem működik. Használható
továbbá olyan esetekben, amikor a PCM hangerő megváltoztatása nélkül
akarod a hangerőt megváltoztatni. Egyetlen opciója van, a volume
ami 0 és 255 közötti értékeket vehet fel (az alapértelmezett érték a 101 -
ez 0dB-nyi erősítést jelent).
Óvatosan használd ezt a plugint. A legtöbb esetben sokkal célravezetőbb a
hardveres mixeren a PCM csatorna maximálisra állítása, ezen plugin
kihagyása, és a hangerő MASTER csatornával történő állítása.
Amennyiben a hangkártyád PCM mixere digitális és zajosnak
érzed, használd helyette a MASTER mixert. Ha külső
erősítő is rá van kapcsolva a hangkártyádra, a zajszint minimálisra
csökkentése érdekében érdemes a "mester" csatornával és az erősítő
hangerőszabályzójával addig szórakozni amig a háttérben sziszegő zaj
elenyészik.
Használata :
mplayer media.avi -aop
list=volume:volume=<0-255>
A pluginnek van úgynevezett "compressor" vagy "soft-clipping" képessége. Ez akkor használható, ha a hang dinamikus tartománya túl magas, vagy a hangszóróké túl alacsony. Az eljárás hátránya, hogy torzítást okoz, ezért csak akkor használandó ha nincs más lehetőség.
Használata :
mplayer media.avi -aop list=volume:softclip
Ez a plugin lineárisan növeli a bal és jobb hangcsatorna közti különbséget (mint az XMMS extrastereo plugin) ezáltal "életszerűbb" effektust kölcsönözve a hangnak.
Használat :
mplayer media.avi -aop list=extrastereo
mplayer media.avi -aop list=extrastereo:mul=3.45
A paraméter egy float szám (mul
), aminek alapértéke 2.5. Ha
0.0-ra írod át, mono hangot kapsz.
Ez a plugin beállítja a hangerőt arra a maximális erősségre, ahol még nem lép fel torzítás.
Használat :
mplayer media.avi -aop list=volnorm