2.3.2. Támogatott audio kimenetek:

2.3.2.1. Az MPlayer hang/kép szinkronizáló metódusa

Az MPlayer audio interfészének a neve libao2. Jelenleg a következő meghajtókat tartalmazza :

oss
OSS (ioctl) meghajtó (hardveres AC3 továbbítási támogatás)
sdl
SDL meghajtó (ESD, ARTS, stb)
nas
NAS (Network Audio System) meghajtó
alsa5
natív ALSA 0.5 meghajtó
alsa9
natív ALSA 0.9 meghajtó (hardveres AC3 továbbítási támogatás)
sun
SUN audio meghajtó (/dev/audio) BSD-re és Solaris-ra
macosx
natív MacOSX meghajtó
win32
natív Win32 meghajtó
arts
natív ARTS meghajtó (KDE lusereknek)
esd
natív ESD meghajtó (többnyire GNOME felhasználóknak)

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:

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.

2.3.2.2. Ajánlott beállítások különféle hangkártyákhoz

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

2.3.2.3 Audio szűrők

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
itt lehet megadni a szűrők automatizálásának feltételeit, valamint hogy milyen sebesség/pontosság optimalizációk használhatóak:
0
Automatikus beillesztés, CPU sebességre optimalizálás.
1
Automatikus beillesztés, leggyorsabb sebességre optimalizálás.
Figyelem: Minőségromlással járhat.
2
Automatikus beillesztés, minőségre optimalizálás.
3
Nincs automatizálás, nincs optimalizáció.
Figyelem: Lehetséges hogy az MPlayer nem fog futni ezzel az opcióval.
4
Automatikus beillesztés mint a 0-nál, de lebegőpontos számítások előnyben részesítésével.
5
Automatikus beillesztés mint a 1-nál, de lebegőpontos számítások előnyben részesítésével.
6
Automatikus beillesztés mint a 2-nál, de lebegőpontos számítások előnyben részesítésével.
7
Nincs automatizálás, mint a 3-nál, de lebegőpontos számítások előnyben részesítésével.
list
egy alias az -af opcióra.

A szűrő rétegre a következő általános opciók is hatással vannak:

-v
Üzenetek részletességének megnövelése
-channels
Ezzel az opcióval lehet megadni a hangkártyádnak hogy hány csatornán próbálja lejátszani a hangot. Azt is befolyásolja továbbá hogy a lejátszott médiábol hány csatorna legyen dekódolva. Ha a lejátszandó hang több csatornát tartalmaz mint amit a hangkártyád kiadni képes, a "channels" szűrő automatikusan beillesztésre kerül.
-srate
Ezzel az opcióval lehet megadni hogy mekkora mintavételezési frekvencián történjen a lejátszás (a hangkártya limitje ennek persze korlátot szab). Ha a lejátszandó hang frekvenciája kívül esik a hangkártyád képességein, a "resample" szűrő automatikusan beillesztésre kerül hogy kompenzáljon.
-format
Ezzel az opcióval meg lehet adni hogy milyen formátumban dolgozzon az audio szűrő réteg, és a hangkártya. Ha a lejátszandó hang formátuma más mint amit a hangkártya lejátszani képes, a "format" szűrő automatikusan beillesztésre kerül.
2.3.2.3.1 Up/Down-sampling

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>
egy egész szám, mely a mintavételezési frekvencia Hz-ben. A tartománya 8kHz-től 192kHz-ig terjed. Ha a bemeneti és a kimeneti frekvencia ugyanannyi, a szűrő automatikusan eltávolításra kerül. A magas frekvencia általában növeli a hangminőséget, főleg más szűrők használatával együtt.
sloppy
ez egy opcionális bináris paraméter mely megadása esetén engedélyezi a szűrőnek hogy kicsit eltérjen a 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>
ez egy egész szám 0 és 2 között, melyek megadják a használandó átmintavételező rutint. A 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.

