Audió kimeneti eszközök Audió/Videó szinkronizáció A Linux hangkártya vezérlői kompatibilítási problémákkal küzdenek. Ez azért van, mert az MPlayer a megfelelően kódolt hang vezérlők egy beépített tulajdonságát használja, ami engedélyezi nekik az audió/videó szinkron javítását. Sajnálatos módon néhány vezérlő szerzői nem gondoskodnak ezen tulajdonság kódolásáról, mivel nem szükséges az MP3-ak és a hangeffektek lejátszásához. Más média lejátszók, mint pl. az aviplay vagy a xine valószínűleg kapásból működnek ezekkel a vezérlőkkel, mert egy "egyszerű" módszert használnak belső időzítéssel. A mérések azt mutatják, hogy az ő módszereik nem olyan hatékonyak, mint az MPlayeré. Az MPlayert egy megfelelően megírt audió vezérlővel használva soha nem fog A/V deszinkronizáció bekövetkezni az audióban, csak nagyon rosszul elkészített fájlok esetén (lásd a man oldalt a megkerüléshez). Ha neked rossz audió vezérlőd van, próbáld ki a kapcsolót, megszünteti a problémáidat. Lásd a man oldalt a bővebb információkért. Néhány megjegyzés: Ha OSS vezérlőd van, először próbáld meg a -t (ez az alapértelmezett). Ha hibát tapasztalsz, megállást vagy bármit, ami a megszokottól eltér, próbáld ki a kapcsolót (MEGJEGYZÉS: szükséged lesz telepített SDL függvénykönyvtárakra és fejléc fájlokra). Az SDL audió vezérlő sok esetben segít és az ESD-t (GNOME) és az ARTS-ot (KDE) is támogatja. Ha 0.5-ös ALSA-d van, akkor majdnem mindig a -öt kell használnod, mivel az ALSA 0.5-nek hibás az OSS emulációs kódja, és össze fogja omlasztani az MPlayert egy ehhez hasonló üzenettel: DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer! Solaris-on használd a SUN audió verziót a kapcsolóval, különben sem a videó sem az audió nem fog működni. Ha a hang kattog CD-ROM lejátszása közben, kapcsold be az IRQ unmasking-ot, pl. hdparm -u1 /dev/cdrom (man hdparm). Ez általában jótékony hatású, bővebben a CD-ROM részben van leírva. Hangkártya tapasztalatok, javaslatok Linuxon egy 2.4.x kernel nagyon javasolt. A 2.2-es kernelt nem teszteltük. A Linux hang vezérlőit első sorban az OSS szabad verziója biztosítja. Ezeket a vezérlőket az ALSA (Advanced Linux Sound Architecture) váltotta fel a 2.5-ös fejlesztői sorozatban. Ha a disztribúciód még nem használja az ALSA-t, próbáld ki, ha hanggal kapcsolatos problémákat tapasztalsz. Az ALSA vezérlők általában jobbak az OSS-nél kompatibilításban, teljesítményben és tulajdonságokban egyaránt. De néhány hangkártyát csak a 4Front Technologies által kiadott kereskedelmi OSS vezérlők támogatnak. Ráadásul elérhetőek számos nem-Linux rendszeren is. HANG KÁRTYA VEZÉRLŐ Max kHz Max Csatornák Max Nyitások az eszközt egyidejűleg használni képes alkalmazások száma. OSS/Szabad ALSA OSS/Pro egyéb VIA alaplapi (686/A/B, 8233, 8235) via82cxxx_audio snd-via82xx 4-48 kHz vagy csak 48 kHz, chipset-en múlik Aureal Vortex 2 nincs nincs OK Linux Aureal vezérlők 32k-ra növelt buffer méret 48 4.1 5+ SB Live! Analóg OK, S/PDIF nem működik Mindkettő OK Mindkettő OK Creative OSS vezérlője (S/PDIF támogatás) 192 4.0/5.1 32 SB 128 PCI (es1371) OK ? 48 stereo 2 SB AWE 64 max 44kHz 48kHz rossz hangzású 48 GUS PnP nincs OK OK 48 Gravis UltraSound ACE Gravis UltraSound MAX OK OK (?) 48 ESS 688 OK OK (?) 48 C-Media kártyák (CMI8338/8738) OK OK S/PDIF támogatott ALSA 0.9.x-szel ? 44 sztereo 1 Yamaha kártyák (*ymf*) nem OK (?) (talán ) OK csak OSS emulációs ALSA 0.5-tel ÉS -vel (!) (?) envy24 chip-ű kártyák (mint a Terratec EWS88MT) ? ? OK ? PC Speaker vagy DAC OK nincs Linux PC speaker OSS vezérlő A vezérlő 44.1-et emulál, talán többet. mono 1 Örömmel fogadjuk az ezen dokumentummal kapcsolatos visszajelzéseket. Kérjük írd meg, hogy hogyan működött együtt az MPlayer és a hang kártyá(i)d. Audio szűrők Az audió szűrők segítségével a hang adatok tulajdonságai megváltoztathatóak, még mielőtt a hang ki lenne küldve a hangkártyára. A szűrők be és kikapcsolása alapértelmezésben automatikus, de ez felülbírálható. A szűrők akkor aktiválódnak, ha az audió adat tulajdonságai különböznek attól, amit a hangkártya igényel és ha nem szükségesek, deaktiválhatóak. A kapcsolót használhatod a szűrők automatikus bekapcsolásának felülbírálásához vagy az automatikusan nem elindított szűrők aktiválásához. A szűrők olyan sorrendben lesznek lefuttatva, ahogy a vesszővel elválasztott sorban szerepelnek. Például: mplayer -af resample,pan movie.avi átereszti a hangot a resampling szűrőn majd a pan szűrőn. Figyelj rá, hogy a lista ne tartalmazzon szóközt, különben nem fog működni. A szűrők viselkedése gyakran megváltoztatható kapcsolókkal. Ezek a kapcsolók az alábbi részben bővebben le lesznek írva. Egy szűrő az alapértelmezett beállításokkal fog futni, ha nincs megadva hozzá kapcsoló. Itt egy példa, hogy hogyan használhatod a szűrőket a szűrő specifikus kapcsolókkal együtt: mplayer -af resample=11025,pan=1:0.5:0.5 -channels 1 -srate 11025 media.avi Ez a parancs beállítja a resample szűrő kimeneti frekvenciáját 11025Hz-re és lebutítja az audiót 1 csatornára a pan szűrővel. A szűrő réteg teljes futtatását a kapcsoló szabályozza. Ennek a kapcsolónak két alopciója van: A egy bitmező, ami beállítja, hogy a szűrőket hogyan kell beilleszteni és milyen sebesség/precizítás optimalizációt használjanak: A szűrők automatikus beillesztése és optimalizálása a CPU sebességéhez. A szűrők automatikus beillesztése és optimalizálása a legnagyobb sebességhez. Figyelmeztetés: Néhány tulajdonság az audió szűrőkben elromolhat csendben, rontva így a hang minőséget. A szűrők automatikus beillesztése és optimalizálása minőséghez. A szűrők nem illesztődnek be automatikusan és nincs optimalizálás. Figyelmeztetés: Lehet, hogy az MPlayer összeomlik ezzel a beállítással. A szűrők automatikus beillesztése a fenti 0-nak megfelelően, de amennyiben lehetséges, lebegőpontos feldolgozást használ. A szűrők automatikus beillesztése a fenti 1-nek megfelelően, de amennyiben lehetséges, lebegőpontos feldolgozást használ. A szűrők automatikus beillesztése a fenti 2-nek megfelelően, de amennyiben lehetséges, lebegőpontos feldolgozást használ. A szűrők nem illesztődnek be automatikusan a fenti 3-nak megfelelően, és amennyiben lehetséges, lebegőpontos feldolgozást használ. A a -af kapcsoló álneve. A szűrő réteget a következő általános kapcsolók is érintik: Növeli a beszédesség szintjét és ezáltal sok szűrő extra státusz üzenetet ír ki. Ez a kapcsoló beállítja a hangkártyán használni kívánt kimeneti csatornák számát. A médiából dekódolt csatornák számát is érinti ez. Ha a médiában kevesebb csatorna van, mint amennyit megadsz, a csatorna szűrő (lásd lejebb) automatikusan beillesztődik. Az forgalom irányítás a csatorna szűrő alapértelmezett forgalom irányítása alapján zajlik. Ez a kapcsoló beállítja a hangkártyán használni kívánt mintavételezési rátát (természetesen a kártyák korlátozzák ezt). Ha a hangkártyád mintavételi frekvenciája különbözik az aktuális médiáétól, a resample szűrő (lásd lejebb) beillesztődik az audió szűrő rétegbe, hogy kompenzálja a különbséget. Ez a kapcsoló a minta formátumát állítja be az audió szűrő réteg és a hangkártya között. Ha a hangkártyád által elvárt minta formátum különbözik az aktuális médiáétól, egy formátum szűrő (lásd lejebb) beillesztődik, hogy kiigazítsa a különbséget. Up/Downsampling Az MPlayer teljes mértékben támogatja a hang up/down-sampling-et a szűrő segítségével. Akkor használható, ha fix frekvenciával dolgozó hangkártyád van vagy leragadtál egy régi kártyánál, ami csak maximum 44.1 kHz-et tud. Ez a szűrő automatikusan engedélyezve lesz szükség esetén, de explicit módon is engedélyezheted a parancssorban. Három kapcsolója van: egy egész szám, amit a kimeneti mintavételi frekvenciát adja meg Hz-ben. Az elfogadható tartomány 8kHz-től 192kHz-ig terjed. Ha a bemenet és a kimenet mintavételi frekvenciája ugyan annyi vagy ez a paraméter el van hagyva, a szűrő automatikusan kikapcsol. A magas mintavételi frekvencia normális esetben javítja az audió minőséget, különösen ha más szűrőkkel együtt használod. egy opcionális bináris paraméter, ami engedélyezi, hogy a kimeneti frekvencia eltérjen az -tel megadott frekvenciától. Ez a kapcsoló akkor használható, ha a lejátszás elindulása nagyon lassú. Alapértelmezésben engedélyezett. egy opcionális egész szám 0 és 2 között, ami kiválasztja, hogy melyik resampling módszert használja a program. Itt a 0 a lineáris interpolációt jelenti, az 1 a poly-phase filter-bank és egész feldolgozás segítségével történő resampling-ot és a 2 a poly-phase filter-bank és lebegőpontos feldolgozást. A lineáris interpoláció rettentően gyors, de rossz a hang minősége, különösen ha up-sampling-hez használják. A legjobb minőséget a 2-es adja, de ez a módszer okozza a legnagyobb CPU terhelést is. Például: mplayer -af resample=44100:0:0 resample szűrő kimeneti mintavételezési frekvenciáját 44100Hz-re állítja, exakt kimeneti frekvenciát használ és lineáris interpolációt. Csatornák számának megváltoztatása A szűrő csatornák hozzáadásához vagy elvételéhez használható, valamint csatornák útvonalának irányításához és másolásához. Automatikusan engedélyezve lesz, ha az audió szűrő réteg kimenete különbözik a bemeneti rétegtől vagy ha más szűrő igényli. A szűrő eltávolítja magát, ha nincs rá szükség. A kapcsolók száma dinamikus: egy egész szám 1 és 6 között, amit a kimeneti csatornák számának beállításához használhatsz. Ezen kapcsoló megadása kötelező, ha elhagyod, futási hibát kapsz. egy egész szám 1 és 6 között, ami az útvonalak számának meghatározásához kell. Ez a paraméter opcionális. Ha nem adod meg, az alapértelmezett útvonal irányítás lesz használva. 0 és 5 közötti számpárok, amik leírják a csatornák az egyes csatornák útvonalát. Ha csak az van megadva, az alapértelmezett útvonal irányítás lesz használva, ami a következő képpen működik: Ha a kimeneti csatornák száma nagyobb, mint a bemeneti csatornáké, az üres csatornák be lesznek illesztve (kivéve a monoról sztereóra keverést, akkor a mono csatorna ismétlődik minden kimeneti csatornán). Ha a kimeneti csatornák száma kisebb, mint a bemeneti csatornáké, akkor a többlet csatornák le lesznek vágva. 1. példa: mplayer -af channels=4:4:0:1:1:0:2:2:3:3 media.avi ez a csatornák számát 4-re állítja és 4 útvonalat is beállít, ami felcseréli a 0-ás és az 1-es csatornád, de békén hagyja a 2-es és 3-as csatornákat. Figyelj rá, hogy ha csak két csatornát tartalmazó médiát játszol le, a 2-es és 3-as csatorna elnémul, de a 0-ás és az 1-es marad felcserélve. 2. példa: mplayer -af channels=6:4:0:0:0:1:0:2:0:3 media.avi beállítja a csatornák számát 6-ra és 4 útvonalat ad meg, ami a 0. csatornát átmásolja a 0. és 3. csatornára. A 4-es és 5-ös csatorna el lesz némítva. Minta formátum konvertáló A szűrő különböző minta formátumok között konvertál. Automatikusan engedélyezve lesz ha a hangkártya vagy egy másik szűrő igényli. lehet 1, 2 vagy 4, az egy mintában lévő bájtok számát adja meg. Ezen kapcsoló megadása kötelező, ha elhagyod, futási hibát kapsz. egy karakterlánc, ami leírja a minta formátumát. A karakterlánc az alábbiak összefűzésével keletkezik: , vagy , vagy , vagy , vagy (little- vagy big-endian). Ezen kapcsoló megadása kötelező, ha elhagyod, futási hibát kapsz. Példa: mplayer -af format=4:float media.avi beállítja a kimeneti formátumot mintánkénti 4 bájtos lebegőpontos adatra. Késleltetés A szűrő késlelteti a hangot a hangszóróknál, így különböző csatornákon érkező hang egyidőben ér a hallgató pozíciójába. Ez akkor jó, ha több, mint 2 hangszóród van. Ez a szűrő az alábbi paraméterekkel rendelkezik: lebegőpontos számok, amik a késleltetési időket reprezentálják ms-ben, külön az egyes csatornákhoz. A minimum késleltetés 0ms, a maximum 1000ms. A különböző csatornákhoz szükséges késleltetés kiszámításához kövesd ez a leírást: Mérd meg a hangszórók távolságát méterben, a hallgatási helyedhez viszonyítva, így megkapod az s1-s5 távolságokat (egy 5.1-es rendszernél). A mélynyomót nincs értelme kompenzálni (egyébként sem fogod hallani a különbséget). Vond ki a s1-s5 távolságokat a maximum távolságból, pl. s[i] = max(s) - s[i]; i = 1...5 Számítsd ki a szükséges késleltetéseket ms-ben: d[i] = 1000*s[i]/342; i = 1...5 Például: mplayer -af delay=10.5:10.5:0:0:7:0 media.avi a bal és jobb első hangszórót 10.5ms-sel, a két hátsó és a mély csatornát 0ms-sel, a középső csatornát pedig 7ms-sel késlelteti. Szoftveres hangerő szabályozás A szoftveres hangerő szabályozást a audió szűrő valósítja meg. Óvatosan használd ezt a szűrőt, mivel lecsökkentheti a jel erősségét a hang zaj szintjére. A legtöbb esetben az a legjobb, ha a PCM hangerőt maximumra állítod, ezt a szűrőt kihagyod és a hangszórók kimeneti hangerejét a keverőd mester hangerő állítójával állítod. Abban az esetben, ha a hangkártyádnak digitális PCM keverője van, nem analóg, és torzulást hallasz, használd inkább a MESTER keverőt. Ha külső erősítő van kötve a számítógéphez (legtöbbször ez az eset áll fenn), a zajszint minimalizálható a mester hangerő és az erősítőn lévő hangerő gomb segítségével egészen amíg a sziszegő háttérzaj meg nem szűnik. Ennek a szűrőnek két kapcsolója van: egy lebegőpontos szám -200 és +60 között, ami a hangerőt jelenti dB-ben. Az alapértelmezett szint 0dB. ez egy bináris vezérlő, ami a soft clipping-et kapcsolja ki vagy be. A soft-clipping a hangot még jobbá teheti, ha nagy hangerőt használsz. Engedélyezd ezt a kapcsolót, ha a hangszóróid dinamikus intervalluma nagyon kicsi. Vigyázz, ez a tulajdonság torzulást okozhat, csak végső megoldásként használd. Példa: mplayer -af volume=10.1:0 media.avi erősíti a hangot 10.1dB-re és hard-clip-et használ ha a hangerő túl nagy. Ennek a szűrőnek van egy második tulajdonsága is: Megméri az összesített maximum hangszintet és kiírja ezt a szintet, amikor az MPlayer kilép. Ez a hangerő becslés használható a hangerő szint beállítására az MEncoderben úgy, hogy a maximum dinamikus intervallumot használd. Equalizer Az szűrő egy 10 oktáv széles grafikus equalizert jelképez, a 10 IIR széles pass szűrők felhasználásával. Ez azt jelenti, hogy mindig működik, a lejátszott audió típusától függetlenül. A 10 sáv frekvencia középértékei: Sáv számFrekvencia kö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 mintvételi rátája kisebb, mint a frekvencia sávhoz tartozó frekvencia középérték, akkor a sáv le lesz tiltva. Ezen szűrő ismert hibája, hogy legfelső sáv karakterisztikája nem teljesen szimmetrikus, ha a mintavételi ráta közel van a sáv frekvencia középértékéhez. Ez a probléma megkerülhető a hang resample szűrővel történő up-sampling-elésével, még mielőtt ez a szűrő megkapná a hangot. Ennek a szűrőnek 10 paramétere van: lebegőpontos számok -12 és +12 között, melyek az egyes frekvencia sávokhoz tartozó erősítés mértékét adják meg dB-ben. Például: mplayer -af equalizer=11:11:10:5:0:-12:0:5:12:12 media.avi erősíteni fogja a hangot a felső és az alső frekvencia tartományokban, míg majdnem teljesen kikapcsolja azt 1 kHz környékén. Pan szűrő A szűrőt csatornák önkényes összekeverésére használhatod. Alapjaiban a hangerő vezérlő és a channel szűrő keveréke. Két fő felhasználási módja van ennek a szűrőnek: Sok csatorna lekeverése kevésre, sztereo lemixelése mono-ra például. A középső hangszóró "szélességének" átállítása egy térhatású hang rendszernél. Ezt a szűrőt nehéz használni, és némi buherálás kell hozzá, hogy meglegyen a kívánt eredmény. Ezen szűrő kapcsolóinak száma a kimeneti csatornák számától függ: egy egész szám 1 és 6 között, a bemeneti csatornák száma adható meg vele. Ezen kapcsoló megadása kötelező, ha elhagyod, futási hibát kapsz. lebegőpontos számok 0 és 1 között. meghatározza, hogy a j. bemeneti csatorna hányad része lesz bemixelve az i. kimeneti csatornába. 1. példa: mplayer -af pan=1:0.5:0.5 -channels 1 media.avi Lemixel sztereóból mono-ba. 2. példa: mplayer -af pan=3:1:0:1:0.5:0.5 -channels 3 media.avi 3 csatornás kimenetet ad, a 0. és 1. csatornát érintetlenül hagyja, és belemixeli a 2. kimeneti csatornába (amit például a mélynyomóra küld ki). Sub-woofer A szűrő egy mélynyomó csatornát ad az audió folyamhoz. A mélynyomó csatorna létrehozásához szükséges adatokat a 0. és az 1. csatorna hangjának átlagolásával nyeri. Az eredményként kapott hangot még low-pass módon megszűri egy 4. utas Butterworth szűrő segítségével, az alapértelmezett 60 Hz-es vágási frekvenciával majd egy külön csatornát ad a hang folyamhoz. Figyelem: Kapcsold ki ezt a szűrőt, ha Dolby Digital 5.1-es hanggal rendelkező DVD-t játszol le, különben ez a szűrő összezavarja a mélynyomó hangját. Két kapcsolója van a szűrőnek: egy opcionális lebegőpontos szám, ami a szűrő vágási frekvenciájának Hz-ben történő megadásához használható. A helyes érték 20 Hz és 300 Hz között van. A legjobb eredményhez próbáld meg a vágási frekvenciát a lehető legkisebbre állítani. Ezáltal nőni fog a sztereo és a térhatás minősége. Az alapértelmezett vágási frekvencia 60 Hz. egy opcionális egész szám 0 és 5 között, ami meghatározza annak a csatornának a számát, ahova a mélynyomó audió beillesztésre kerül. Az alapértelmezett csatorna szám 5. Figyelj rá, hogy a csatornák száma automatikusan meg lesz növelve ch értékre, ha szükséges. Példa: mplayer -af sub=100:4 -channels 5 media.avi létrehoz egy mélynyomó csatornát 100 Hz-es vágási frekvenciával a 4. kimeneti csatornán. Surround-sound dekódoló A mátrix kódolású térhatású hang dekódolható a szűrővel. A Dolby Surround például mátrix kódolású formátum. Sok 2 csatornás audiót tartalmazó fájl tulajdonképpen mátrixolt térhatású hangot tartalmaz. Ezen tulajdonság kihasználásához olyan hangkártyára van szükség, ami legalább 4 csatornát támogat. Ennek a szűrőnek egy paramétere van csak: egy opcionális lebegőpontos szám 0 és 1000 között, amivel a hátsó hangszórók késleltetési ideje állítható be ms-ben. Ez a késleltetést az alábbi módon tanácsos beállítani: ha a d1 a hallgatási pozíció és az elülső hangszórók közötti távolság és d2 a hallgatási pozíció és a hátsó hangszórók közötti távolság, akkor a d késleltetést 15 ms-re célszerű állítani, ha d1 <= d2 és 15 + 5*(d1-d2) értékre, ha d1 > d2. d alapértelmezett értéke 20 ms. Példa: mplayer -af surround=15 -channels 4 media.avi bekapcsolja a térhatású hang dekódolását a hátsó hangszórók hangjához képest 15 ms-os késleltetéssel. Audio Exporter Az audió szűrők exportálják a bejövő jeleket más processzeknek a memória map-olás segítségével (mmap()). A memória map-olt területein egy fejléc található: int nch /*csatornák száma*/ int size /*buffer méret*/ unsigned long long counter /*a szinkronizáció fenntartásához kell, új adat exportálásakor frissítve lesz*/ A többi csak payload (nem átlapolt), 16 bitnyi adat. A fájl, amibe exportáltatni szeretnél a szűrővel. Az alapértelmezett a ~/.mplayer/mplayer-af_export fájlba map-olás. Csatornánkénti minták száma. Az alapértelmezett 512 minta. példa: mplayer -af export=/tmp/mplayer-af_export:1024 media.avi exportál 1024 mintát csatornánként a /tmp/mplayer-af_export fájlba. Extrastereo Ez az audió szűrő (lineárisan) növeli a különbséget a bal és a jobb csatornák között (mint az XMMS extrastereo plugin-je), ami egy kis "élő" hatást ad a lejátszáshoz. Ennek a szűrőnek egy paramétere van: a differencia együttható, egy opcionális lebegőpontos szám, ami alapértelmezésként 2.5. Ha 0.0-ra állítod, mono hangot kapsz (az összes csatorna átlaga). Ha 1.0-ra állítod, a hang változatlan marad, ha -1.0-re, akkor a bal és a jobb csatorna felcserélődik. Használat: mplayer -af extrastereo media.avi mplayer -af extrastereo=3.45 media.avi Hangerő normalizáló Ez az audió szűrő maximalizálja a hangerőt a hang torzítása nélkül. Használat: mplayer -af volnorm media.avi