Tartalomjegyzék
Az MPlayer egy LINUXON működő videolejátszó (fut sok más Unix-on és akár nem-x86 processzorokon is. Lásd a 6-os fejezetet). Le tudja játszani a legtöbb MPEG, VOB, AVI, VIVO, ASF/WMV, QT/MOV, FLI file-t, és ezekhez felsorakoztat jónéhány natív, XAnim, és Win32 codecet. Nézhetsz vele VideoCD-t, SVCD-t, DVD-t, 3ivx-et, és még DivX-et is (ezutóbbihoz egyáltalán nincs szükség az avifile csomagra!). A másik óriási tulajdonsága az MPlayernek a megjelenítési módok széles választéka. Működik X11, Xv, DGA, OpenGL, SVGAlib, fbdev, aalib, DirectFb, sőt SDL-lel vagy GGI-vel is (beleértve ezáltal az SDL/GGI drivereit is), és néhány alacsonyszintű kártyaspecifikus driver (Matrox/3dfx/SiS) is használható! Legtöbbjük támogat szoftveres vagy hardveres skálázást, így a teljesképernyős mód is elérhető. Az MPlayer támogat továbbá hardveres MPEG kártyákkal történő dekódolást/megjelenítést, így például aDVB és DXR3/Hollywood+ kártyákon ! És még nem is szóltam a szép, élsímított, árnyékolt feliratozásról (9 támogatott típus!!!), ami támogat európai/ISO 8859-1,2 (magyar, angol, cseh, stb), cirill és koreai fontokat, valamint OSD-t!
Az MPlayer alapjában véve GPL, de tartalmaz néhány nem-GPL kódot is, amit NEM lehet bináris formában terjeszteni, továbbá tartalmazza az OpenDivX könyvtárat is, melynek speciális licensze van. GPL-re törekszünk.
Az MPlayer binárisok illetve bináris csomagok formájában történő terjesztése jelenleg lehetetlen, jogi és technikai akadályokba ütközik. Részletes információ ezen file, második részében található (angol) (ajánlott olvasmány).
Nem codeceket írtam, csak néhány lejátszót. Sok időt töltöttem azzal is, hogy megtaláljam a megfelelő módszert a hibás file-ok beolvasására (mind MPEG, AVI), valamint a tökéletes A-V szinkronra, akár seekkel is. A lejátszó sziklaszilárdan játszik le hibás MPEG file-okat (hasznos néhány VCD-nél), és lejátszik minden olyan hibás AVI-t, amit a csodás windows media player nem. Még az index chunk nélküli AVI-k is lejátszhatók, sőt az indexet fel is lehet építeni a '-idx' opcióval, így tekerni is lehet bennük! Amint az látszik, a stabilitás és a minőség a legfontosabbak a számomra, és a sebesség is fontos.
Egy éve kezdődött... Nagyon sok lejátszót kipróbáltam Linux alatt (mtv,xmps,dvdview,livid/oms, VideoLAN,xine,xanim,avifile,xmmp), de mindnek ugyanazok a problémái. Többnyire a különleges file-okkal, vagy a hang/kép szinkronnal. Legtöbbjük képtelen mind MPEG1, MPEG2 ÉS AVI (DivX) lejátszásra. Sokuknak gondjuk van a képminőséggel, vagy a sebességgel is. Elhatároztam, hogy (át)írok egyet...
Ez a fejezet arra szolgál hogy segítsen véghezvinni az MPlayer fordítását és konfigurálását. Nem könnyű, de nem is szükségszerűen nehéz. Ha a leírtaktól eltérő viselkedést tapasztalsz, nézd át a dokumentációt és bizonyos hogy megtalálod a választ. A linkek azért vannak hogy alaposan elolvasd ahova mutatnak. Időigényes lesz, de megéri.
Újabb keletű rendszer ajánlott. Linuxon a 2.4.x-es számú kernelek ajánlottak, de 2.4.10-zel és afölött problémák adódhatnak (licenszelés, kernel bugok, stb).
SZÜKSÉGES CSOMAGOK
A következő (és leírt verziójú) csomagokra lesz szükséged ha nem akarsz
problémákba ütközni:
CODECEK
VIDEOKÁRTYÁK
Itt kétféle videokártyát különböztetünk meg. Az egyik fajta (az újabbak) rendelkezik hardveres YUV gyorsítással, a másik pedig nem.
YUV kártyák
Kevés CPU idő felhasználásával tudják megjeleníteni vagy nagyítani a képet. Itt a nagyítás ugyanannyi CPU időt használ mint a síma megjelenítés, tekintve hogy a videokártya végzi. Így a teljes képernyős lejátszás szép és gyors lesz.
YUV gyorsítással nem rendelkező kártyák
Ezeknél vagy szoftveresen kell
nagyítani a képet (ez nagyon lassú), vagy le kell váltani egy kisebb
videomódba hogy pont akkora legyen a kép (pl 352x288). Ha nincs YUV
gyorsításod, az utóbbi módszer a célravezetőbb. Az MPlayerben
ez a -vm
opcióval kapcsolható be. A következő
meghajtókat érdemes kipróbálni :
HANGKÁRTYÁK
EGYÉB FUNKCIÓK
usleep()
-et használ az A/V szinkron javításához, +/- 10ms
pontossággal. Néha ez nem elég pontos. Az új kód a PC-k RTC-jét (Real Time
Clock) használja erre a célra, mivel ezzel sokkal pontosabb, +/- 1ms-os
időzítést lehet elérni. Ez root jogokat követel, vagy egy setuid root
MPlayer binárist (nos, vagy egy kis kernel átirást, ezt azért inkább
ne..). Az új időzítő kód hatékonysága szépen látszik a státuszsorban.
Megj.: SOHA ne installálj setuid MPlayer binárist többfelhasználós
gépre! Ez a legegyszerűbb módja hogy mindenki root jogot szerezzen.Ezután fordítsd le az MPlayer-t:
./configure make make install
Ajánlott átnézni a ./configure kimenetét valamint a
configure.log
file-t, fontos információkat tartalmaznak arra
vonatkozóan hogy mi lesz belefordítva és mi nem. Megnézheted továbbá a
config.h és config.mak file-okat.
Bár nem kötelező, jobb ha felteszed a fontokat is, mert így kapsz OSD-t, és feliratok megjelenítésének képességét. Töltsd le az mp-arial-iso-8859-2.zip-et (és/vagy opcionálisan nyelvi kiegészítőket). Részletekért olvasd el az 1.5-ös fejezetet.
mkdir ~/.mplayer/font cd ~/.mplayer/font unzip mp-arial-iso-8859-2.zip
Már csak egy dolog maradt hátra: másold át a codecs.conf file-t
az etc
könyvtárból (az MPlayer könyvtáron belül) a $HOME/.mplayer/codecs.conf-ba.
Ajánlatos továbbá az example.conf
és a manpage átnézése, hogy
képet kapj az opciókról.
A grafikus felület GTK-t használ (de alapban nem épül rá), így a gtk-t (és a
hozzávaló fejlesztői csomagokat) fel kell installálni. A lefordításhoz meg kell
adni a --enable-gui
opciót a ./configure-nak. Ezután, a GUI mód
bekapcsolásához :
-gui
opciótgui=yes
sort a konfigurációs file-baln -s /usr/local/bin/mplayer /usr/local/bin/gmplayer
,
és a gmplayer
file-t indítsd.
Mivel az MPlayer alapban nem tartalmaz skineket, ezeket külön kell
letöltened. Lásd itt.
Ezeket a szokásos /usr/local/share/mplayer/Skin
vagy $HOME/.mplayer/Skin
könyvtárak egyikébe kell kicsomagolni. Az MPlayer egy 'default'
nevű könyvtárat keres alapállapotban, de a -skin newskin opcióval, vagy
a konfigurációs file-ba a skin=newskin sor beírásával meg lehet adni
ehelyett másik alapban betöltendő skin-t. Ilyenkor a */Skin/newskin
könyvtárban lévő skin kerül betöltésre.
Igen, az MPlayer sokféle fajta feliratot támogat. A beolvasó kód jelenleg 8 fajtát ismer fel. Hogy lásd melyek ezek, nézd meg a subreader.c file-t, a 30. sor körül.
A DVD feliratok használatához olvasd el a DVD fejezetet.
Az MPlayer tartalmaz egy új, MPsub nevű feliratformátumot. A tervezés az én (Gabucino) kezem munkáját dicséri. A legfőbb újítása hogy dinamikusan idő alapú (bár van képkocka alapú módja is). Példa (a DOCS/tech/mpsub.sub file-ból) :
# első szám : ennyi másodpercnyi szünet miután az előző felirat eltünt
# második szám : a jelenlegi feliratot ennyi ideig jeleníti meg
15 3
A long, long time ago...
0 3
in a galaxy far away...
0 3
Naboo was under an attack.
Tehát a fő cél a felirat szerkesztés/időzítés/összeillesztés/szétvágás
megkönnyítése. Valamint, ha - tegyük fel - szerzel egy SSA feliratot,
de a te filmedhez képest rosszul van időzítve, egyszerűen végrehajtasz egy
mplayer semmi.avi -sub forras.ssa -dumpmpsub parancsot. Ekkor egy
dump.mpsub
file jön létre a jelenlegi könyvtárban, a
forrás feliratfile szövegével, de MPsub formátumban. Ezekután
szabadon, röviden, gyorsan időzítheted.
A feliratok egy 'OSD', On Screen Display nevu módszerrel vannak megjelenítve. Ez az OSD használatos az idő, hangerő, stb megjelenítésére is.
OSD és feliratok installálása
Előszöris, egy MPlayer betűtipus csomag kell. Sok módszer van a megszerzésére:
Ezután, tömörítsd ki a file-okat a ~/.mplayer/font/ könyvtárba. Ha most elindítod a lejátszást, egy órát láthatsz a film bal felső sarkában (kikapcsolás az 'o' billentyűvel).
Az OSD-nek 3 állása van: ('o' billentyűvel lehet váltani)
Az alapértelmezést megváltoztathatod az osdlevel=
változóval a
konfigurációs file-ban.
2.3. Video és audio kimeneti eszközök
Ez a fejezet elmagyarázza hogy tudsz nézni/grabbelni egy V4L kompatibilis TV tuner-ről.
Fordítás
configure
autodetektálja hogy megvannak-e a szükséges bttv kernel headerek, valamint
a /dev/video* bejegyzések. Ha igen, kijelöli a TV bemenetet lefordításra
(lásd a kimenetét!).
Tipp : ha az MPlayer ioctl: can't sync
-szerű
üzenetekkel dobálózik, a tunered nem tudja a kért felbontást. Próbáld a
width=640:height=480
opciókkal.
Tipp #2 : rosszak a színek? Ezekszerint a tunered nem tudja a képet
YV12 colorspace-ben grabbelni. Próbáld a YUY2, UYVY vagy végső esetben az
RGB32 colorspace-eket (ezutóbbit -vo sdl
-el). Ezeket a
outfmt=YV12
opcióval lehet megadni, lásd lent.
Rendelkezésre álló opciók
on | TV bemenet használata | ||
driver |
dummy - NULL TV bemenet :) Csak tesztelésre, hamis TV bemenetet
generál. v4l - tényleges képgrabbelés V4L interface-ről (alapértelmezett : /dev/video0 ) |
||
device |
más eszköz megadása a /dev/video0 helyett |
||
input |
itt megadható hogy a tuner mely bemenetéről akarsz grabbelni (pl.: television,
s-video, composite, ...) Indításnál kiírja a lehetőségeket. |
||
freq | megadhatod hogy mely frekvenciára állítsa a tunert (pl. 511.250 ez a Magyar Királyi TV lesz:) | ||
outfmt |
milyen kimeneti formátumban történjen a megjelenítés
(rgb32, rgb24, yv12, uyvy) Ennek és a következő opciónak beállításainak egyezniük kell ! |
||
width | a megjelenítési ablak szélessége, pixelben | ||
height | a megjelenítési ablak magassága, pixelben | ||
norm | PAL, SECAM, NTSC | ||
channel | a tuner megadott csatornára állítása | ||
chanlist |
us-bcast, us-cable, europe-west, europe-east, etc |
Irányítás a billentyűzetről
h or l | előző/következő csatorna | ||
n | normaváltás | ||
b | csatornalista váltása | ||
Példák
Teszt kimenet, AAlib-re :)
mplayer -tv on:driver=dummy:width=640:height=480 -vo aa
Szabványos V4L-ről bemenet
mplayer -tv on:driver=v4l:width=800:height=600:device=/dev/video0:input=television:outfmt=yv12 -vo xv
file | mplayer [opciók] [útvonal//]filenév | ||
VCD | mplayer [opciók] -vcd trackszám /dev/cdrom | ||
DVD | mplayer [opciók] -dvd titleno [/dev/dvd] | ||
net | mplayer [opciók] http://site.com/file.[mpg|avi] | ||
mplayer -vo x11 /mnt/Films/Contact/contact2.mpg mplayer -vcd 2 /dev/cdrom mplayer -afm 3 /mnt/DVDtrailers/alien4.vob mplayer -dvd 1 /dev/dvd mplayer -abs 65536 -delay -0.4 -nobps ~/movies/test.avi
3.1. Irányítás billentyűzetről
<- és -> | hátra/előre seek, 10 másodpercnyi | ||
fel vagy le | hátra/előre seek, 1 percnyi | ||
pgup/pgdown | hátra/előre seek, 10 percnyi | ||
p vagy SPACE | pillanatállj, bármely billentyűre tovább | ||
< or > | előző / következő file a lejátszási listában | ||
q vagy ESC | lejátszás leállítasa, kilépés | ||
+ vagy - | audio késleltetése +/- 0.1 másodperccel | ||
/ vagy * | hangerő csökkentése/növelése | ||
o | OSD funkciók : nincs / seek / seek+idő | ||
m | master/pcm csatorna használata hangerőhöz | ||
z vagy x | feliratok késleltetése +/- 0.1 másodperccel | ||
(a következők csak a DirectShow DivX illetve DivX4 codecekre érvényesek) | |||
1 vagy 2 | kontraszt beállítása | ||
3 vagy 4 | fényerő beállítása | ||
5 vagy 6 | hue állítása | ||
7 vagy 8 | szaturáció állítása | ||
Grafikus felület billentyűi
, és . | előző / következő file | ||
numerikus - és + | hangerő csökkentése / növelése | ||
enter | lejátszás indítása | ||
space | pillanatállj | ||
s | stop | ||
a | about | ||
l | file betöltése | ||
b | skin böngésző | ||
e | equalizer ki/be | ||
p | lejátszási lista ki/be | ||
f | teljesképernyős mód ki/be | ||
m | hang ki/be | ||
TV interface irányítása
h or l | előző/következő csatorna | ||
n | normaváltás | ||
b | csatornalista váltása | ||
Linux Infrared Remote Control - használj egy otthon is könnyen elkészíthető infravörös távirányítót, hogy irányítsd vele a géped! Részletek a www.lirc.org címen.
Ha felinstalláltad a lirc csomagot, így fordítsd az MPlayer-t : ./configure --enable-lirc
Ha sikerült, az MPlayer ezt fogja kiírni induláskor: LIRC init was successful. Ha hibát talál, azt is kiírja. Ha semmi LIRC-szerűt nem mond, akkor nincs belefordítva.
A megadandó programnév - mily' csoda - mplayer_lirc. A következő parancsokat érti:
PAUSE | lejátszás megállítása. Bármely másik billentyű újraindítja. | ||
QUIT | kilépés | ||
RWND | 10 másodperccel vissza | ||
FRWND | 60 másodperccel vissza | ||
FWD | 10 másodperccel előre | ||
FFWD | 60 másodperccel előre | ||
INCVOL | hangerő növelése 1 százalékkal | ||
DECVOL | hangerő csökkentése 1 százalékkal | ||
MASTER | 'master' mixer csatorna használata | ||
PCM | 'pcm' mixer csatorna használata | ||
Ne felejtsd bekapcsolni a repeat flag-et a RWND/FWD-hez a .lircrc-ben. Itt egy példa az enyémből:
begin remote = CU-SX070 prog = mplayer_lirc button = Tape_Play repeat = 1 config = FFWD end begin remote = CU-SX070 prog = mplayer_lirc button = Tape_Stop config = QUIT end
Ha nem felel meg a lirc-config file eredeti helye (~/.lircrc), használd a -lircconf [file-név] kapcsolót.
3.3. Lejátszás hálózatról, vagy pipe-n keresztül
Az MPlayer a HTTP protokollal tud lejátszani hálózaton keresztül. A konfigurálása egyszerű, csak fordítsd újra az MPlayer-t így :
./configure --enable-streaming
Nem tud viszont lejátszani MMS protokollal ASF file-okat hálózatról, csak HTTP-vel.
MPlayer tud a standard bemenetről (NEM named pipe-okról) beolvasni. Itt egy példa az FTP-n keresztüli lejátszásra ennek segítségével :
wget ftp://micorsops.com/something.avi -O - | mplayer -
6. Különböző operációs rendszerek
A csomag felépítéséhez töltsd le a cvs verziót vagy .tgz-t, tömörítsd ki, majd lépj bele :
cd main fakeroot debian/rules binary
(... mplayer detektálja a hardvert/szoftvert, lefordul, és..)
dpkg-deb: building package `mplayer' in `../mplayer_0.18-1_i386.deb'.
Most root-ként add ki a következő parancsot :
dpkg -i ../mplayer_0.18-1_i386.deb
Valahogy így kell kinéznie:
eyck@incubus:/src/main$ sudo dpkg -i ../mplayer_0.18-1_i386.deb Password: (Reading database ... 26946 files and directories currently installed.) Preparing to replace mplayer 0.17a-1 (using ../mplayer_0.18-1_i386.deb) Unpacking replacement mplayer ... Setting up mplayer (0.18-1) ...
A fordításhoz szükséged lesz GNU make-re (gmake, /usr/ports/devel/gmake), natív BSD make nem jó.
Az MPlayer futtatásához fordítsd újra a kernelt "options USER_LDT"-vel, kivéve ha -CURRENT-et használsz, ahol ez az alapállapot). Ha van SSE-t támogató CPU-d, használd az "options CPU_ENABLE_SSE"-t is. FreeBSD-STABLE kell, vagy kernel patch-ek.
Ha az MPlayer azt mondja hogy "CD-ROM Device '/dev/cdrom' not found!",
csinálj egy linket : ln -s /dev/(meghajtó) /dev/cdrom
Egyelőre nincs DVD támogatás FreeBSD-hez.
Az AVI file-ok lejátszása legjobban Solarix x86-on működik, mert itt megteheted hogy win32-es codec-eket használsz, az x86-os platform miatt. Solaris SPARC-on jónéhány AVI file lesz ami nem fog működni, mert csak win32-es codec van hozzá. DivX/OpenDivX filmek menni fognak, ha libavcodec-et használsz.
Az MPlayer kihasználja az UltraSPARC gépek VIS utasításkészletét (az MMX sparc-os megfelelője), bár jelenleg csak a libmpeg2-ben, libavcodec-ben, és a libvo-ban, mp3lib-ben nem. Egy 400Mhz-es CPU elég hogy megnézz egy VOB file-t. Szükséged lesz egy felinstallált mLib-re is.
A fordításhoz GNU make-re lesz szükséged (gmake, /opt/sfw/gmake), natív Solaris make nem jo. Egy tipikus hiba ha mégis azzal próbálkozol :
% /usr/ccs/bin/make make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen
Solaris SPARC-on GNU C/C++ fordító is kell; az nem számít ha assemblerrel vagy nélküle van.
Solaris x86-on kell a GNU assembler is és a GNU C/C++ fordító is,
aminek támogatnia kell a GNU assemblert! Az MPlayer igencsak támaszkodik
az MMX, SSE és 3DNOW! utasításokra, amiket a Solaris standard assemblere
(/usr/ccs/bin/as
) nem támogat.
A configure script megpróbálja megkeresni hogy a "gcc" parancsod melyik assemblert indítja (ha nem sikerül neki, használd a "--as=/ahova/installáltad/gnu-as" parancsot).
GNU assembler nélküli GCC ilyet ír ki Solaris x86-on :
% configure ... Checking assembler (/usr/ccs/bin/as) ... , failed Please upgrade(downgrade) binutils to 2.10.1...
(Megoldás: "--with-as=gas"-al fordított GCC használata)
Tipikus hiba GNU as nem-használatára:
% gmake ... gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math -fomit-frame-pointer -I/usr/local/include -o mplayer.o mplayer.c Assembler: mplayer.c "(stdin)", line 3567 : Illegal mnemonic "(stdin)", line 3567 : Syntax error ... more "Illegal mnemonic" and "Syntax error" errors ...
DVD támogatáshoz patchelt libcss szükséges. Patch : http://www.tools.de/solaris/mplayer/
2 hiba miatt nem tudsz megbízhatóan DVD-t lejátszani Solaris 8 x86-on, ha annak kapacitása nagyobb mint 4 GB :
On Solaris with an UltraSPARC CPU, you can get some extra speed by using the CPU's VIS instructions for certain time consuming operations. VIS acceleration can be used in MPlayer by calling functions in Sun's mediaLib.
VIS accelerated operations from mediaLib are used for mpeg2 video decoding and for color space conversion in the video output drivers.
Az MPlayer állítólag lefordul StrongARM-on. A következő opciókat használd :
./configure --target=arm-linux --disable-css --with-x11libdir=/usr/arm/lib --with-x11incdir=/usr/arm/lib --disable-gcc-checking
6.5. Silicon Graphics Indigo / IRIX
Azt mondják műxik. Használd az sgi ao meghajtót és jók leszünk. Közelebbi információ valakinél?
Működik. Csak -vo x11
kimenete van ami lassabb mintha Linuxon
lenne, tekintve hogy a QNX csak emulálja az X-et, és azt is lassan.
B függelék - Levelezési listák
Jónéhány MPlayer lista van. A következő címeken lehet feliratkozni:
Ez az MPlayer fejlesztői lista! Témák: interface/API változások, új library-k, optimalizáció, ./configure, és IDE kell küldeni patch-eket. NE küldj ide bugreportot, kérdést! Ne növeljük a lista forgalmát.
Matrox-szal kapcsolatos kérdések helye,
A DVB nevű hardveres dekóderkártyával kapcsolatos kérdések helye.
CVS-beli változásokról kérdéseket ide küldj. (ha nem érted, mire kell egy változtatás, vagy jobb fixet tudsz) Bizonyosodj meg róla, hogy a kívánt fejlesztő is olvassa a listát!
Megj.: a fenti listák nyelve ANGOL, kivéve ahol más van feltüntetve. Más nyelven ne írj!
Megj.: a kereshető archivum itt található.
C függelék - Hogyan jelents be hibát