A videolejátszás egy nagyon friss és gyorsan fejlődő alkalmazási terület. Legyünk türelmesek, ez nem minden fog annyira könnyen menni, mint a hangok esetében.
A kezdéshez nem árt tudnunk, hogy a videokártyánk milyen gyártmányú és milyen chipet használ. Míg az Xorg és az XFree86TM számos különféle videokártyát ismer, csupán töredékükkel lehet jó lejátszási teljesítményt előhozni. Az X11 futtatása közben az xdpyinfo(1) parancs kiadásával kérdezhetjük le az X szervertől a kártyánk használatával elérhető kiterjesztéseket.
Érdemes a kezünk ügyében tartani egy
rövidke MPEG formátumú állományt,
amellyel majd ki tudjuk próbálni a
különféle lejátszókat és
azok beállításait. Mivel egyes DVD
lejátszók alapértelmezés szerint a
/dev/dvd
helyen keresik a
lejátszandó DVD eszközt, vagy egyszerűen
csak így írták meg ezeket,
mindenképpen hasznos lehet, ha szimbolikus linkeket hozunk
létre a megfelelő eszközökre:
#
ln -sf /dev/acd0 /dev/dvd
#
ln -sf /dev/acd0 /dev/rdvd
A devfs(5) működése miatt azonban ezek a
kézzel létrehozott linkek az
újraindítás után már nem
maradnak meg. A szimbolikus linkeket a rendszer minden egyes
indulásakor úgy tudjuk automatikusan
létrehozni, hogyha az /etc/devfs.conf
állományba felvesszük az alábbi
sort:
link acd0 dvd link acd0 rdvd
Emellett a DVD-k titkosításának feloldása, mely a DVD-meghajtók speciális funkcióit igényli, a DVD eszközökön írási jogot is igényel.
Az X11 osztott memóriát kezelő felületének gyorsításához javasolt néhány sysctl(8) változó értékének megnövelése is:
kern.ipc.shmmax=67108864 kern.ipc.shmall=32768
Több különböző úton lehet X11 alatt videókat nézni, de ennek tényleges módját igazából a rendelkezésre álló hardver határozza meg. Az itt leírt módszerek által kihozható minőség hardverenként eltérhet. Másodsorban a videók megjelenítése az X11-ben az utóbbi időben igen nagy hangsúlyt kapott, ezért az Xorg és az XFree86TM minden egyes változatával jelentősen javulhat a helyzet ezen a téren.
A videók megjelenítésére használt gyakori felületek:
X11: az X11 normális kimenete osztott memórián keresztül
XVideo: az X11 felületének kiterjesztése, ami tetszőleges X11 által kirajzolható objektum esetén támogat videót
SDL: a Simple Directmedia Layer
DGA: a Direct Graphics Access (közvetlen grafikus hozzáférés)
SVGAlib: alacsonyszintű konzolos grafikus réteg
Az Xorg és az XFree86TM 4.X rendelkezik egy XVideo (avagy Xvideo, Xv, xv) elnevezésű kiterjesztéssel, amelyen keresztül egy speciális gyorsítás segítségével a kirajzolható objektumokban közvetlenül meg tudunk jeleníteni videókat. Ezzel a kiterjesztéssel még a gyengébb gépeken is nagyon jó minőségű lejátszást tudunk elérni.
A kiterjesztés
működéséről az
xvinfo
parancs kiadásával
győződhetünk meg:
%
xvinfo
Ha a parancs eredménye ehhez hasonló, akkor a kártyánk támogatja az XVideót:
X-Video Extension version 2.2 screen #0 Adaptor #0: "Savage Streams Engine" number of ports: 1 port base: 43 operations supported: PutImage supported visuals: depth 16, visualID 0x22 depth 16, visualID 0x23 number of attributes: 5 "XV_COLORKEY" (range 0 to 16777215) client settable attribute client gettable attribute (current value is 2110) "XV_BRIGHTNESS" (range -128 to 127) client settable attribute client gettable attribute (current value is 0) "XV_CONTRAST" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_SATURATION" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_HUE" (range -180 to 180) client settable attribute client gettable attribute (current value is 0) maximum XvImage size: 1024 x 1024 Number of image formats: 7 id: 0x32595559 (YUY2) guid: 59555932-0000-0010-8000-00aa00389b71 bits per pixel: 16 number of planes: 1 type: YUV (packed) id: 0x32315659 (YV12) guid: 59563132-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x30323449 (I420) guid: 49343230-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x36315652 (RV16) guid: 52563135-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x3e0, 0x7c00 id: 0x35315652 (RV15) guid: 52563136-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x7e0, 0xf800 id: 0x31313259 (Y211) guid: 59323131-0000-0010-8000-00aa00389b71 bits per pixel: 6 number of planes: 3 type: YUV (packed) id: 0x0 guid: 00000000-0000-0000-0000-000000000000 bits per pixel: 0 number of planes: 0 type: RGB (packed) depth: 1 red, green, blue masks: 0x0, 0x0, 0x0
Az XVideo nem mindegyik implementációjában vannak jelen a felsorolt formátumok (YUV2, YUV12 stb.), ami viszont néhány lejátszó számára akadályokat jelenthet.
Amennyiben viszont ezt látjuk:
X-Video Extension version 2.2 screen #0 no adaptors present
Akkor a kártyánk nem rendelkezik XVideo támogatással.
Ha az XVideo nem támogatott a kártyánk számára, akkor az csupán csak annyit jelent, hogy a gépünknek nehéz dolga lesz a videók megjelenítéséhez szükséges számítási kapacitás kiszolgálásában. Azonban a videokártyánktól és processzorunktól függően még így is kielégítő eredményt tudunk előcsalni. Ekkor viszont minden bizonnyal érdemes lesz átolvasnunk a 7.4.3. szakasz - Ajánlott olvasmányokban, miként tudjuk növelni a teljesítményét.
A Simple Directmedia Layer, vagy SDL, eredetileg a Microsoft(R) Windows(R), BeOS és UNIX(R) közti hordozhatóságot szándékozta megvalósítani, aminek segítségével a hangot és grafikát hatékonyan használni tudó alkalmazások hozhatóak létre. Az SDL által nyújtott réteg a hardver olyan alacsonyszintű absztrakcióját öleli fel, amely gyakran még az X11 felületénél is hatékonyabb.
Az SDL a devel/sdl12 helyen található.
A közvetlen grafikus hozzáférés
az X11 egy olyan kiterjesztése, ami lehetővé
teszi a programok számára az X szerver
megkerülését és így
közvetlenül a videokártya
memóriáját képesek elérni.
Mivel a megosztás hatékony
megvalósításához ez nagyban
építkezik alacsonyszintű
leképzési műveletekre, ezért az
ilyet használó programokat
root
felhasználóként
kell futtatni.
A DGA kiterjesztés a dga(1)
segítségével tesztelhető és
mérhető. A dga
parancs
kiadása után minden billentyű
lenyomására megváltoztatja a
képernyőn látható színeket.
A kilépéshez a q
billentyűt kell lenyomni.
Ebben a szakaszban a FreeBSD Portgyűjteményéből a videók lejátszására alkalmas programokat vesszük számba. A videolejátszás nagyon gyorsan fejlődő terület, ezért az itt említett különböző alkalmazások képességei az itt leírtaktól némileg eltérhetnek.
Először is fontos tisztában lennünk azzal, hogy számos FreeBSD-n futó videoalkalmazás eredetileg linuxos alkalmazásként indult, és közülük sokan még csak béta minőségűek. Íme a FreeBSD-n is megtalálható videocsomagokkal kapcsolatos néhány olyan gond, amivel esetleg összefuthatunk:
Az egyik alkalmazás nem képes visszajátszani olyan állományt, amit egy másik alkalmazás hozott létre.
Az alkalmazás nem képes visszajátszani a saját maga által készített állományokat.
Ugyanazon alkalmazás két különböző gépen, amikor mind a kettőn az adott konfigurációra fordítjuk le, ugyanazt az állományt másképpen játssza vissza.
Egy olyan látszólag egyértelmű szűrő, mint például a kép átméretezése, a hibás átméretező rutin miatt nagyon csúnya eredményt produkál.
Az alkalmazás gyakran elszáll.
A porthoz nem találjuk a
dokumentációt, egyedül csak az interneten
vagy a port work
könyvtárában van.
Sok alkalmazás a "linuxizmus" jeleit is hordozza, vagyis gondok adódhatnak abból, hogy a szerzők az alkalmazások működtetéséhez a Linux rendszermag és a különféle terjesztésekben megtalálható módosított szabványos könyvtárak különlegességeit használják ki. Ezeket a portok karbantartói nem mindig észlelik és javítják ki, ami miatt az alábbiak bármikor bekövetkezhetnek:
A processzor jellemzőit a
/proc/cpuinfo
állományon
keresztül állapítják meg.
A szálak helytelen használatuk miatt a program befejeződésekor összeakadnak.
Az alkalmazással gyakran együtt használt egyéb alkalmazások még nem nincsenek benne a FreeBSD Portgyűjteményében.
Az ilyen alkalmazások fejlesztői a hordozhatóság javításával és a problémák megoldásával kapcsolatban eddig mindig igyekeztek együttműködni a portok karbantartóival.
Az MPlayer az utóbbi időben felbukkant, gyorsan fejlődő videolejátszó. Fejlesztőinek célja a sebesség és rugalmasság a Linux, illetve más UNIX(R) rendszereken. A kezdeményezés abból fakadt, hogy a fejlesztés mögött álló csapat alapítójának elege lett az akkoriban elérhető lejátszók teljesítményéből. Mondhatnánk, hogy ez a program feláldozta a grafikus felületet az áramvonalas kialakításért, azonban ha hozzászokunk a parancssori beállításokhoz és a billentyűkön keresztüli vezérléshez, remekül működik.
Az MPlayer a multimedia/mplayer helyen
található. A program a
fordítási folyamat során elvégez
számos hardverellenőrzést, aminek
eredményeképpen az egyik rendszeren
fordított program nem vihető a másikra.
Ezért különösen fontos portból
fordítani és nem pedig bináris csomagot
használni. Mindezek mellett a
Makefile
állományban
még számos, a make
parancsnak a fordítás megkezdésekor
átadható beállítást
találhatunk:
#
cd /usr/ports/multimedia/mplayer
#
make
N - O - T - E Take a careful look into the Makefile in order to learn how to tune mplayer towards you personal preferences! For example, make WITH_GTK1 builds MPlayer with GTK1-GUI support. If you want to use the GUI, you can either install /usr/ports/multimedia/mplayer-skins or download official skin collections from http://www.mplayerhq.hu/homepage/dload.html
Az üzenet fordítása:
F - I - G - Y - E - L - E - M Az mplayert személyes igényeinkhez úgy tudjuk igazítani, ha figyelmesen átnézzük a Makefile állományt! Például a WITH_GTK1 megadásával az MPlayer GTK1 alapú grafikus felülettel jön létre. A grafikus felület használatához telepítenünk kell a /usr/ports/multimedia/mplayer-skins portot is, vagy letölteni a hivatalos skingyűjteményt a http://www.mplayerhq.hu/homepage/dload.html oldalról.
A port alapbeállításai a
legtöbb felhasználó számára
megfelelőek, habár az Xvid kódek
használatához meg kell adnunk a
WITH_XVID
beállítást. Rajta kívül
még az alapértelmezett DVD eszközt is
érdemes megadni a WITH_DVD_DEVICE
beállítással, amelynek
alapértéke a
/dev/acd0
.
A leírás
elkészítésének
időpontjában az MPlayer
portja létrehozza a HTML dokumentációt
és a két végrehajtható
állományt: az mplayer
lejátszót és a videók
újrakódolásáért
felelős mencoder
segédprogramot.
Az MPlayer HTML dokumentációja nagyon közlékeny, és ha az olvasó nem találná valamelyik videohardver vagy felület leírását ebben a fejezetben, akkor ez a dokumentáció mindenképpen hasznos olvasnivalónak bizonyul. Ha a UNIX(R)-ok alatt elérhető videotámogatás leírását keressük, határozottan megéri időt szánni az MPlayer dokumentációjának alapos végigolvasására.
Az MPlayer
használatához a felhasználói
könyvtárunkban rendelkeznünk kell egy
.mplayer
elnevezésű
könyvtárral. Ezt a következő
paranccsal tudjuk létrehozni:
%
cd /usr/ports/multimedia/mplayer
%
make install-user
Az mplayer
parancssori
paraméterei a hozzá tartozó man oldalon
találhatóak meg, valamint mindezek a HTML
dokumentációban még
részletesebben. Ebben a szakaszban csupán
néhányukat mutatjuk be.
Egy állomány, mint például a
tesztvideo.avi
,
a -vo
beállításával
játszható le a különböző
felületeken:
%
mplayer -vo xv tesztvideo.avi
%
mplayer -vo sdl tesztvideo.avi
%
mplayer -vo x11 tesztvideo.avi
#
mplayer -vo dga tesztvideo.avi
#
mplayer -vo 'sdl:dga' tesztvideo.avi
Érdemes az itt felsorolt konfigurációk mindegyikét kipróbálni, mivel az egymáshoz mért teljesítményük rengeteg tényezőn múlik, de közülük talán maga a hardver a legjelentősebb.
A DVD-k lejátszásához
cseréljük ki a
tesztvideo.avi
paramétert a
dvd://
paraméterekkel, ahol az N
-dvd-device
ESZKÖZ
N
a lejátszandó fejezet sorszáma,
valamint az
ESZKÖZ
a DVD-hez tartozó eszközleíró.
Például így tudjuk elkezdeni
/dev/dvd
eszközről a 3.
fejezet lejátszását:
#
mplayer -vo xv dvd://3 -dvd-device /dev/dvd
A port fordítása során a
WITH_DVD_DEVICE
paraméter
segítségével megadható az
alapértelmezett DVD eszköz, amely
alapból a /dev/acd0
.
Erről többet a port
Makefile
állományában
találhatunk.
A leállításhoz,
szüneteltetéshez,
továbblépéshez és többi
hasonló funkcióhoz tartozó
billentyűket a mplayer -h
parancs
kimenetéből vagy a man oldal
elolvasásából deríthetjük
ki.
A lejátszáshoz tartozó
néhány viszonylag fontos
beállítás: az -fs
-zoom
teljesképernyős módra
vált, valamint a -framedrop
segít növeli a
teljesítményt.
A lejátszáskor kiadandó parancs
túlburjánzását el tudjuk
kerülni, ha létrehozunk egy
.mplayer/config
állományt
és itt állítjuk be a gyakori
opciókat:
vo=xv fs=yes zoom=yes
Végezetül megemlítjük, hogy az
mplayer
segítségével
a DVD-n található fejezeteket ki tudjuk
menteni .vob
állományokba. A DVD második
fejezetének kimentéséhez
gépeljük be ezt:
#
mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd
A parancs eredményeképpen keletkező
out.vob
állomány
formátuma MPEG lesz, amit a fejezetben bemutatott
további csomagokkal tudunk feldolgozni.
A mencoder
használatának megkezdése előtt
javasolt alaposan beleásnunk magunkat a HTML
dokumentációba és megismerkednünk
az alapvető beállításaival. Van
külön man oldala is, azonban a HTML
leírás nélkül
önmagában ez nem túl sokat ér.
Megszámlálhatatlan úton és
módon növelhető benne a
minőség, csökkenthető a
kódolási arány,
változtatható a formátum, és
ezen apró finomságok felelősek a
jó vagy éppen a rossz
teljesítményért. A
témába néhány példa
bemutatásával igyekszünk beavatni az
olvasót. Először vegyünk egy
egyszerű másolást:
%
mencoder bemenő.avi -oac copy -ovc copy -o eredmény.avi
A parancssori paraméterek helytelen
kombinációja olyan állományokat
eredményezhet, amelyeket még maga az
mplayer
sem képes
lejátszani. Ezért ha csak le akarunk szedni
egy állományt, akkor maradjunk meg az
mplayer
-dumpfile
opciójánál.
A
bemenő.avi
állományt MPEG4 video- és MPEG3
hangtömörítéssel (amihez kell majd a
audio/lame) így
tudjuk lekódolni:
%
mencoder bemenő.avi -oac mp3lame -lameopts br=192 \ -ovc lavc -lavcopts vcodec=mpeg4:vhq -o eredmény.avi
Ezzel az mplayer
és
xine
programok számára is
egyaránt lejátszható
állomány jön létre.
A DVD fejezeteit úgy tudjuk közvetlenül
kódolni, ha a parancssorban kicseréljük a
bemenő.avi
állományt az dvd://1 -dvd-device
/dev/dvd
beállításra, illetve
ha a programot root
felhasználóként futtatjuk. De mivel
elsőre általában ritkán vagyunk
elégedettek a kódolással,
érdemes először inkább lementeni az
egész fejezetet egy állományba, majd
azon dolgozni.
A xine egy széles hatókörű projekt, amelynek nem csak az a célja, hogy egy "mindenes" videolejátszó alkalmazást fejlesszenek, hanem az is, hogy újrahasznosítható függvénykönyvtárakat és egy moduláris felépítésű programot hozzanak létre, amely kiegészítűkkel bűvíthetű. A multimedia/xine helyen portként, valamint csomagként is elérhető.
A xine itt-ott még valamelyest durva, de mindenképpen egy dicséretes kezdeményezés. A xine a gyakorlatban erős processzort és mellé gyors videokártyát kíván, vagy pedig az XVideo kiterjesztés támogatását. A grafikus felhasználói felülete ugyan használható, de még kicsit esetlen.
Az írás pillanatában a xine mellé még nem kapunk olyan modult, amivel le tudnánk játszani a CSS kódolású DVD-ket. Léteznek azonban olyan külsős modulok, amelyekkel meg lehet valósítani ezt a feladatot, azonban a FreeBSD Portgyűjteményében ezeket még nem találhatjuk meg.
A xine az MPlayerhez képes többet tesz a felhasználóért, azonban ezzel egyidőben el is veszi tőle a finomhangolás lehetőségét. A xine legjobban az XVideót ismerő felületeken teljesít.
A xine alapértelmezés szerint grafikus felülettel indul, ahol a menük segítségével tudunk megnyitni egy adott állományt:
%
xine
Vagy a grafikus felület használata nélkül kiadhatjuk közvetlenül is az állomány lejátszását:
%
xine -g -p kedvencmozim.avi
A transcode nem egy újabb lejátszó, hanem a video- és audio állományok újratömörítésére használható programok gyűjteménye. A transcode segítségével a szabványos be- és kimeneten keresztül parancssoros programokkal képesek vagyunk videoállományokat összefűzni, megjavítani.
A multimedia/transcode port fordítása során temérdek beállítást adhatunk meg, amelyek közül az alábbi parancsban foglaljuk össze az általunk javasolandókat:
#
make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \ WITH_MJPEG=yes -DWITH_XVID=yes
Ezek a beállítások a legtöbb felhasználó számára elegendőek.
A transcode
képességeinek
illusztrálásához lássunk egy
példát, amiben megmutatjuk, hogyan kell egy DivX
állományt PAL szabványú MPEG-1
formátumú (PAL VCD)
állománnyá alakítani:
%
transcode -i bemenő.avi -V --export_prof vcd-pal -o output_vcd
%
mplex -f 1 -o eredmény_vcd.mpg eredmény_vcd.m1v eredmény_vcd.mpa
Az eredményül keletkező
eredmény_vcd.mpg
MPEG állomány akár már
játszható is
MPlayerrel. Ha az
állományt kiírjuk egy írható
CD-re, akkor ezzel video CD-t is létre tudunk hozni,
amihez viszont szükségünk van mind a multimedia/vcdimager és
sysutils/cdrdao
programokra.
A transcode
parancsnak van saját
man oldala, azonban ehelyett a transcode
wikiben érdemes inkább további
információkat és példákat
keresni.
A FreeBSD-hez tartozó videoszoftverek nagyon gyorsan fejlődnek. Könnyen elképzelhető, hogy az imént tárgyalt problémák legtöbbje a közeljövőben hamarosan megoldódik. Addig viszont bárkinek, aki a legtöbbet szeretné kihozni a FreeBSD audio- és video lehetőségeiből, rengeteg leírás és dokumentáció elolvasása alapján kell összecsiszolnia a különböző beállításokat, és csak néhány alkalmazás mellett érdemes kitartania. Ebben a szakaszban igyekszünk segíteni az olvasónak megtalálni az ilyen jellegű információkat.
Az MPlayer dokumentációja szakmai szempontból igen közlékeny. Ezt mindenkinek érdemes elolvasnia, aki a későbbiekben magasabb szakmai szinten akar foglalkozni a UNIX(R)-os videózással. Az MPlayer levelezési listája viszont alig tolerálja a dokumentációt rendesen el nem olvasó emberek kérdéseit, ezért minden egyes hiba bejelentése előtt lehetőleg rendesen nézzük át a dokumentáció odavágó részeit.
A xine HOGYAN egyik külön fejezetében az összes lejátszó esetén érvényesíthető teljesítménynövelési módszereket mutat be.
Végül íme néhány ígéretes alkalmazás, amelyeket érdemes kipróbálnunk:
Avifile, ami egyben a multimedia/avifile port
Ogle, ami a multimedia/ogle port
multimedia/dvdauthor, egy nyílt forráskódú DVD-tartalom szerkesztő
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.