2.3.2.3.2 Csatornák számának megváltoztatása

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>
egész szám 1 és 6 között, a csatornaszám megadására. Megadása szükséges.
nr <1-6>
egész szám 1 és 6 között mely az útvonalak számát adja meg. Opcionális.
from1:to1:from2:to2:from3:to3...
számpárok 0 és 5 között, amelyek megadják hova lesznek átirányítva a csatornák.

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.

2.3.2.3.3 Sample formátum konvertáló

A format szűrő a hang tulajdonságait konvertálja át.

bps <szám>
a lehetséges értékek: 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>
szöveges string, amely leírja a sample formátumot. A string lehetséges értékei a következők, egybe kell őket írni: 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.

2.3.2.3.4 Delay

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...
lebegőpontos számok, ms-ben megadják a késleltetést a különböző csatornákra vonatkoztatva. A minimális késleltetés 0ms, a maximális pedig 1000ms.

A megfelelő értékek kiszámítása a következőképpen történik:

  1. Mérd le a távolságot a hangszóróidtól hozzád, méterben. A távolságokat nevezd el s1-től s5-ig (5.1-es rendszert feltételezve). A sub-woofert nincs értelme kompenzálni.
  2. Vond ki az s1-től s5-ig az összes távolságot a legnagyobb távból, pl
    s[i] = max(s) - s[i]; i = 1...5
  3. A szükséges késleltetés (ms) kiszámítása
    d[i] = 1000*s[i]/342; i = 1...5

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.

2.3.2.3.5 Szoftveres hangerőszabályzás

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>
lebegőpontos szám -200 és +60 között mely a hangerőt adja meg dB-ben. Az alapértelmezett érték a 0dB.
c
bináris opció mely a "soft clipping"-et kapcsolja ki/be. Ez a funkció sokkal folyamatosabbá teheti a hangot ha nagyon magas hangerő van beállítva. Akkor kapcsold ezt be, ha a hangszóróid dinamikája alacsony. Viszont már most mondom hogy torzítást okoz, és csak végső esetben ajánlott.

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.

2.3.2.3.6 Equalizer

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ámaKözépérték
031.25 Hz
162.50 Hz
2125.0 Hz
3250.0 Hz
4500.0 Hz
51.000 kHz
62.000 kHz
74.000 kHz
88.000 kHz
916.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
lebegőpontos számok -12 és +12 között amik a dB-ben adják meg a kívánt különbséget az egyes sávokban

Pé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.

2.3.2.3.7 Panning szűrő

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:

  1. Sok csatorna egy csatornává mixelése, pl sztereórol monóra.
  2. Térhatású rendszerben a középső hangszóró "szélességének" beállítása.

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>
egész szám 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:...
lebegőpontos számok 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).

2.3.2.3.8 Sub-woofer

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>
opcionális lebegőpontos szám a vágási freki megadására, Hz-ben. A használható tartomány 20Hz-től 300Hz. A legjobb minőséghez olyan alacsonyra kell állítani amilyenre csak lehet. Ez javítani fogja a stereo vagy a térhatás élményét. Alapállapotban 60Hz.
ch <0-5>
opcionális egész szám 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.

2.3.2.3.9 Térhatás dekóder

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>
opcionális lebegőpontos szám 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.

2.3.2.4. Audio pluginek (régi)

Megjegyzés: az audio plugin-eket felváltották az audio szűrők, ezért az előbbiek hamarosan eltávolításra kerülnek.

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.

2.3.2.4.1. Up/Downsampling

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>

2.3.2.4.2. Térhatású hangok dekódolása

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

2.3.2.4.3. Sample formátum konvertáló

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>

2.3.2.4.4. Delay

Példa plugin, csak developereknek. Lásd angol dox.

2.3.2.4.5. Szoftveres hangerőszabályzás

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

2.3.2.4.6. Extrastereo

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.

2.3.2.4.7. Volume Normalizer

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