Video taasesitus on uus ala, mis hetkel väga kiiresti areneb. Ära närvi mine. Mitte kõik ei lähe siinkohal nii libedalt kui heli puhul.
Enne alustamist uuri välja videokaardi mudel ning see, millist kiipi ta kasutab. Kuigi XFree86 toetab suurt hulka videokaarte, suudavad vaid vähesed tõeliselt head videoesitust pakkuda. Seda, milliseid täiustusi X-server sinu kaardi puhul toetab, saad X11 töötamise ajal teada käsu xdpyinfo(1) abil.
Võta endale testimiseks mõni lühike MPEG-fail, mille abil saaksid erisuguseid mängijaid ning valikuid hinnata. Kuna mõned DVD-mängijad otsivad DVD-meediat vaikimisi failist /dev/dvd, või siis on see seade neisse sisse kodeeritud, oleks sul kasulik luua sümboolsed lingid õigete seadmete juurde:
# ln -sf /dev/acd0c /dev/dvd # ln -sf /dev/racd0c /dev/rdvd
FreeBSD 5.X puhul, mis kasutab süsteemi devfs(5), on soovituslikud lingid kergelt teistsugused:
# ln -sf /dev/acd0c /dev/dvd # ln -sf /dev/acd0c /dev/rdvd
Lisaks nõuab DVD dekrütpeerimine eriliste DVD-ROM-funktsioonide esilekutsumist ja sealjuures kirjutamisõigust DVD-seadmele.
Mõned portsud, millest sai räägitud, vajavad korralikuks kompileerumiseks alljärgnevaid kerneliseadeid. Niisiis, enne kui üritad midagi kompileerida, lisa kerneli konfiguratsioonifaili järgmised valikud, ehita uus kernel ning reboodi:
option CPU_ENABLE_SSE option USER_LDT
Selleks, et X11-liidese jagatud mälule jõudlust lisada, soovitame sysctl(8) mõne muutuja väärtust tõsta:
kern.ipc.shmmax=67108864 kern.ipc.shmall=32768
X11 all video kuvamiseks on mitu võimalust. Põhiliselt sõltub kõik riistvarast. Meetodid, mida siinkohal käsitleme, annavad eri riistvara puhul erineva kvaliteediga tulemusi. Samuti on viimasel ajal tähelepanu keskmes X11 videorenderdusvõime ning XFree86 iga uus versioon võib endaga sel alal kaasa tuua silmapaistvaid edusamme.
Nimekiri tavalisematest videoliidestest:
X11: tavaline X11-väljund, mis kasutab jagatud mälu;
XVideo: X11 edasiarendus, mis toetab videot iga X11 joonistusala puhul;
SDL: Simple Directmedia Layer;
DGA: Direct Graphics Access;
SVGAlib: madala tasandi konsooligraafika kiht;
XFree86 4.X jaoks on olemas täiustus nimega XVideo (e. Xvideo, e. Xv, e. xv) mille abil saab videot joonistusala objektides läbi erilise kiirenduse otse kuvada. Selle täiustuse abil saame väga hea taasesituskvaliteedi isegi väikse jõudlusega masinates (näiteks minu PIII 400 Mhz laptopi puhul) Kahjuks aga on see täiustus praegu "kaubaga kaasas" ainult alljärgnevatel kaartidel:
3DFX Voodoo 3
Intel i810 ja i815
mõned S3-kiibid (näiteks Savage/IX ja Savage/MX)
Kui su kaarti nende hulgas pole, ära veel lootust kaota. XFree86 4.X-le lisatakse iga uue väljalaskega xv-võimalusi juurde. [1]. Selleks, et kontrollida, kas nimetatud täiustus töötab, kirjuta käsureale xvinfo:
% xvinfo
Kui saad alljärgneva tulemuse, on sinu kaardi ja XVideo vahel kõik korras:
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, 0x0Pane veel ka tähele, et kõikide XVideo teostuste puhul ei eksisteeri nimekirjas kuvatud formaate (YUV2, YUV12, jne.) ning nende puudumine võib mõne mängija tööd häirida.
Kui said tulemuseks midagi säärast:
X-Video Extension version 2.2 screen #0 no adaptors present
ei ole sinu kaardi jaoks arvatavasti XVideo tuge.
Viimasel juhul on su kuvaril lihtsalt videorenderduse arvutuslike vajadustega toimetulek keerulisem. Olenevalt videokaardist ja protsessorist võid siiski saada rahuldava tulemuse. Peaksid ehk lugema lõiku videoesituse paremaks muutmise kohta käesoleva teksti lisalugemise osast: Section 9.4.3.
SDL (Simple Directmedia Layer) loodi mõttega pakkuda portimiskihti Microsoft Windowsi, BeOS-i ja Unixi vahel, mis pidi võimaldama igale platformile sobivate, heli ja graafikat efektiivselt kasutavate rakenduste arendamist. SDL-kiht kujutab endast madala tasandi abstraktsiooni, mis on mõnikord efektiivsem lahendus kui X11-liides.
SDL leidub pakis devel/sdl12
DGA (Direct Graphics Access) on XFree86 täiustus, mis lubab programmil X-serverist mööda minna ning seega muuta freimipuhvrit otse. Kuna DGA sõltub sellise jagatud kasutuse puhul madala tasandi mälukaardistusest, tuleb programme, mis teda kasutavad, jooksutada root-õigustes.
DGA-täiustuse jõudlust saab testida dga(1) abil. dga töö ajal muutuvad ekraanipildi värvid iga klahvivajutuse järel. Lõpetamiseks vajuta klahvi q.
Käesolev peatükk käsitleb FreeBSD portsude kollektsioonist videoesituse jaoks saadaolevat tarkvara. Videoesitus on hetkel väga kiiresti arenev tarkvaraarenduse valdkond ning erinevate rakenduste reaalsed omadused võivad siinkirjeldatuist mingil määral erineda.
Esiteks tuleb meeles pidada, et suur osa FreeBSD all kasutatavaist videorakendustest mõeldi algselt välja Linuxi jaoks. Paljud neist rakendustest on ikka veel beeta-kvaliteediga. Järgnevalt toome ära nimekirja probleemidest, mille otsa võid sattuda kasutades FreeBSD peal video pakette.
Programm ei suuda esitada faili, mille on loonud mõni muu programm.
Programm ei suuda esitada enda loodud faili.
Kahel eri masinal ja kummagi masina jaoks temale vastavalt kompileerituna esitab üks ja sama programm üht ja sama faili erinevalt.
Mõne triviaalse filtri, näiteks pildi suuruse muutja kasutamine toob endaga vigaselt kirjutatud koodi tõttu kaasa väga halva pildi.
Programm tekitab tihtipeale core dumpi.
Portsuga koos ei paigaldata dokumentatsiooni ja selle leiab kas veebist või portsu `work` kataloogist.
Paljudes rakendustes võivad esineda ka ``linuxismid''. See tähendab, et võib esineda probleeme, mis tulenevad sellest, mil viisil mõned standardsed teegid Linuxi distributsioonides töötavad, või siis mõnest Linuxi kerneli omadusest, millega rakenduse autorid arvestanud on. Võib juhtuda, et portsude haldajad ei märka neid probleeme ning ei võta nendega midagi ette, niisiis kerkib esile mõni alljärgnev häda:
protsessori omaduste tuvastamiseks kasutatakse faili /proc/cpuinfo;
programmilõimude vale kasutus, mis viib programmi hangumisele vahetult enne töö lõppu ning seega ta tegelikult ei lõpeta;
rakendusega koos kasutatakse tarkvara, mida ei leidu veel FreeBSD portsude kollektsioonis.
Siiamaani on rakenduste arendajad portsude haldajatega koostööd teinud, et programmide portimiseks tuleks teha minimaalselt muudatusi.
MPlayer on hiljuti loodud ning kiiresti arenev videomängija. MPlayer-i meeskonna eesmärkideks on kiirus ja paindlikkus Linuxil ja teistel unixilistel. Projekt lükati käima, kui tiimi asutajal sai kõrini tol ajal saadaval olnud mängijate halvast videoesitusest. Mõned inimesed leiavad, et selle rakenduse puhul on ökonoomsele disainile toodud ohvriks liides, kuid niipea kui harjud käsureavõtmetega ning klahvivajutustega, töötab asi väga hästi.
MPlayer-i asukohaks on multimedia/mplayer. MPlayer teeb ehitusprotsessi jooksul mitu riistvaratesti, mistõttu tulemuseks saadavat binaarfaili ei ole võimalik ühest süsteemist teise üle kanda. Seetõttu on tark teda portsudest ehitada ning binaarpakki mitte kasutada. Lisaks saab käsuga make kaasa anda mitmeid võtmeid, mis ehitamise algul kirjeldatakse:
# cd /usr/ports/multimedia/mplayer # make You can enable additional compilation optimizations by defining WITH_OPTIMIZED_CFLAGS You can enable GTK GUI by defining WITH_GUI. You can enable DVD support by defining WITH_DVD. You can enable SVGALIB support by defining WITH_SVGALIB. You can enable VORBIS sound support by defining WITH_VORBIS. You can enable XAnim DLL support by defining WITH_XANIM.
Kui sul on x11-toolkits/gtk12 installitud, võiksid vabalt ka GUI peale keerata. Muul juhul pole see pingutust väärt. Kui sul on MPlayer-iga plaanis mängida (võimalik, et CSS-iga kodeeritud) DVD-sid, pead sa peale keerama DVD toe. [2]. Siinkohal mõned mõistlikud DVD-valikud:
# make WITH_DVD=yes WITH_SVGALIB=yes
Selle peatüki kirjutamise aegu ehitab MPlayer HTML-ina kuvatava dokumentatsiooni ning ühe käivitatava faili nimega mplayer. Võimalik on lasta tal ehitada ka kodeerija nimega mencoder, mille abil saab videot rekodeerida. Seda saavutad muudatusega Makefile-is. Võib juhtuda, et antud portsu järgnevates versioonides on see valik vaikimisi sees.
MPlayer-i HTML-dokumentatsioon on väga informatiivne. Kui leiad, et videoriistvara ja liideseid puudutav info on siin peatükis puudulik, sobib MPlayer-i dokumentatsioon väga põhjalikuks lisamaterjalik. Kindlasti peaksid Mplayer-i dokumentatsiooni lugema, kui otsid infot Unixi videotoe kohta.
Iga MPlayer-i kasutaja peab oma home-kataloogi looma alamkataloogi .mplayer. Selle vajaliku alamkataloogi loomiseks võid sisestada järgmised käsud:
% cd /usr/ports/multimedia/mplayer % make install-user
mplayer-i käsureavõtmed on ära toodud manualis. Täpsemaid detaile leiad HTML-dokumentatsioonist. Siin peatükis käsitleme kasutamise tavaolukordi.
Et näiteks faili
testfile.avi esitada
läbi mõne paljudest videoliidestest, anna käsuga kaasa võti -vo.
% mplayer -vo xv testfile.avi
% mplayer -vo sdl testfile.avi
% mplayer -vo x11 testfile.avi
# mplayer -vo dga testfile.avi
# mplayer -vo 'sdl:dga' testfile.avi
On mõttekas proovida kõiki ülaltoodud võimalusi, kuna nende suhteline esitusjõudlus sõltub paljudest asjadest, s.h. oluliselt riistvara iseärasustest.
DVD mängimiseks asenda fail
testfile.avi järgmisega: -dvd <N>
DEVICE, kus <N> on
esitatava tracki number ja
DEVICE on
DVD-ROM-i seadmefail. Näiteks 3. loo mängimiseks seadmest
/dev/dvd kirjuta:
# mplayer -vo dga -dvd 2 /dev/dvd
Faili esituse peatamiseks, pausi või kerimise jaoks jne uuri klahvivajutuste reegleid, mis väljastatakse käsuga mplayer -h, või loe manuali.
On veel mõned tähtsad võtmed:
-fs -zoom, mis lülitab ekraani fullscreen-rezhiimi,
ja -framedrop, mis parandab esitusjõudlust.
Selleks, et mplayeri käsurida liiga pikaks ei veniks, võid luua faili .mplayer/config ning määrata selle kaudu vaikevalikud:
vo=xv fs=yes zoom=yes
Viimaseks: mplayer-it võib kasutada DVD-tracki rippimiseks failiks laiendiga .vob. Selleks, et tõmmata DVD-lt kõvakettale lugu nr.2, kirjuta:
# mplayer -dumpstream -dumpfile out.vob -dvd 2 /dev/dvd
Väljundifail out.vob on formaadis MPEG ning teda saab töödelda teiste rakendustega, mis siin peatükis ära toodud.
Kui otsustad ehitamise ajal paigaldada mencoderi, tea, et see on veel eksperimentaalne komponent. Enne mencoder-i kasutamist võiks end esmalt kurssi viia valikutega, mida kirjeldatakse HTML-dokumentatsioonis. Olemas on ka man-leht, aga ilma HTML dokumentatsioonite pole temast suurt kasu. Kvaliteetdi parandamiseks, formaatide muutmiseks ja madalama bitrate'i saavutamiseks on lugematu arv võimalusi. Mõni neist trikkidest võib muuta esituskvaliteeti. Alljärgnevad näited peaks aitama sul alustada. Esiteks lihtne koopia:
% mencoder input.avi -oac copy -ovc copy -o output.avi
Ebasobivate võtme kombinatsioonide kasutamisel võivad väljundiks olla failid, mida
ei suuda taasesitada isegi
mplayer. Seega, kui tahad lihtsalt faili rippida,
lepi mplayer-i võtmega -dumpfile.
Selleks, et faili input.avi konvertida MPEG3 audio-kodeeringuga MPEG4 kodekisse (vajalik on ka audio/lame), kirjuta:
% mencoder input.avi -oac mp3lame -lameopts br=192 \ -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi
Selle käsuga luuakse väljund, mida suudavad esitada nii mplayer kui ka xine.
input.avi võib asendada
-dvd 1 /dev/dvd-ga
ning selle abil root-õigustes
DVD tracki otse rekodeerida.
Kuna sa esimesel korral oma tulemustega kindlasti rahule ei jää,
on mõistlik DVD-track failiks tõmmata ning seejärel failiga mässata.
Videomängija xine on laiaulatuslik projekt, mille raames lisaks selle, et üritatakse luua kõik-ühes videolahendust, soovitakse toota ka taaskasutatavat baasteeki ning modulaarset käivitatavat faili, mida saaks plug-inidega edasi arendada. Programm on olemas nii paki kui portsuna: multimedia/xine.
xine on veel väga toores ning konarlik, kuid igal juhul on ta teinud korraliku alguse. Praktikas läheb xine'i kasutamiseks vaja kas kiiret protsessorit kiire videokaardiga või XVideo tuge. Tema GUI-d annab kasutada, aga see on natuke kohmakas.
Selle peatüki kirjutamise ajal ei tule xine'iga kaasa ühtegi sisestusmoodulit, mis mängiks CSS-iga kodeeritud DVD-sid. On olemas kolmandate osapoolte loodud versioone, millel on selle formaadi jaoks moodulid sisse ehitatud, kuid neist ükski ei ole FreeBSD portsude kollektsioonis.
Võrreldes MPlayeriga teeb xine kasutaja eest rohkem ära, aga samal ajal võtab kasutajalt ka peenekoelisemad võimalused programmi tööd juhtida. xine töötab kõige suurema jõudlusega XVideo liidestel.
Vaikimisi käivitab xine graafilise kasutajaliidese. Seejärel saab konkreetse faili avamiseks kasutada menüüd:
% xine
Alternatiivina on võimalik ta panna ka otse faili mängima, ilma GUI-d kasutamata:
% xine -g -p mymovie.avi
Programm nimega transcode ei ole mängija, vaid tööriistakomplekt .avi- ja .mpg-failide rekodeerimiseks. transcode-i abil saab videofaile liita ning katkiseid faile parandada - seda käsureavahendite ja stdin/stdout voogude suunamise abil.
Nagu MPlayer, nii on ka transcode väga eksperimentaalne programm, mida tuleb ehitada portsust graphics/transcode. make-käsule pead andma kaasa palju valikuid, näiteks:
# make WITH_LIBMPEG2=yes
Kui sul on plaanis paigaldada multimedia/avifile, lisa make-käsule valik WITH_AVIFILE:
# make WITH_AVIFILE=yes WITH_LIBMPEG2=yes
Siin on kaks näidet transcode'i kasutamise kohta - need annavad muudetud suurusega väljundi. Esimene kodeerib väljundi openDIVX AVI-failiks, teine kodeerib väljundi universaalsemasse MPEG-formaati.
% transcode -i input.vob -x vob -V -Z 320x240 \ -y opendivx -N 0x55 -o output.avi
% transcode -i input.vob -x vob -V -Z 320x240 \ -y mpeg -N 0x55 -o output.tmp % tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1
transcode'i jaoks on olemas man-leht,
aga igasuguste tc*-vahendite (näiteks tcmplex) kohta,
mis samuti paigaldatakse, on dokumentatsiooni vähe.
Samas on siiski võimalik saada kasinaid kasutamisjuhiseid, kui kasutada -h
võtit.
Võrdluseks: transcode töötab märksa aeglasemalt kui mencoder, aga ta on suuteline looma laiemalt kasutatavaid faile. transcode abil loodud MPEG-faile saab mängida näiteks Windows Media® Playeri ja Apple'i Quicktime®'i vanemate versioonidega.
Mitmesugused FreeBSD videotarkvara paketid arenevad kiiresti. On üsna tõenäoline, et lähitulevikus on suur osa siinkirjeldatud probleemidest leidnud lahenduse. Senikaua aga peavad need, kes soovivad FreeBSD A/V-võimalusi enda jaoks täielikult ära kasutada, kraapima teadmisi erinevatest KKK-dest ning õpikutest ja kasutama mitut eri programmi. Selle lõigu mõtteks on annda lugejale viiteid sellisele lisainformatsioonile.
MPlayeri dokumentatsioon on tehniliselt väga informaatiivne. Kõik, kes soovivad Unixi ja video alal korralikke teadmisi omandada, peaksid neid dokumente lugema. MPlayer-i meililistis ollakse vaenulikud igaühe suhtes, kes ei ole võtnud vaevaks dokumentatsiooni lugeda, nii et kui plaanid neile veateateid saata, siis enne: RTFM.
xine HOWTO sisaldab peatükki esitusjõudluse parandamisest, mis kehtib üldiselt kõigi mängijate puhul.
Lõpetuseks väärivad mainimist järgmised paljulubavad programmid, mida lugeja proovida võiks:
Avifile, samuti portsuna: multimedia/avifile.
Ogle, samuti portsuna: multimedia/ogle.
| [1] | Levinud graafikakaart, mis enamasti XFree86 all väga häid tulemusi annab, on nVidia, kuid tema tootjad ei ole XFree86 meeskonnale oma XVideo toe spetsifikatsiooni veel avaldanud. Arvatavasti läheb veel natuke aega, kuni XFree86 hakkab XVideot nende kaartidega täielikult toetama. |
| [2] | Ebaseaduslik DVD esitus on paljudes riikides tõsine õiguserikkumine. Enne, kui DVD-sid vaatama hakkad, loe kohalikke seadusi. |