Szerzői jog © 2000-2022 MPlayer team
Licensz
Az MPlayer egy szabad szoftver; terjesztheted és/vagy módosíthatod a GNU General Public License 2-es verziója szerint, ahogy azt a Free Software Foundation közzétette.
Az MPlayert abban a hiszemben terjesztjük, hogy hasznos lesz, de MINDENFÉLE GARANCIA NÉLKÜL; sőt, a bennefoglalt ELADHATÓSÁGI és ADOTT CÉLRA MEGFELELŐSÉGI garanciát sem adunk. Lásd a GNU General Public License-et a részletekért.
Az Mplayerrel meg kellett kapnod a GNU General Public License egy másolatát is; ha nem, írj a Free Software Foundation, Inc.-nek, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
libcaca
- Színes ASCII Art függvénykönyvtár
libavcodec
codec családdalXvid
codec-kalx264
codec-kelVideo For Windows
codec családdal
Ha ez az első találkozásod az MPlayer-rel, olvass el mindent innentől egészen a Telepítés fejezet végéig, közben kövesed a linkeket. Ha van kérdésed, keress rá a tartalomjegyzékben, olvasd el a FAQ-t, vagy greppelj a file-okban. A legtöbb kérdésre fogsz választ találni, amire pedig nem, az nagy valószínűséggel már megválaszolásra került valamelyik levelezési listán. Nézd meg az archivumot, mert rengeteg értékes információt tartalmaz.
Az MPlayer egy Linuxon működő videolejátszó (fut számos más Unix-on és nem-x86 processzorokon is, lásd Ports). Le tudja játszani a legtöbb MPEG, VOB, AVI, Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, és Matroska file-t, és ezekhez felsorakoztat jónéhány natív, XAnim, RealPlayer és Win32 DLL codecet. Nézhetsz vele Video CD-t, SVCD-t, DVD-t, 3ivx, RealMedia, Sorenson, Theora és MPEG-4 (DivX) filmet is. Az MPlayer másik nagy előnye a megjelenítési módok széles választékában rejlik. Működik X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca, DirectFB, sőt SDL-lel vagy GGI-vel is (beleértve ezáltal az SDL/GGI drivereit is), és néhány alacsony szintű kártyaspecifikus vezérlő (Matrox, 3dfx, Radeon, Mach64, Permedia3) is használható! Legtöbbjük támogat szoftveres vagy hardveres nagyítá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 a DVB és DXR3/Hollywood+ kártyákon! És még nem is szóltam a szép, élsímított, árnyékolt feliratozásról (14 támogatott típus!), ami támogat európai/ISO-88592-1,2 (magyar, angol, cseh, stb), cirill és koreai fontokat, valamint az OSD-ről!
A lejátszó sziklaszilárdan játszik le hibás MPEG file-okat (hasznos néhány VCD-nél), és 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 ideiglenesen fel is lehet építeni az -idx opcióval (vagy véglegesen a MEncoderrel), így tekerni is lehet bennük! Amint az látszik, a stabilitás és a minőség a legfontosabb szempontok, de a sebesség terén sem szenved hátrányt. Valamint rendelkezik egy szűrő rendszerrel is a videó-audió szerkesztéshez.
A MEncoder (MPlayer's Movie
Encoder) egy egyszerű film kódoló, az MPlayer által
ismert formátumok
(AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA)
más MPlayer által lejátszható formátumokba való
átalakításához (lásd lejjebb).
Sokféle codec-kel tud kódolni, például MPEG-4-gyel (DivX4)
(egy vagy két menetes), a libavcodec
-et
alkotó codec-ekkel, audiót tekintve pedig PCM/MP3/VBR MP3 a választék.
Az MEncoder előnyei
Az MPlayer által támogatott összes formátumból lehet kódolni
Az FFmpeg libavcodec
által támogatott összes formátumba tud tömöríteni
Videó grabbelés V4L kompatibilis TV tunerekről
Helyes index-szel rendelkező AVI fájlok kódolása/multiplexelése
Opcionálisan külső audio stream használata
1, 2 vagy 3 menetes kódolás
VBR MP3 audió
a VBR-es MP3-akat nem minden Windows rendszerre elérhető lejátszó kezeli helyesen!
PCM audió
Stream másolás
Bemeneti file A/V szinkronizálása (pts-alapú, az -mc 0 opcióval kikapcsolható)
fps javítás az -ofps opcióval (hasznos ha 30000/1001 fps-es VOB-ot kódolsz 24000/1001 fps-es AVI-ba)
Roppant jó szűrő rendszer használata (crop, expand, flip, postprocess, rotate, scale, RGB/YUV konverzió)
A kimeneti fájlba bele tudja kódolni mind a DVD/VOBsub, mind a szöveges feliratokat
DVD feliratok külső VOBsub fájlba történő rippelése
Az MPlayer és MEncoder a GNU General Public License v2 értelmében terjeszthető.
Egy rövid telepítési leírást találsz a README fájlban. Kérlek először azt olvasd el, és utána gyere vissza ide, hogy megtudd a részleteket!
Ebben a fejezetben végigvezetünk az MPlayer fordításának és beállításának menetén. Nem egyszerű, de nem is észveszejtően nehéz. Ha ezen leírástól eltérő működést tapasztalsz, kérlek nézd végig ezt a dokumentációt és megtalálod a válaszokat.
POSIX rendszer - Egy POSIX-kompatibilis shell-re és POSIX-kompatibilis rendszer eszközökre, pl. grep, sed, awk, stb. lesz szükséged a path-odban.
GNU make 3.81 vagy újabb
binutils - GNU binutils 2.11 vagy újabb biztosan működik.
fordító - Mi leginkább gcc-t használunk, a javasolt verziók x86-on a 2.95 és 3.4+. PowerPC-n használj 4.x+-ot. icc 10.1+ is működik.
Xorg/XFree86 - a javasolt verzió a 4.3 vagy későbbi. Győződj meg róla, hogy a fejlesztői csomagok is telepítve vannak, különben nem fog működni. Nem feltétlenül van szükséged az X-re, néhány videó kimeneti vezérlő működik nélküle is.
FreeType 2.0.9 vagy későbbi szükséges, valamint egy betűtípus is az OSD-hez és a feliratokhoz.
ALSA - választható, az ALSA audió kimenet támogatásához. Legalább 0.9.0rc4 szükséges.
libjpeg - választható JPEG kódoló/dekódoló, a JPEG videó kimeneti vezérlőhöz szükséges
libpng - választható (M)PNG dekóder, a PNG videó kimeneti vezérlőhöz szükséges
directfb - választható, 0.9.22 vagy későbbi szükséges a directfb/dfbmga videó kimeneti vezérlőkhöz
lame - 3.90 vagy későbbi javasolt, szükséges MP3 audió MEncoderrel történő kódolásához.
zlib - javasolt, sok codec használja.
LIVE555 Streaming Media - választható, szükséges néhány RTSP/RTP folyamokhoz
cdparanoia - választható, szükséges a CDDA támogatáshoz
libxmms - választható, XMMS input plugin támogatáshoz kell. Legalább 1.2.7-es szükséges.
libsmb - választható, smb hálózat támogatásához kell.
libmad - választható, gyors csak egészszámos MP3 dekódolás FPU nélküli platformokon
Döntsd el, hogy szükséged van-e GUI-ra. Ha igen, akkor nézd meg a GUI fejezetet a fordítás előtt!
Ha telepíteni akarod a MEncodert is (a nagyszerű, mindent tudó kódolónkat), nézd meg a MEncoder részt!
Ha V4L kompatibilis TV tuner kártyád van, és nézni/grabbelni vagy kódolni szeretnél filmeket az MPlayerrel, olvasd el a TV bemenet fejezetet.
Ha van V4L kompatibilis rádió tuner kártyád és MPlayerrel szeretnél hallgatni vagy lementeni, olvasd el a rádió részt.
Roppant jól sikerült OSD Menü támogatás vár használatra. Lásd az OSD menü fejezetet!
Mindezek után fordítsd le az MPlayert:
./configure make make install
Ezek után az MPlayer máris használatra kész. Ellenőrizd le, hogy van-e codecs.conf nevű fájlod a home könyvtáradban (~/.mplayer/codecs.conf), melyet régebbi MPlayer verziók hagyhattak ott. Ha van, töröld le!
A Debian használók .deb csomagot is készíthetnek maguknak, roppant egyszerűen. Csak futtasd a
fakeroot debian/rules binary
parancsot az MPlayer főkönyvtárában. Lásd a Debian csomagolás fejezetet bővebb információkért!
Mindig nézd végig a ./configure kimenetét, és a config.log fájl, melyek információkat tartalmaznak arról, hogy mi is lesz lefordítva és mi nem. Szintén tanácsos megnézni a config.h és config.mak fájlokat. Ha van olyan telepített függvénykönyvtárad, amit a ./configure mégsem talált meg, ellenőrizd, hogy a megfelelő fejléc fájlok (általában a -dev csomagokban vannak) is elérhetőek-e, és egyező verziójúak. A config.log fájl legtöbbször megmondja, hogy mi hiányzik.
Bár nem kötelező, de a betűtípusoknak telepítve kell lenniük, hogy az OSD és a feliratozás működjön. A javasolt eljárás, hogy telepíted a TTF betűkészletet, majd megmondod az MPlayernek, hogy használja azt. Lásd a Feliratok és az OSD részt bővebben.
A GUI-hoz GTK 1.2.x vagy GTK 2.0 kell (nem teljesen GTK-s, de a panelek igen),
így telepített GTK
(és a fejlesztői
cuccok, amik általában gtk-dev
) szükséges.
A ./configure-nak az --enable-gui kapcsoló
megadásával írhatod elő, hogy GUI-t is készítsen. Ezután ha a GUI-s változatot
akarod futtatni, akkor a gmplayer binárist kell elindítanod.
Mivel az MPlayer nem rendelkezik beépített skin-nel,
le kell töltened egyet, ha a GUI-t használni akarod. Lásd a letöltési oldalt.
Ajánlott egy rendszerszinten elérhető könyvtárba tenni ($PREFIX/share/mplayer/skins), vagy a $HOME/.mplayer/skins-be.
Az MPlayer ezekben a könyvtárakban
keres egy default nevű alkönyvtárat, amelyben
az alapértelmezett skin van. Megadhatsz más könyvtárat is a
-skin newskin
kapcsolóval vagy a
skin=newskin
sorral a konfigurációs fájlban, és ekkor a
*/skins/newskin könyvtárban lévő skin lesz
használatban.
Meg kell mondanod az MPlayernek, hogy melyik betűtípust szeretnéd használni az OSD-hez és a feliratokhoz. Bármilyen TrueType betűtípus vagy speciális bittérképes betű működni fog. Azonban ajánlott a TrueType használata, mivel sokkal jobban néz ki, megfelelően méretezhető a film méretéhez és jobban együttműködik a különböző kódolásokkal.
A TrueType betűtípusok kétféle módon használhatóak. Az egyik a -font opcióval egy TrueType betűtípus fájl megadása a parancssorban. Ez az opció jó eséllyel pályázik arra, hogy bekerüljön a konfigurációs fájlodba (lásd a man oldalt a részletekért). A másik, hogy készítesz egy subfont.ttf nevű symlink-et a választott betűtípus fájlhoz. Vagy
ln -s /eleresi/ut/pelda_betu.ttf
~/.mplayer/subfont.ttf
külön minden egyes felhasználóhoz, vagy az egész rendszerre vonatkozóan:
ln -s /eleresi/ut/pelda_betu.ttf
$PREFIX/share/mplayer/subfont.ttf
Ha az MPlayer fontconfig
támogatással lett lefordítva, a fenti módszerek nem fognak működni,
helyettük a -font egy fontconfig
betűtípus nevet vár és alapértelmezetté teszi a sans-serif betűt.
Például:
mplayer -font'Bitstream Vera Sans'
anime.mkv
A fontconfig
által ismert betűtípusok listáját az
fc-list paranccsal nézheted meg.
Ha valamilyen okból kifolyólag bittérképes betűtípusokat szeretnél vagy kell használnod, tölts le egy készletet a weboldalunkról. Választhatsz a különböző ISO betűk és néhány felhasználói készlet közül, különböző kódolásokban.
Csomagold ki a letöltött fájlokat a ~/.mplayer vagy a $PREFIX/share/mplayer könyvtárba. Ezután nevezd át vagy készíts egy symlink-et valamelyik kicsomagolt könyvtárra font néven, például:
ln -s ~/.mplayer/arial-24
~/.mplayer/font
ln -s $PREFIX/share/mplayer/arial-24
$PREFIX/share/mplayer/font
A betűtípusoknak rendelkezniük kell egy megfelelő font.desc fájllal, ami leképezi a Unicode betűpozíciókat az aktuális felirat szöveg kódlapjára. A másik megoldás UTF-8 kódolású feliratok használata és a -utf8 kapcsoló megadása vagy add meg a felirat fájl neveként ugyan azt a nevet, mint a videó fájlé, de .utf kiterjesztéssel és tedd a videóval azonos könyvtárba.
Az MPlayernek az OSD Menüje teljesen igényre szabható.
a Tulajdonságok menü még NINCS KIFEJLESZTVE!
Telepítés
fordítsd le az MPlayert a ./configure-nak az --enable-menu kapcsoló megadásával
bizonyosodj meg róla, hogy van telepített OSD betűkészleted
másold át az etc/menu.conf fájlt a .mplayer könyvtárba
másold át az etc/input.conf fájlt a .mplayer könyvtárba, vagy egy rendszerszinten elérhető MPlayer konfigurációs könyvtárba (alapértelmezett: /usr/local/etc/mplayer)
ellenőrizd le és írd át az input.conf fájlt a menüben történő mozgáshoz használt billentyűk engedélyezéséhez (ott le van írva).
indítsd el az MPlayert az alábbi példa alapján:
mplayer -menu file.avi
nyomd meg valamelyik menü gombot, amit megadtál
Az Xvid egy szabad szoftveres MPEG-4
ASP kompatibilis videó codec. Jegyezd meg, hogy az Xvid nem szükséges az Xvid-es
videók dekódolásához. A libavcodec
az
alapértelmezett, mivel jobb a sebessége.
Az Xvid
telepítése
Mint a legtöbb nyílt forráskódú program, ez is két formában érhető el:
hivatalos kiadás
és a CVS verzió.
A CVS verzió általában elég stabil a használathoz, mivel legtöbbször csak
a kiadásokban benne lévő hibák javításait tartalmazza.
Itt van lépésről lépésre, hogy mit kell tenned, ha az Xvid
CVS-t használni akarod a MEncoderrel:
cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login
cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore
cd xvidcore/build/generic
./bootstrap.sh && ./configure
Meg kell adnod pár kapcsolót (tanulmányozd a ./configure --help kimenetét).
make && make install
Fordítsd újra az MPlayert.
Az x264
egy függvénykönyvtár a H.264 videó létrehozásához.
Az MPlayer forrás mindig frissül, ha
egy x264
API változás
jelenik meg, így javasolt az MPlayer
Subversion verziójának használata.
Ha van feltelepítve GIT kliensed, a legújabb x264 forrást letöltheted ezzel a paranccsal:
git clone git://git.videolan.org/x264.git
Majd fordíts és telepíts a szabványos módon:
./configure && make && make install
Ezután futtasd újra a ./configure-t, hogy
az MPlayerbe belekerüljön az
x264
támogatás.
Az MPlayer használni tudja az OpenCORE AMR függvénykönyvtárakat a FFmpeg-en keresztül. Töltsd le a könyvtárakat az AMR-NB-hez és az AMR-WB-hez az opencore-amr projectből és telepítsd őket az oldalon lévő utasítások szerint.
Az MPlayer tudja használni az XMMS bemeneti plugin-jait több fájlformátum lejátszásához. Van plugin SNES játék hangokhoz, SID hangokhoz (Commodore 64-ről), több Amiga formátumhoz, .xm, .it, VQF, Musepack, Bonk és még számos máshoz. Megtalálhatod őket az XMMS bemenetu plugin oldalán.
Ehhez a tulajdonsághoz rendelkezden kell az XMMS-sel, az MPlayert pedig ezzel kell fordítanod: ./configure --enable-xmms.
Három fajta időzítési eljárás van az MPlayerben.
A régi módszer használatához nem kell
tenned semmit. Ez az usleep()
függvényt használja
az A/V szinkronizáláshoz, +/- 10ms-es pontossággal. Van amikor ennél is
pontosabb szinkronizálás szükséges.
Az új időzítő kód az RTC-t (RealTime Clock)
használja, mert ennek pontos, 1 ms-es időzítői vannak. A -rtc
kapcsoló engedélyezi, de megfelelően beállított kernel kell hozzá.
Ha 2.4.19pre8 vagy későbbi kernelt használsz, beállíthatod a maximum
RTC frekvenciát a sima felhasználóknak a /proc
fájl rendszer segítségével. Használd az alábbi két parancs
valamelyikét az RTC normál felhasználók számára történő engedélyezéséhez:
echo 1024 > /proc/sys/dev/rtc/max-user-freq
sysctl dev/rtc/max-user-freq=1024
Ezt a beállítást állandósíthatod az utóbbi /etc/sysctl.conf fájba történő írásával.
Az új időzítő eredményét a státusz sorban láthatod. Néhány sebesség-léptetéses (speedstep) CPU-val rendelkező notebook BIOS-ának energia takarékossági funkciói rosszul működnek együtt az RTC-vel. Elromolhat az audió és a videó szinkronizációja. Úgy tűnik, ha bedugod a hálózati csatlakozót, mielőtt bekapcsolnád a notebookot, az segít. Néhány hardver összeállításban (ALi1541-es alaplapokkal használt nem DMA-s DVD meghajtók esetén erősítették meg) az RTC időzítő használata kihagyásokat okoz lejátszás közben. Ebben az esetben a harmadik módszer használata javasolt.
A harmadik időzítő kód a -softsleep kapcsolóval kapcsolható be. Az RTC hatékonyságával rendelkezik, de nem használja azt. Másrészről viszont jobban eszi a procit.
Az MPlayer egy komplex lejátszási sort használ. A parancssorban megadott opciók minden fájlra/URL-re vagy, a helyüktől függően csak bizonyosokra vonatkoznak. Például az
mplayer -vfm ffmpeg movie1.avi movie2.avi
FFmpeg dekódolót használ mindkét fájlhoz, azonban az
mplayer -vfm ffmpegmovie1.avi
movie2.avi
-vfm dmo
a második fájlt a DMO dekóderrel jeleníti meg.
A fájlneveket/URL-eket csoportosíthatod a {
és
}
segítségével. Ez főleg a -loop
kapcsolóval együtt hasznos:
mplayer { 1.avi -loop 2 2.avi } -loop 3
A fenti parancs a fájlokat ebben a sorrendben játsza le: 1, 1, 2, 1, 1, 2, 1, 1, 2.
Egy fájl lejátszása:
mplayer [kapcsolók
] [elérési út
/]fájlnév
Másik módszer egy fájl lejátszásához:
mplayer [kapcsolók
]file:///uri-escaped-path
Több fájl lejátszása:
mplayer [alapértelmezett kapcsolók
] [elérési út
/]fájlnév1
[options for filename1
]fájlnév2
[kapcsolók a fájlnév2-höz
] ...
VCD lejátszása:
mplayer [kapcsolók
] vcd://sávszám
[-cdrom-device/dev/cdrom
]
DVD lejátszása:
mplayer [kapcsolók
] dvd://rész szám
[-dvd-device/dev/dvd
]
Lejátszás a WWW-ről:
mplayer [kapcsolók
] http://site.com/file.asf
(lejátszási listák is megadhatóak)
Lejátszás RTSP-ről:
mplayer [options
] rtsp://pelda.szerver.com/streamNev
Példák:
mplayer -vo x11/mnt/Films/Contact/contact2.mpg
mplayer vcd://2
-cdrom-device/dev/hdc
mplayer -afm 3/mnt/DVDtrailers/alien4.vob
mplayer dvd://1
-dvd-device/dev/hdc
mplayer -abs 65536 -delay -0.4 -nobps~/movies/test.avi
Az MPlayer feliratokat is meg tud jeleníteni a filmekkel együtt. Jelenleg a következő formátumok támogatottak:
VOBsub
OGM
CC (closed caption)
MicroDVD
SubRip
SubViewer
Sami
VPlayer
RT
SSA
PJS (Phoenix Japanimation Society)
MPsub
AQTitle
Az MPlayer az előzőleg felsorolt felirat formátumokat (az első három kivételével) át is tudja konvertálni az alábbi formátumokba, a megadott kapcsolókkal:
MPsub: -dumpmpsub
SubRip: -dumpsrtsub
MicroDVD: -dumpmicrodvdsub
JACOsub: -dumpjacosub
Sami: -dumpsami
A MEncoder el tudja menteni a DVD feliratokat VOBsub formában.
A parancssori kapcsolók eléggé különböznek az az egyes formátumoknál:
VOBsub feliratok.
A VOBsub feliratok egy nagy (néhány megabájtos) .SUB
fájlból és opcionálisan egy .IDX és/vagy
.IFO fájlból állnak. Ha olyan fájlaid vannak, hogy
sample.sub
,
sample.ifo
(opcionális),
sample.idx
- meg kell adnod az
MPlayernek a -vobsub sample
[-vobsubid id
] kapcsolót
(teljes elérési út is megadható). A -vobsubid kapcsoló olyan,
mint a -sid a DVD-knél, segítségével felirat sávok (nyelvek)
közül választhatsz. Abban az esetben, ha elfelejted a -vobsubid
kapcsolót, az MPlayer a -slang
kapcsolóval megadott nyelveket próbálja használni, és a
langidx
-re ugrik az .IDX fájlban,
hogy beállítsa a felirat nyelvét. Ha ez nem sikerül, nem lesz felirat.
Egyéb feliratok.
A többi formátum egy sima szöveges fájlból áll, mely tartalmazza az időzítést,
a pozícionálást és a szöveget. Használata: ha van egy olyan fájlod, mint pl.
sample.txt
,
akkor a -sub sample.txt
kapcsolóval
tudod megadni (teljes elérési út is megadható).
Felirat időzítés és pozícionálás beállítása:
mp
Késlelteti a feliratot mp
másodperccel.
Lehet negatív is. Az érték a film időpozíciójának számlálójához adódik hozzá.
RÁTA
Megadhatod a felirat fájl képkocka/mp rátáját (lebegőpontos szám).
0-100
A felirat pozícióját adhatod meg.
Ha MicroDVD felirat fájl használa közben egyre növekvő csúszást tapasztalsz a film és a felirat között, akkor a legvalószínűbb, hogy a film és a felirat frame rátája különböző. Jegyezd meg, hogy a MicroDVD felirat formátum abszolút képkocka számokat használ az időzítéshez, és nincs benne fps információ, emiatt a -subfps kapcsoló használata javasolt ezzel a formátummal. Ha végleg meg akarod oldani ezt a problémát, kézzel kell átkonvertálnod a felirat fájl frame rátáját. Az MPlayer el tudja végezni ezt a konverziót neked:
mplayer -dumpmicrodvdsub -fpssubtitles_fps
-subfpsavi_fps
\ -subsubtitle_filename
dummy.avi
A DVD feliratokról a DVD fejezetben olvashatsz bővebben.
Az MPlayer teljesen konfigurálható, parancsvezérelt, az irányítási rétegének a segítségével az MPlayert vezérelheted billentyűzettel, egérrel, joystickkal vagy távirányítóval (LIRC használatával). Olvasd el a man oldalon a használható billentyűk listáját.
Az MPlayer engedélyezi bármely billentyűhöz/gombhoz
bármilyen MPlayer parancs hozzárendelését egy egyszerű
konfigurációs fájl segítségével. A szintaxis egy egyszerű billentyű névből
és az azt követő parancsból áll. A konfigurációs fájl alapértelmezett helye
a $HOME/.mplayer/input.conf de ez megváltoztatható
a -input conf
kapcsoló
segítségével (a relatív elérési útvonalak a $HOME/.mplayer-hez
képest relatívak).
Az összes támogatott billentyű nevének listáját az mplayer -input keylist parancs írja ki, az elérhető parancsok listáját pedig az mplayer -input cmdlist paranccsal kapod meg.
3.1. példa - Egy példa bemeneti vezérlő fájl
## ## MPlayer input vezérlő fájl ## RIGHT seek +10 LEFT seek -10 - audio_delay 0.100 + audio_delay -0.100 q quit > pt_step 1 < pt_step -1 ENTER pt_step 1 1
Linux Infrared Remote Control (Linux Infravörös Távoli Irányítás) - végy egy egyszerűen összerakható, otthon barkácsolt IR-vevőt, egy (majdnem) tetszés szerinti távirányítót és irányítsd a Linux-os gépedet vele! Bővebben a LIRC weboldalon olvashatsz erről.
Ha feltelepítetted a LIRC csomagot, a configure automatikusan
megtalálja. Ha minden jól megy, az MPlayer egy ilyen
üzenetet ír ki indításkor: "Setting up lirc support...
".
Ha valami hiba történt, tájékoztat róla. Ha semmit sem mond a LIRC-ről,
akkor a támogatása nincs beforgatva. Ennyi :-)
Az MPlayer alkalmazás neve - minő meglepő -
mplayer. Bármelyik mplayer parancsot használhatod
és egyszerre több parancsot is megadhatsz egy lépésben, ha \n
karakterrel választod el őket. Ne felejtsd el engedélyezni az ismétlés jelzőt
(repeat flag) a .lircrc fájlban, ha van értelme
(keresés, hangerő, stb.). Itt egy kivonat egy .lircrc
fájlból:
begin button = VOLUME_PLUS prog = mplayer config = volume 1 repeat = 1 end begin button = VOLUME_MINUS prog = mplayer config = volume -1 repeat = 1 end begin button = CD_PLAY prog = mplayer config = pause end begin button = CD_STOP prog = mplayer config = seek 0 1\npause end
Ha nem tetszik a lirc-config fájl alapértelmezett elérési útvonala
(~/.lircrc), használd a -lircconf
fájlnév
kapcsolót egy másik fájl
megadásához.
A szolga mód segítségével egyszerű frontend-eket készíthetsz az MPlayerhez. Ha a -slave kapcsolóval futtatod az MPlayert, beolvassa az új sor karakterrel (\n) elválasztott parancsokat a standard bemenetről (stdin). A parancsok a slave.txt fájlban vannak leírva.
Az MPlayer HTTP, FTP, MMS vagy RTSP/RTP protokoll segítségével le tud játszani fájlokat hálózatról is.
A lejátszáshoz egyszerűen csak be kell írni az URL-t a parancssorba.
Az MPlayer figyeli a
http_proxy
környezeti változót is, és használja a
proxy-t, ha van. Azonban így is megadhatod a proxy-t:
mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf
Az MPlayer tud olvasni a standard bemenetről (stdin) is (nem nevesített pipe). Ezt például FTP-ről történő lejátszásnál tudod használni:
wget ftp://micorsops.com/something.avi
-O - | mplayer -
Tanácsos megadni a -cache kapcsolót, ha hálózatról játszol le:
wget ftp://micorsops.com/something.avi
-O - | mplayer -cache 8192 -
Ha már sikerült az MPlayerrel lejátszani a kedvenc internetes stream-edet, a -dumpstream kapcsoló segítségével el is tudod menteni a folyamot egy fájlba. Például:
mplayerhttp://217.71.208.37:8006
-dumpstream -dumpfilestream.asf
Ez el fogja menteni a
http://217.71.208.37:8006
szerveren stream-elt
tartalmat a stream.asf
fájlba.
Ez működik az MPlayer által támogatott
összes protokollal, mint MMS, RTSP és így tovább.
A használható kapcsolók teljes listájáért olvasd el a man oldalt. A szintaxis egy szabványos DVD lejátszásához a következő:
mplayer dvd://<sáv>
[-dvd-device<eszköz>
]
Például:
mplayer dvd://1 -dvd-device /dev/hdc
Ha az MPlayert dvdnav támogatással fordítottad, a szintaxis ugyan ez, kivéve, hogy dvdnav://-ot kell használnod a dvd:// helyett.
Az alapértelmezett DVD eszköz a /dev/dvd. Ha a te beállításod különböző, készíts egy szimbolikus linket vagy add meg a megfelelő eszközt a parancssorban a -dvd-device kapcsolóval.
Az MPlayer fel tudja használni a
libdvdread
-ot és a libdvdcss
-t
is a DVD-k lejátszásához és dekódolásához. Ez a két függvénykönyvtár megtalálható
az MPlayer forrás fájában, nem kell őket külön
telepítened. Használhatod a két függvénykönyvtár rendszer-szintű verzióját is,
de ez nem javasolt, mivel hibák forrása lehet,
a függvénykönyvtárak közötti inkompatibilítást és sebességcsökkenést okozhat.
Ha DVD dekódolási problémáid vannak, próbáld meg letiltani a supermount-ot vagy bármilyen más hasonló dolgot. Néhány RPC-2 vezérlő régió kód beállítását is megköveteli.
DVD dekódolás.
A DVD dekódolást a libdvdcss
végzi. A módszer
megadható a DVDCSS_METHOD
környezeti változó segítségével,
lásd a man oldalt.
A DVD meghajtók manapság tartalmaznak egy régió kódnak nevezett értelmetlen korlátozást. Szégyen, hogy a DVD meghajtókat arra kényszerítik, hogy a hat különböző régióból, amire a világot felosztották, csak az egyikben gyártott lemezeket fogadják el. Hogy egy asztal körül ülő pár ember hogy állhatott elő egy ilyen ötlettel és hogyan várhatják el, hogy a 21. században elfogadnak egy ilyen ötletet, az minden képzeletet felülmúl.
Azok a meghajtók, amelyek a régióbeállításokat csak szoftveresen kényszerítik ki, RPC-1 meghajtókként ismertek, amelyek hardveresen teszik ugyan ezt, azok az RPC-2 meghajtók. Az RPC-2 meghajtók öt alkalommal engedik meg a régiókód megváltoztatását, mielőtt az véglegessé válna. Linux alatt a regionset eszközt használhatod a DVD meghajtód régió kódjának beállításához.
Szerencsére lehetséges az RPC-2 meghajtók RPC-1-re történő átalakítása egy firmware frissítéssel. Add meg a DVD meghajtód model számát a kedvenc kereső motorodnak vagy nézz be a "The firmware page" fórumjába és letöltési oldalára. Bár a firmware frissítésre vonatkozó figyelmeztetések itt is érvényesek, a régió kódtól történő megszabadulás általában pozitív élménnyel zárul.
A használható kapcsolók teljes listájáért olvasd el a man oldalt. Egy szabványos Video CD (VCD) szintaxisa a következő:
mplayer vcd://<sáv>
[-cdrom-device<eszköz>
]
Például:
mplayer vcd://2 -cdrom-device /dev/hdc
Az alapértelmezett VCD eszköz a /dev/cdrom. Ha a te beállításaid különbözőek, készíts egy szimbolikus linket vagy add meg a megfelelő eszközt a parancssorban a -cdrom-device kapcsolóval.
A Plextor és néhány Toshiba SCSI CD-ROM meghajtónak borzalmas a teljesítménye
CVD olvasáskor. Ez azért van, mert a CDROMREADRAW ioctl
nincs teljesen implementálva ezekben a meghajtókban. Ha ismered a SCSI
programozást, kérlek segíts nekünk
egy általános SCSI támogatás elkészítésében VCD-khez.
Addig is kinyerheted az adatokat a VCD-ről a readvcd segítségével, majd a kapott fájlt lejátszhatod az MPlayerrel.
VCD struktúra. Egy Video CD (VCD) CD-ROM XA szektorokból áll, pl. CD-ROM 2-es módban 1-es és 2-es formátumú sávok:
Az első sáv 2-es módban, 2-es formátumban van, ami azt jelenti, hogy L2 hibajavítást használ. A sáv ISO-9660 fájl rendszert tartalmaz 2048 bájt/szektorral. Ez a fájl rendszer VCD metaadat információkat tartalmaz, valamint gyakran a menükben alkalmazott képkockákat. A menük MPEG szegmensei is ezen az első sávon tárolhatóak, de az MPEG-eket fel kell osztani 150 szektoros csonkokra. Az ISO-9660 fájl rendszer tartalmazhat egyéb fájlokat vagy programokat, amik a VCD működése szempontjából nem lényegesek.
A második és a további sávok általában nyers 2324 bájt/szektor formátumú MPEG (film) sáv, mely egy MPEG PS adat csomagot tartalmaz szektoronként. Ezek 2-es mód 1-es formátumban vannak, így több adatot tárolnak szektoronként némi hibajavítás elveszítése árán. Lehet CD-DA sáv is a VCD-n az első sáv után. Némelyik operációs rendszeren van egy kis csalás, amivel ezek a nem-ISO-9660 sávok megjelennek a fájl rendszerben. Más operációs rendszereken, például GNU/Linux-on ez nem így van (még). Itt az MPEG adat nem mountolható. Mivel a legtöbb film ilyen típusú sávon belül van, először próbáld ki a vcd://2-t.
Léteznek olyan VCD lemezek is, melyeken nincs meg az első sáv (egy sáv és egyáltalán nincs fájl rendszer). Ezek szintén lejátszhatóak, de nem lehet őket becsatolni.
A Video CD szabvány definícióját a Philips "Fehér könyv"-nek nevezte el és nem szabadon hozzáférhető, a Philipstől kell megvásárolni. A Video CD-kről sokkal részletesebb információt találhatsz a vcdimager dokumentációjában.
A .DAT fájlokról. A becsatolt VCD első sávján látható ~600 MB fájl valójában nem igazi fájl! Ez egy úgynevezett ISO átjáró, azért hozták létre, hogy a Windows kezelni tudja ezen sávokat (a Windows semmilyen módon sem engedi a közvetlen eszköz elérést az alkalmazásoknak). Linux alatt nem tudod átmásolni vagy lejátszani az ilyen fájlokat (szemét van bennük). Windows alatt lehetséges, mivel az iso9660 vezérlője a sávok nyers olvasását emulálja ebben a fájlban. A .DAT fájlok lejátszásához szükséged lesz egy kernel vezérlőre, ami a PowerDVD Linuxos verziójában található. Ez egy módosított iso9660 fájl rendszer vezérlőt (vcdfs/isofs-2.4.X.o) tartalmaz, ami képes a nyers sáv emulációra ezen ál .DAT fájlon keresztül. Ha az ő vezérlőjük segítségével csatolod be a lemezt, át tudod másolni és le tudod játszani a .DAT fájlt az MPlayerrel. A Linux kernel szabványos iso9660 vezérlőjével ez nem megy! Használd a vcd://-t helyette. VCD másolásához alternatíva az új cdfs kernel vezérlő (nem része a hivatalos kernelnek) ami a CD meneteket kép fájlok formájában mutatja, és a cdrdao, egy bitről-bitre grabbelő/másoló program.
Az edit decision list (EDL) rendszer segítségével automatikusan kihagyhatsz vagy elnémíthatsz részeket videókban a lejátszás alatt, egy film specifikus EDL konfigurációs fájl segítségével.
Ez azoknak hasznos, akik "család-barát" módban szeretnének filmet nézni. Ki tudsz vágni bármilyen erőszakos, káromkodós, Jar-Jar Binks-es jelenetet egy filmből, a saját igényeidnek megfelelően. Mindemellett más felhasználási módok is vannak, például automatikusan átlépni a videó fájlokban lévő reklámokat.
Az EDL fájl formátuma eléggé egyszerű. Egy sorban egy parancs van, ami megadja, hogy mit kell csinálni (skip/mute) és mikor (másodperc alapú mutatóval).
Add meg a -edl <fájlnév> kapcsolót, amikor indítod az MPlayert, a videóhoz használni kívánt EDL fájl nevével.
A jelenlegi EDL fájl formátum:
[kezdő másodperc] [befejező másodperc] [akció]
Ahol a másodpercek lebegőpontos számok, az akció pedig vagy
0
a kihagyáshoz vagy 1
az elnémításhoz. Például:
5.3 7.1 0 15 16.7 1 420 422 0
Ez az 5.3 másodperctől a 7.1 másodpercig kihagyja a videót, majd 15 másodpercnél leveszi a hangot, 16.7 másodpercnél visszateszi és a 420. és 422. másodperc között ismét kihagy a videóból. Ezek az akciók akkor hajtódnak végre, amikor a lejátszás időzítője eléri a fájlban megadott időket.
Ha készíteni akarsz egy EDL fájl, amit utána szerkeszthetsz, használd a -edlout <fájlnév> kapcsolót. Lejátszás közben csak nyomd meg az i billentyűt a kihagyandó rész elejének és végének a megjelöléséhez. A megfelelő bejegyzés bekerül a fájlba erre az időszakra. Ezután kézzel tetszőlegesen beigazíthatod az EDL fájlt és megváltoztathatod az alapértelmezett műveletet, ami az egyes sorok által leírt blokkok kihagyása.
Az MPlayer több példánya szinkronizálni tudja a lejátszást hálózaton keresztül. EZ hasznos "videó falak" létrehozásakor, amikor a több képernyőt külön számítógép vezérel. Minden MPlayer példány különböző videót tud lejátszani, de megpróbálnak ugyan azon az idő eltoláson maradni a fájlban. Javasolt, de nem szükséges, hogy a videó fájlok ugyan azzal a codeccel és paraméterekkel legyenek elkódolva.
A vonatkozó opciók az -udp-master, -udp-slave, -udp-ip, -udp-port és az -udp-seek-threshold.
Ha az -udp-master meg van adva, az MPlayer egy adatcsomagot küld az -udp-ip címre (alapértelmezett: 127.0.0.1) az -udp-port porton (alapértelmezett: 23867) minden egyes kocka lejátszása előtt. Az adatcsomag a mester pozícióját mutatja a fájlban. Ha az -udp-slave meg van adva, az MPlayer figyeli az -udp-ip/-udp-port-ot és követi a mester pozícióját. Az -udp-ip a mester broadcast címére történő állításával több kiszolgáló azonos broadcast címen tud szinkronizálni a mesterrel. Ne feledd, hogy ez a képesség egy ethernet-szerű, alacsony késleltetésű hálózati kapcsolatot feltételez. A működés változhat nagy késleltetésű hálózatokon.
Például tegyük fel, hogy 8 számítógép van a hálózaton, 192.168.0.1 és 192.168.0.8 közötti IP címekkel. Tegyük fel, hogy az első számítógép lesz a mester. A gépeken lefuttatott ifconfig "Bcast:192.168.0.255"-öt ír. A mesteren futtasd ezt:
mplayer -udp-master -udp-ip 192.168.0.255 video1.mpg
A kiszolgálókon pedig ezt:
mplayer -udp-slave videoN.mpg
A keresés, pillanatállj, sőt még a lejátszás sebességének állítása is (lásd az -input opciót) végbemehet a mesteren, minden kiszolgáló követni fogja. Ha a mester kilép, kiküld egy "bye" üzenetet, aminek a hatására a kiszolgálók is kilépnek.
A legtöbb DVD és sok más fájl térhatású hangot tartalmaz. Az MPlayer támogatja a térhatású lejátszást, de alapértelmezésként nem engedélyezi, mivel a sztereó berendezések a gyakoribbak. A több, mint két csatornás audiót tartalmazó fájlok lejátszásához használd a -channels kapcsolót. Például egy 5.1-es audióval rendelkező DVD lejátszása:
mplayer dvd://1 -channels 6
Figyelj rá, hogy az "5.1" név ellenére valójában hat különálló csatorna van. Ha van térhatású hangfalszetted, nyugodtan beleírhatod a channels opciót az MPlayer konfigurációs fájljába, a ~/.mplayer/config-ba. Például a kvadrafónikus lejátszás alapértelmezetté tételéhez írd be ezt a sort:
channels=4
Az MPlayer ekkor az audiót négy csatornán fogja lejátszani, ha mind a négy csatorna elérhető.
Az MPlayer nem duplázza meg a csatornákat alapból, ahogy a legtöbb audió vezérlő sem. Ha ilyet akarsz, kézzel kell megadnod:
mplayer filename
-af channels=2:2:0:1:0:0
Lásd a csatorna másolásról szóló rész a magyarázatért.
A DVD-k általában AC-3 (Dolby Digital) vagy DTS (Digital Theater System) formátumban kódolt térhatású hanggal rendelkeznek. Néhány modern audió berendezés képes ezen formátumok belső dekódolására. Az MPlayer beállítható úgy, hogy dekódolás nélkül adja át az audió adatot. Ez csak akkor fog működni, ha van egy S/PDIF (Sony/Philips Digital Interface) jack dugó a hangkártyádon, vagy HDMI-n keresztül küldöd át a hangot.
Ha az audió berendezésed tudja dekódolni mind az AC-3-at, mind a DTS-t, nyugodtan engedélyezheted az áteresztést mindkét formátumnál. Különben csak arra a formátumra engedélyezd, amelyiket a berendezésed támogatja.
Áteresztés engedélyezése a parancssorban:
Csak AC-3-hoz használd a -ac hwac3 kapcsolót.
CSak DTS-hez használd a -ac hwdts kapcsolót
AC-3 és DTS esetén használd a -afm hwac3 kapcsolót.
Áteresztés engedélyezése az MPlayer konfigurációs fájljában:
Csak AC-3-hoz használd az ac=hwac3, sort.
Csak DTS-hez használd az ac=hwdts, sort.
AC-3 és DTS esetén használd az afm=hwac3 sort.
Figyelj rá, hogy az ac=hwac3, és ac=hwdts, sorok végén van egy vessző (","). Ez arra utasítja az MPlayert, hogy váltson vissza a normálisan használt codec-re, ha olyan fájlt játszasz le, amiben nincs AC-3-as vagy DTS audió. Az afm=hwac3 sorba nem kell vessző; az MPlayer mindenképpen vált ha egy audió család van megadva.
A digitális TV továbbítás (mint pl. a DVB és ATSC) és néhány DVD általában MPEG audió stream-ekkel rendelkezik (általában MP2). Pár MPEG hardver dekóder, mint például a jól felszerelt DVB kártyák és a DXR2 adapterek natívan dekódolják ezt a formátumot.) Az MPlayer beállítható úgy, hogy ne foglalkozzon az audió adatok dekódolásával.
To use this codec:
mplayer -ac hwmpa
***TENNIVALÓ***
Ezt a részt még el kell készíteni, de addig nem lehet befejezni, amíg valaki nem ad nekünk hozzá példafájlokat teszteléshez. Ha van mátrix-kódolású audió fájlod, tudod, hogy hol lehet találni ilyet vagy van bármilyen információd, hálásak lennénk ha üzennél nekünk az MPlayer-DOCS levelezési listára. Írj egy "[matrix-encoded audio]"-t a tárgy sorba.
Ha nem érkezik fájl vagy további információ, ez a fejezet törölve lesz.
Jó link-ek:
Az MPlayer tartalmaz HRTF (Head Related Transfer Function) szűrőt, mely egy MIT projekten alapszik, melyben méréseket végeztek emberi műfejre szerelt mikrofonokkal.
Bár nem lehet tökéletesen imitálni egy térhatású rendszert, az MPlayer HRTF szűrője biztosít térben némileg mélyített hangot két csatornás fülhallgatón. A hagyományos lekeverés egyszerűen kombinálja az összes csatornát kettőbe; a csatornák kombinálásán túl a hrtf finom visszhangot generál, kissé növeli a sztereó elválasztást és megváltoztatja néhány frekvencia hangerejét. A HRTF hangzásának minősége függ a forrás audiótól és az emberi érzékléstől, de mindenképpen megér egy próbát.
DVD lejátszása DVD HRTF-fel:
mplayer dvd://1 -channels 6 -af hrtf
A hrtf csak 5 vagy 6 csatornával működik jól, valamint 48 kHz-es audió kell hozzá. A DVD audió már 48 kHz-es, de ha van egy fájlod ettől különböző mintavételezési rátával, akkor a hrtf-fel történő lejátszáshoz újra kell mintáznod:
mplayer fájlnév
-channels 6 -af resample=48000,hrtf
Sajnos nincs szabvány a csatornák sorrendjére vonatkozóan. Az alábbi sorrend az AC-3-é, ami eléggé tipikus; próbáld meg ezt és meglátod, hogy a forrásod megfelel-e neki. A csatornák számozása 0-tól indul.
mono
középső
sztereó
bal
jobb
kvadrafónikus
bal első
jobb első
bal hátsó
jobb hátsó
surround 4.0
bal első
jobb első
közép hátsó
közép első
surround 5.0
bal első
jobb első
bal hátsó
jobb hátsó
közép első
surround 5.1
bal első
jobb első
bal hátsó
jobb hátsó
közép első
mélynyomó
A -channels kapcsolóval az audió dekódertől lekérdezhető a csatornák száma. Néhány audió codec a specifikált csatornák számát használja fel a downmixing szükségességének megállapítására. Figyelj rá, hogy ez nem mindig érinti a kimeneti csatornák számát. Például a -channels 4 használata egy sztereó MP3 fájl lejátszásánál továbbra is 2 csatornás kimenetet ad, mert az MP3 codec nem tud extra csatornákat készíteni.
A channels audió szűrő használható csatornák létrehozására vagy eltávolítására, a hangkártya felé kiküldött csatornák számának beállítására való. Lásd a következő fejezeteket a csatorna manipulációval kapcsolatos bővebb információkért.
A mono hangok sokkal jobbak, ha két hangszórón keresztül hallhatóak - különösen ha fülhallgatót használsz. Az audió fájlok, amik ténylegesen egy csatornásak, automatikusan két hangszórón keresztül kerülnek lejátszásra; sajnos, a legtöbb mono hangú fájl tulajdonképpen szereóként van elkódolva, amiben az egyik csatornát lenémították. A legkönnyebb és legbolondbiztosabb megoldás arra, hogy mindkét hangszórón ugyanaz a kimenet legyen, az extrastereo szűrő:
mplayer fájlnév
-af extrastereo=0
Ez átlagolja mindkét csatornát, aminek eredményeként fele olyan hangosak lesznek, mint az eredeti. A következő fejezetekben találsz egyéb példákat is ennek megvalósítására a hangerő csökkentése nélkül, de azok komplexek és különböző kapcsolókat igényelnek attól függően, hogy melyik csatornát tartod meg. Ha tényleg szükséges a hangerő megtartása, könnyebb, ha a volume szűrővel kikísérletezed és megkeresed a helyes hangerőt. Például:
mplayer filename
-af extrastereo=0,volume=5
A channels szűrő bármelyik vagy az összes csatornát tudja mozgatni. A channels szűrő alopcióinak beállítása esetenként bonyolult és némi odafigyelést kíván.
Döntsd el, hány kimeneti csatornára van szükséged. Ez az első alopció.
Számold meg, hány csatornamozgatást fogsz véghezvinni. Ez a második alopció. Minden csatorna több különböző helyre mozgatható egy időben, de tartsd észben, hogy ha egy csatornát mozgatsz (még ha csak egy helyre is), a forrás csatorna üres lesz amíg másik csatornát nem mozgatsz a helyére. Csatorna másolásakor a forrás ugyan az marad, egyszerűen csak mozgasd a csatornát mind a cél mind a forrás helyre. Például:
2-es csatorna --> 3-as csatorna 2-es csatorna --> 2-es csatorna
Írd le a csatorna másolásokat alopció párokként. Figyelj rá, hogy az első
csatorna a 0, a második az 1, stb. Ezen alopciók sorrendje nem számít,
amíg megfelelően vannak csoportosítva
forrás:cél
párokba.
Itt egy példa az egy csatorna több hangszóróra való kiküldésének egy másik módjára. Ebben a példában feltételezzük, hogy a bal csatornát kell lejátszani és a jobb csatornát eldobjuk. Követve a fenti leírást:
Ahhoz, hogy egy-egy kimeneti csatorna legyen mindkét hangszóróhoz, az első alopciónak "2"-nek kell lennie.
A bal csatornát kell mozgatni a jobb csatornára és saját magára is, hogy ne legyen üres. Ez összesen két mozgatás, ami miatt a második alopció is "2".
A bal csatorna mozgatásához (0. csatorna) a jobb csatornára (1. csatorna) az alopció pár "0:1", "0:0" mozgatja a bal csatornát saját magára.
Mindezt összerakva kapjuk:
mplayer fájlnév
-af channels=2:2:0:1:0:0
Ezen példa előnye az extrastereo-val szemben, hogy a hangerő mindegyik kimeneti csatornán a bemeneti csatornáéval megegyező lesz. A hátránya, hogy az alopciókat "2:2:1:0:1:1"-re kell változtatni, ha a kívánt audió a jobb csatornán van. Valamint nehezebb megjegyezni és begépelni.
Van egy sokkal könnyebb mód a channels szűrő használatára, hogy a bal csatornát mindkét hangszórón megszólaltassuk:
mplayer fájlnév
-af channels=1
A második csatorna figyelmen kívül marad és további alopciók nélkül az egyetlen megmaradó csatorna egyedül marad. A hangkártya vezérlők az egy csatornás audiót automatikusan lejátszák mindkét hangszórón. Ez csak akkor működik, ha a kívánt csatorna a bal.
Másik gyakori művelet az elülső csatornák duplázása és lejátszása hátul, a hátsó hangszórókon kvadrafónikus beállítással.
Négy kimeneti csatorna kell. Az első alopció "4".
A két elülső csatornát kell mozgatni a megfelelő hátsóra és saját magára. Ez négy mozgatás, a második alopció "4".
A bal elsőt (0. csatorna) kell mozgatni a bal hátsóra (2. csatorna): "0:2". A bal elsőt saját magára is kell mozgatni: "0:0". A jobb elsőt (1. csatorna) a jobb hátsóra (3. csatorna): "1:3", és saját magára kell mozgatni: "1:1".
Az alopciók összeállításával kapjuk:
mplayer fájlnév
-af channels=4:4:0:2:0:0:1:3:1:1
A pan szűrő felhasználó által megadott arányban tudja keverni a csatornákat. Ezzel meg lehet csinálni mindent, amit a channels szűrővel, és még többet is. Sajnos az alopciók még komplikáltabbak.
Döntsd el, hány csatornával akarsz dolgozni. Ezt a -channels és/vagy -af channels kapcsolókkal kell megadnod. A példák megmutatják, mikor melyiket kell használni.
Döntsd el, hány csatornát adsz át a pan-nek (a további dekódolt csatornák figyelmen kívül maradnak). Ez az első alopció és szabályozza a kimeneti csatornák számát is.
A fennmaradó alopciók megadják, hogy melyik csatornát milyen mértékben kell bekeverni mindegyik másik csatornába. Ez az igazán bonyolult dolog. Könnyítésként válaszd szét az alopciókat különböző részekre, egy rész minden egyes bemeneti csatornához. Minden egy részen belül található alopció egy kimeneti csatornának felel meg. A szám, amit megadsz, a bemeneti csatorna kimeneti csatornába történő bekeverésének százalékos aránya lesz.
A pan 0 és 512 közötti értékeket fogad el, az eredeti hangerő 0% és 51200%-ának megfelelően. Légy óvatos, ha 1-nél nagyobb értékeket használsz. Nem csak nagy hangerőt adhat, de ha túlléped a hangkártyád mintavételezési rátáját, kellemetlen pukkanásokat és kattanásokat hallhatsz. Ha akarod, a pan-t követheti egy ,volume a vágás engedélyezéséhez, de jobb a pan értékeit olyan alacsonyan tartani, hogy ne kelljen vágni.
Itt van egy újabb példa a bal csatorna két hangszórón történő lejátszására. Kövesd a fent leírt lépéseket:
A pannek két kimeneti csatornája lesz, így az első alopció "2".
Mivel két bemeneti csatornánk van, két alopció rész lesz. Mivel két kimeneti csatornánk van, két alopció lesz részenként. A fájl bal csatornája teljes hangerővel mehet az új bal és jobb csatornára. Így az első alopció rész "1:1". A jobb csatornát figyelmen kívül kell hagyni, így a második "0:0". A sorvégi 0 értékek elhagyhatóak, de a könnyebb megértésért most megtartjuk őket.
Ezen opciók összeállítása adja:
mplayer fájlnév
-af pan=2:1:1:0:0
Ha inkább a jobb csatorna kell a bal helyett, a pan alopciói "2:0:0:1:1" lesznek.
Amint a channels-el, itt is lehet rövidíteni, ha a csak a bal csatornával dolgozol:
mplayer fájlnév
-af pan=1:1
Mivel a pan-nek csak egy bemeneti csatornája van (a másik csatorna figyelmen kívül marad), csak egy része van az alopcióknak, ami megadja, hogy az egyetlen csatorna saját maga 100%-át kapja.
Az MPlayer 6 csatornás PCM dekódolója nem tud lekeverni. Itt egy módszer a PCM lekeverésre a pan használatával:
A kimeneti csatornák száma 2, így az első alopció "2".
Hat bemeneti csatornával hat alopció rész lesz. Szerencsére mivel csak az első két csatorna kimenetével foglalkozunk, csak két részt kell készítenünk; a maradék négy elhagyható. Vigyázz, nem mindig ugyan az a csatornák sorrendje a többcsatornás audió fájlokban! Ez a példa egy olyan fájl lekeverését szemlélteti, amiben ugyan olyan csatornák vannak, mint az AC-3 5.1 esetén:
0 - bal első 1 - jobb első 2 - bal hátsó 3 - jobb hátsó 4 - középső első 5 - mélynyomó
Az alopciók első csoportja az eredeti hangerő százalékát adja, sorrendben, amit mindegyik kimeneti csatorna a bal első csatornától kap: "1:0". A jobb első csatornának a jobb kimenetre kell mennie: "0:1". Ugyan ez a hátsó csatornákra: "1:0" és "0:1". A középső csatorna mindkét kimeneti csatornára átmegy fél hangerővel: "0.5:0.5", a mélynyomó pedig mindkettőre teljes hangerővel: "1:1".
Mindezt összerakva:
mplayer 6-channel.wav
-af pan=2:1:0:0:1:1:0:0:1:0.5:0.5:1:1
A fenti példa százalékok csak durva példák. Nyugodtan játszadozz velük!
Ha egy pár nagy hangszóród van elől, nem kell pénzt áldoznod mélynyomóra a teljes 5.1-es hangzáshoz. Ha a -channels 5 használatával kéred, hogy a liba52 az 5.1-es audiót 5.0-ban dekódolja, a mélynyomó csatornája egyszerűen elmarad. Ha a mélynyomó csatornáját saját magad szeretnéd szétosztani, kézzel kell lekeverned a pan-nal:
Mivel a pan-nak mind a hat csatornával kell foglalkoznia, add meg a -channels 6 kapcsolót, hogy a liba52 dekódolja őket.
A pan csak öt csatornára küld kimenetet, az első alopció 5.
Hat bemeneti csatorna van és öt kimeneti csatorna, ez hat részt jelent öt alopcióval.
A bal első csatornát csak saját magára kell ismételni: "1:0:0:0:0"
Ugyan ez a jobb első csatornára: "0:1:0:0:0"
Ugyan ez a bal hátsó csatornára: "0:0:1:0:0"
És a jobb hátsó csatornára: "0:0:0:1:0"
Közép első szintén: "0:0:0:0:1"
És most kell eldöntenünk, hogy mit csináljunk a mélynyomóval, pl. felezve a jobb elsőre és a bal elsőre: "0.5:0.5:0:0:0"
Ezen opciók összevonásával születik meg az eredmény:
mplayer dvd://1
-channels 6 -af pan=5:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0.5:0.5:0:0:0
Néhány audió sáv túl halk, hogy kényelmesen hallható legyen kiegészítés nélkül. Ez akkor jelent problémát, ha az audió berendezésed nem tud erősíteni a jelen. A -softvol opció utasítja az MPlayert egy belső keverő használatára. Használhatod a hangerő állító gombokat (alapértelmezettként 9 és 0) a nagyobb hangerő eléréséhez. Figyelj rá, hogy ez nem hagyja figyelmen kívül a hangkártyád keverőjét; az MPlayer csak erősít az eredeti jelen mielőtt kiküldené a hangkártyára. A következő példa jó kezdésként:
mplayer halk-fájl
-softvol -softvol-max 300
A -softvol-max opció megadja a maximálisan megengedhető kimeneti hangerőt az eredeti hangerő százalékában. Például a -softvol-max 200 az eredeti szint dupláját engedélyezi. Nyugodtan megadhatsz egy nagy értéket a -softvol-max kapcsolóval; a nagyobb hangerő addig nem lesz használva, amíg te nem használod a hangerő állító gombokat. Az egyetlen hátránya a nagy értéknek az, hogy mivel az MPlayer a maximum százalékával állítja be a hangerőt, nem lesz olyan precíz vezérlésed a hangerő állító gombok használatakor. Használj kisebb értéket a -softvol-max-szal és/vagy add meg a -volstep 1-et, ha nagyobb pontosságot akarsz.
A -softvol opció a volume audió szűrő vezérlésével működik. Ha egy fájlt egy bizonyos hangerővel akarsz lejátszani az elejétől kezdve, megadhatod a volume-val kézzel:
mplayer halk-fájl
-af volume=10
Ez 10 decibel-es növeléssel játsszal le a fájlt. Légy óvatos, ha a volume szűrőt használod - könnyen károsíthatod a füleidet, ha túl nagy értéket használsz. Kezd alacsonyan és fokozatosan menj felfelé, amíg meg nem érzed, hogy meddig kell állítani. Valamint ha nagyon nagy értékeket adsz meg, a volume-nek lehet, hogy le kell csípnie a jelet, hogy megakadályozza a hangkártyád elfogadható tartományán kívül eső adatok küldését; ez zavart audiót eredményez.
Ez a rész arról szól, hogy hogyan lehet adást nézni/lementeni V4L kompatibilis TV tunerrel. Lásd a man oldalt a TV-s kapcsolók és a vezérlő billentyűk listájáért.
A kapcsolók teljes listája a man oldalon található. Itt csak pár tippet említünk meg:
Győződj meg róla, hogy a tuner működik más rádiós programmal Linuxon, például a XawTV-vel.
Használd a channels kapcsolót. Például:
-tv channels=26-MTV1,23-TV2
Magyarázat: Ha ezt a kapcsolót használod, akkor csak a 26-os és a 23-as csatorna lesz használható, és szép OSD szöveg lesz csatorna váltáskor, mely a csatorna nevét jelzi ki. A csatorna nevében lévő szóközöket a "_" karakterrel kell kicserélni.
Válassz valamilyen értelmes képméretet. A kp méreteinek oszthatónak kell lennie 16-tal.
Ha videót mentesz el úgy, hogy a függőleges felbontás nagyobb, mint a teljes felbontás fele (pl. 288 a PAL-nál és 240 az NTSC-nél), akkor a kapott 'képkockák' tényleg átlapolt mezőpárok lesznek. Attól függően, hogy mit akarsz csinálni a videóval, hagyhatod ebben a formában, veszteséges deinterlacing-et hajthatsz végre vagy szétszedheted a párokat egyedi mezőkre.
Különben a filmed torzul a gyors mozgású jelenetek alatt és a bitráta vezérlő is valószínűleg képtelen lesz az előírt bitráta megtartására, ahogy az interlacing változások nagy mennyiségű adatot eredményeznek és így nagy sávszélességet vesznek el. A deinterlacing-et bekapcsolhatod a -vf pp=DEINT_TYPE kapcsolóval. Általában a pp=lb jó, de ez az egyéni beállításokon is múlik. A többi deinterlacing algoritmust lásd a manuálban és próbálgasd ki őket.
Vágd le a felesleges helyet. Ha videót mentesz, a sarki arénák teljesen feketék és némi zajt tartalmaznak. Ezek szintén nagy sávszélességet foglalnak el feleslegesen. Pontosabban nem maguk a fekete területek, hanem az éles átmenetek a fekete és a világosabb videó kép között, de ez most nem fontos igazából. Mielőtt elindítanád a mentést, állítsd be a crop kapcsoló argumentumait, így a széleknél lévő vackok le lesznek vágva. És ne feledd a képméreteket ésszerű keretek között tartani.
Figyelj a CPU terhelésre. Legtöbbször átlépi a 90%-os határt. Ha nagy mentési buffered van, a MEncoder túlél egy esetleges túlterhelést pár másodpercig, de semmi több. Jobb kikapcsolni a 3D OpenGL képernyővédőket és a hasonló dolgokat.
Ne szórakozz a rendszer órával. A MEncoder a rendszer órát használja az A/V szinkronhoz. Ha átállítod a rendszer órát (különösen vissza az időben), a MEncoder összezavarodik és képkockákat veszítesz. Ez egy fontos dolog, ha hálózathoz kapcsolódsz és futtatsz valamilyen idő szinkronizációs szoftvert, mint pl. NTP. Ki kell kapcsolnod az NTP-t a mentési folyamat alatt, ha megbízható mentést akarsz.
Ne változtasd meg az outfmt-t, hacsak vagy biztos benne,
hogy mit csinálsz, vagy a kártyád/vezérlőd tényleg nem támogatja az
alapértelmezést (YV12 színtér). A MPlayer/MEncoder
régebbi verzióiban szükséges volt a kimeneti formátum megadása. Ez a
jelenlegi kiadásban már javítva lett és az outfmt már
nem szükséges, az alapértelmezés megfelel a legtöbb esetben. Például ha
videót mentesz DivX-be a libavcodec
használatával és megadod az outfmt=RGB24-t a mentett kép
minőségének növelése érdekében, a mentett kép igazából később lesz
visszakonvertálva YV12-be így az egyetlen, amit elérsz, az erőteljes CPU
használat.
Rengeteg módon menthetsz el audiót. A hangot grabbelheted a hang kártyáddal is egy a videó kártya és a line-in között lévő külső kábelen keresztül, vagy a bt878-as chip-be beépített ADC segítségével. A második esetben be kell töltened a btaudio vezérlőt. Olvasd el a linux/Documentation/sound/btaudio fájlt (a kernel fájában, nem az MPlayerében) némi leírásért ezen vezérlő használatával kapcsolatban.
Ha a MEncoder nem tudja megnyitni az audió eszközt, győződj meg róla, hogy tényleg elérhető-e. Gond lehet a hang szerverekkel, mint pl. aRts (KDE) vagy ESD (GNOME). ha full duplex hang kártyád van (majdnem az összes hangkártya tudja már ezt manapság), és KDE-t használsz, próbáld meg bekapcsolni a "full duplex" opciót a hangkártya tulajdonságok menüben.
Dummy kimenet AAlib-re :)
mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://
Bemenet standard V4L-ről:
mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://
Egy sokkal mesterkéltebb példa. Ezzel a MEncoder elmenti a teljes PAL képet, levágja a széleket és deinterlace-eli a képet a linear blend algoritmus segítségével. Az audió 65 kbps-es állandó bitrátával kerül tömörítésre, a LAME codec felhasználásával. Ez a beállítás megfelelő a filmek elmentéséhez.
mencoder -tv driver=v4l:width=768:height=576 -oac mp3lame -lameopts cbr:br=64\
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
-vf crop=720:544:24:16,pp=lb -o output.avi
tv://
Ez ráadásul átméretezi a képet 384x288-ra és 350 kbps-sel, nagyon jó minőségben összetömöríti a videót. A vqmax opció felszabadítja a kvantálót és így lehetővé teszi a videó tömörítőnek az ilyen alacsony bitráta elérését akár a minőség kárára is. Ez használható TV-s sorozatok elmentésekor, amikor a minőség nem olyan fontos.
mencoder -tv driver=v4l:width=768:height=576 \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
-oac mp3lame -lameopts cbr:br=48 -sws 1 -o output.avi
\
-vf crop=720:540:24:18,pp=lb,scale=384:288 tv://
Meg lehet adni kisebb képméretet is a -tv kapcsolónál és ki lehet hagyni a szoftveres méretezést, de ez a megközelítés a lehető legtöbb információt használja fel és egy kicsit ellenállóbb a zajokkal szemben. A bt8x8 chip-ek a pixel átlagolást csak vízszintesen tudják hardveres korlátok miatt.
A teletext jelenleg csak a v4l és v4l2 vezérlőkkel használható az MPlayerben.
Az MPlayer támogatja a hagyományos szöveget, a grafikát és a navigációs link-eket. Sajnos a színes oldalak még nem támogatottak teljesen - minden oldal szürkében látszik. A felirat oldalak (Closed Captions néven is ismert) is támogatottak.
Az MPlayer a TV jel vételének kezdetétől cache-eli a teletext oldalakat, így nem kell várnod a kért oldal betöltésére.
Megjegyzés: A teletext -vo xv melletti használata érdekes színeket jelenít meg.
A teletext dekódolás engedélyezéséhez meg kell adnod azt a VBI eszközt, amelyről az adatok származnak (általában /dev/vbi0 Linux alatt). Ez történhet a tdevice opció konfigurációs fájlban történő megadásával, így:
tv=tdevice=/dev/vbi0
Lehet, hogy meg kell adnod az országod teletext nyelv kódját is. A teljes országlista megtekinthető az alábbi paranccsal:
tv=tdevice=/dev/vbi0:tlang=-1
Egy példa az orosz nyelv kiválasztására:
tv=tdevice=/dev/vbi0:tlang=33
Ez a fejezet arról szól, hogyan engedélyezheted a V4L-kompatibilis rádió tuner-ről történő rádió hallgatást. Lásd a man oldalt a rádiós opciók és a billentyűzeten keresztüli vezérlés leírásához.
Az összes használható opcióhoz nézd meg a man oldalt. Következzék pár tipp:
Győződj meg róla, hogy a tuner működik más rádiós programmal Linuxon, például a XawTV-vel.
Használd a channels opciót. Egy példa:
-radio channels=104.4-Sibir,103.9-Maximum
Magyarázat: Ezzel az opcióval csak a 104.4 és 103.9 rádió adók használhatóak. Egy szép OSD szöveg fog megjelenni csatorna váltásnál, kiírva a csatorna nevét. A csatorna nevében szereplő szóközöket "_" karakterrel kell helyettesíteni.
Több lehetőség is adott az audió elmentésére. Menthetsz a hangkártyád segítségével
is, egy videó kártyát és a line-in-t összekötő külső kábellel, vagy az saa7134
chip-be beépített ADC segítségével. Ez utóbbi esetben be kell töltened az
saa7134-alsa
vagy az
saa7134-oss
vezérlőt.
A MEncoder nem használható az audió elmentésére, mert videó folyamra van szüksége. Így vagy az arecord használhatod az ALSA projektből vagy a -ao pcm:file=file.wav opciót. Ez utóbbi esetben nem fogsz hallani semmilyen hangot (hacsak nem használsz egy line-in kábelt és nem kapcsolod ki a line-in némítást).
Bemenet szabványos V4L-ről (line-in kábellel, mentés kikapcsolva):
mplayer radio://104.4
Bemenet szabványos V4L-ről (line-in kábellel, mentés kikapcsolva, V4Lv1 interfész):
mplayer -radio driver=v4l radio://104.4
A csatorna listán második csatorna lejátszása:
mplayer -radio channels=104.4=Sibir,103.9=Maximm radio://2
Hang átadása a PCI buszon a rádió kártya belső ADC-jéből.
Ebben a példában a tuner második hangkártyaként szerepel
(ALSA device hw:1,0). Az saa7134-alapú kártyákhoz vagy az
saa7134-alsa
vagy az saa7134-oss
modult be kell tölteni.
mplayer -rawaudio rate=32000 radio://2/capture \ -radio adevice=hw=1.0:arate=32000:channels=104.4=Sibir,103.9=Maximm
Ha ALSA eszköz neveket használsz, a kettőspontokat egyenlőség jelekkel kell helyettesíteni, a periódusokat vesszők választják el.
libcaca
- Színes ASCII Art függvénykönyvtár
XFree86 4.0.2 vagy újabb alatt használhatod a kártyád YUV rutinjait az XVideo kiterjesztés használatával. Ez az, amit a -vo xv kapcsoló használ. Ez a vezérlő támogatja a fényerősség/kontraszt/árnyalat/stb. állítását (hacsak nem a régi, lassú DirectShow DivX codec-et használod, ami mindenhol támogatja), lásd a man oldalt.
A beüzemeléséhez ellenőrizd a következőket:
XFree86 4.0.2 vagy újabbat kell használnod (korábbi verziókban nincs XVideo)
A kártyádnak támogatnia kell a hardveres gyorsítást (a modern kártyák tudják)
Az X-nek írnia kell az XVideo kiegészítés betöltését valahogy így:
(II) Loading extension XVideo
a /var/log/XFree86.0.log fájlban.
Ez csak az XFree86 kiegészítését tölti be. Egy jó telepítésben ez mindig betöltődik, de ez nem jelenti azt, hogy a kártya XVideo támogatása is be van töltve!
A kártyádnak van Xv támogatása Linux alatt. Ennek az ellenőrzéséhez add ki az xvinfo parancsot, ez része az XFree86 disztribúciónak. Egy hosszú szöveget kell kiírnia, valami ilyesmit:
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 (...) 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) (...stb...)
Támogatnia kell a tömörített YUY2 és a YV12 planar pixel formátumokat, hogy az MPlayer használni tudja.
És végül, nézd meg, hogy az MPlayer 'xv' támogatással lett-e fordítva. Írd be ezt: mplayer -vo help | grep xv . Ha az 'xv' támogatás be van építve, egy ehhez hasonló sornak szerepelnie kell:
xv X11/Xv
BEVEZETÉS. Ez a dokumentum megpróbálja pár szóban elmagyarázni, hogy mi is az a DGA tulajdonképpen és mit tehet a DGA vezérlő az MPlayernek (és mit nem).
MI AZ A DGA.
A DGA a Direct Graphics Access
rövidítése és azt jelenti, hogy egy program az X szerver megkerülésével
direkt eléréssel módosíthatja a framebuffer memóriát. Gyakorlatilag ez úgy
történik, hogy a framebuffer memória a processzed memória tartományába
kerül leképezésre. Ezt a kernel csak superuser jogokkal engedélyezi. Vagy
root
néven történő bejelentkezéssel
vagy az MPlayer futtatható állományának SUID
bitjének beállításával juthatsz ilyen jogokhoz. (nem
javasoljuk).
Két verziója van a DGA-nak: a DGA1 az XFree 3.x.x-ban volt használatos, a DGA2 az XFree 4.0.1-ben került bevezetésre.
A DGA1 csak direkt framebuffer elérést biztosít a fent leírt módszerrel. A videó jel felbontásának megváltoztatásához az XVidMode kiterjesztést kell használnod.
A DGA2 már tartalmazza az XVidMode kiterjesztés képességeit és a képernyő színmélységét is engedi változtatni. Így alaphelyzetben 32 bites színmélységben futtatott X szervert átállíthatsz 15 bites mélységre és vissza.
Ennek ellenére a DGA-nak van néhány hátránya. Úgy tűnik ez az általad használt grafikus chip-től függ és az ezen chip-et irányító vezérlő X szerverben való megvalósításától. Így nem minden rendszeren működik...
DGA TÁMOGATÁS TELEPÍTÉSE AZ MPLAYERHEZ. Először győződj meg, hogy az X betölti a DGA kiterjesztést: lásd a /var/log/XFree86.0.log fájlt:
(II) Loading extension XFree86-DGA
XFree86 4.0.x vagy újabb nagyon javasolt! Az MPlayer DGA vezérlőjét a ./configure automatikusan megtalálja, de elő is írhatod a használatát a --enable-dga kapcsolóval.
Ha a vezérlő nem tud kisebb felbontásra váltani, kísérletezz a -vm (csak X 3.3.x esetén), -fs, -bpp, -zoom kapcsolókkal a filmnek legmegfelelőbb videó mód megtalálásához. Még nincs konverter :(
Lépj be root
ként. A DGA-hoz root
elérés kell, hogy közvetlenül tudjon írni a videó memóriába. Ha felhasználóként
akarod futtatni, telepítsd az MPlayert SUID root-tal:
chown root/usr/local/bin/mplayer
chmod 750/usr/local/bin/mplayer
chmod +s/usr/local/bin/mplayer
Így már egyszerű felhasználók esetében is működik.
Ez nagy biztonsági kockázatot jelent! Soha ne csináld ezt meg egy szerveren vagy egy olyan számítógépen amihez mások is hozzáférnek, mert root jogokat szerezhetnek a SUID root-os MPlayerrel.
Használd a -vo dga kapcsolót, és már megy is! (reméljük:) Kipróbálhatod a -vo sdl:driver=dga kapcsolót is, hogy működik-e! Sokkal gyorsabb!
FELBONTÁS VÁLTÁS. A DGA vezérlő lehetővé teszi a kimeneti jel felbontásának megváltoztatását. Ezzel elkerülhető a (lassú) szoftveres méretezés és ugyanakkor teljes képernyős képet biztosít. Ideális helyzetben pontosan a videó adat felbontására vált (kivéve az aspect arányt), de az X szerver csak a /etc/X11/XF86Config (/etc/X11/XF86Config-4 XFree 4.X.X esetén) fájlban előírt felbontásokra enged váltani. Ezeket modline-oknak nevezik és a videó hardvered tulajdonságain múlik. Az X szerver átnézi ezt a konfigurációs fájlt indításkor és letiltja a hardverednek nem megfelelőeket. Az X11 log fájlból kiderítheted, hogy mely módok engedélyezettek. Megtalálhatóak a /var/log/XFree86.0.log fájlban.
Ezek a bejegyzések tudvalevőleg működnek Riva128 chip-en, az nv.o X szerver vezérlő modul használatával.
Section "Modes" Identifier "Modes[0]" Modeline "800x600" 40 800 840 968 1056 600 601 605 628 Modeline "712x600" 35.0 712 740 850 900 400 410 412 425 Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan Modeline "352x288" 25.10 352 368 416 432 288 296 290 310 Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan EndSection
DGA & MPLAYER. A DGA két helyen használható az MPlayerben: Az SDL vezérlőnek előírhatod a használatát (-vo sdl:driver=dga) és a DGA vezérlőben (-vo dga). A fent említettek vonatkoznak mind a kettőre; a következő részben leírom, hogyan működik az MPlayer DGA vezérlője.
TULAJDONSÁGOK. A DGA vezérlő használatát a -vo dga kapcsoló parancssorban történő megadásával írhatod elő. Alapértelmezésként az videó eredeti felbontásához legközelebb álló felbontásra vált. Szándékosan figyelmen kívül hagyja a -vm és -fs kapcsolókat (videó mód váltás engedélyezése és teljes képernyő) - mindig a lehető legtöbbet megpróbálja elfedni a képernyődből a videó mód váltásával, így megspórolja a képméretezéshez szükséges plusz CPU ciklusokat. Ha nem tetszik az általa választott mód, kényszerítheted, hogy az általad megadott felbontáshoz legközelebbit keresse meg az -x és -y kapcsolókkal. A -v kapcsoló beírásának hatására a DGA vezérlő sok egyéb mellett kilistázza az aktuális XF86Config fájl által támogatott összes felbontást. DGA2 használata esetén előírhatod a színmélységet is a -bpp kapcsolóval. Az érvényes színmélységek 15, 16, 24 és 32. A hardvereden múlik, hogy ezek a színmélységek alapból támogatottak-e vagy (valószínűleg lassú) konverziót kell végezni.
Ha vagy olyan szerencsés, hogy elegendő memóriád van az egész, nem képernyőn lévő kép bemásolásához, a DGA vezérlő dupla bufferelést fog használni, ami egyenletesebb film lejátszást eredményez. Kiírja, hogy a dupla bufferelés engedélyezett-e vagy sem.
A dupla bufferelés azt jelenti,h ogy a videód következő képkockája a memória egy nem megjelenített részére másolódik, amíg az aktuális képkocka van a képernyőn. Ha kész a következő képkocka, a grafikus chip megkapja az új kép memóriabeli helyét, és egyszerűen onnan megjeleníti a képet. Eközben a másik buffer ismét feltöltődik új videó adattal.
A dupla bufferelés bekapcsolható a -double kapcsolóval, vagy letiltható a -nodouble-lal. A jelenlegi alapértelmezett beállítás szerint le van tiltva a dupla bufferelés. DGA vezérlő használata esetén az onscreen display (OSD) csak akkor működik, ha a dupla bufferelés engedélyezve van. Azonban a dupla bufferelés nagy sebességcsökkenéssel járhat (az én K6-II+ 525 gépemen további 20% CPU idő!) a hardvered DGA implementációjától függően.
SEBESSÉGI ADATOK. Általánosságban a DGA framebuffer elérésének legalább olyan gyorsnak kell lennie, mint az X11-es vezérlőnek a teljes képernyős képhez szükséges kiegészítők használatával. Az MPlayer által kiírt százalékos sebesség értékeket azonban fenntartással kezeld, mert például az X11-es vezérlő esetén nem tartalmazzák azt az időt, ami az X szervernek kell a kirajzoláshoz. Hurkold rá a terminált egy soros vonalra és indítsd el a top programot, akkor megtudod mi is történik valójában a dobozodban.
Kijelenthetjük, hogy a DGA gyorsítása a 'normális' X11-es használathoz képest erőteljesen függ a grafikus kártyádtól és hogy a hozzá tartozó X szerver modul mennyire optimalizált.
Ha lassú rendszered van, jobb ha 15 vagy 16 bites színmélységet használsz, mivel ezek fele akkora memória sávszélességet igényelnek, mint a 32 bites megjelenítés.
A 24 bites színmélység használata jó ötlet, ha a kártyád natívan támogatja a 32 bites mélységet, mivel ez is 25%-kal kevesebb adatátvitelt jelent a 32/32 módhoz képest.
Láttam pár AVI fájlt 266-os Pentium MMX-en lejátszva. Az AMD K6-2 CPU-k is működnek 400 MHZ vagy afölött.
ISMERT HIBÁK. Nos, az XFree néhány fejlesztője szerint a DGA egy szörnyeteg. Ők azt mondják, jobb ha nem használod. Az implementációja nem mindig tökéletes az XFree-hez tartozó chipset vezérlőkkel.
Az XFree 4.0.3 és az nv.o esetén van egy hiba, ami érdekes színeket eredményez.
ATI vezérlő esetén egynél többször kell visszaváltani a módot a DGA-s lejátszás után.
Néhány vezérlő egyszerűen képtelen visszaváltani normál felbontásra (használd a Ctrl+Alt+Keypad + és Ctrl+Alt+Keypad - kombinációkat a kézi váltáshoz).
Néhány vezérlő egyszerűen rossz színeket jelenít meg.
Néhány vezérlő hamis adatot ad a processz címterébe bemappolt memória méretéről, így a vo_dga nem használ dupla bufferelést (SIS?).
Néhány vezérlő egy használható módot sem jelez. Ebben az esetben a DGA vezérlő összeomlik és azt írja, hogy 100000x100000-es értelmetlen mód vagy valami hasonló.
Az OSD csak engedélyezett dupla buffereléssel működik (különben villog).
TELEPÍTÉS. Telepítened kell az svgalib-et és a fejlesztői csomagjait ahhoz, hogy az MPlayer elkészítse az SVGAlib vezérlőjét (automatikusan felismeri, de lehet kényszeríteni is rá) és ne felejtsd el átírni a /etc/vga/libvga.config fájlt, hogy megfeleljen a kártyádnak és a monitorodnak.
Ne használd a -fs kapcsolót, mert bekapcsolja a szoftveres méretezést és lassú. Ha tényleg szükség van rá, használd a -sws 4 kapcsolót, ami rossz minőséget ad, de valamivel gyorsabb.
EGA (4BPP) TÁMOGATÁS. Az SVGAlib tartalmazza az EGAlib-et és az MPlayer így képes bármely film 16 színben történő megjelenítésére, lehetővé téve az alábbi beállítások használatát:
EGA kártya EGA monitorral: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp
EGA kártya CGA monitorral: 320x200x4bpp, 640x200x4bpp
A bpp (bit per pixel) értéket kézzel kell 4-re állítanod: -bpp 4
A filmet valószínűleg át kell méretezni, hogy megfeleljen az EGA módnak:
-vf scale=640:350
or
-vf scale=320:200
Ehhez gyors, de rossz minőséget produkáló méretező rutin kell:
-sws 4
Talán az automatikus arány-javítást kikapcsolhatod:
-noaspect
A kísérleteimből úgy tűnik, a legjobb képminőség EGA monitorokon a világosság enyhe csökkentésével állítható elő: -vf eq=-20:0. Nálam szükséges volt az audió mintavételi ráta csökkentése is, mert a hang szétesett 44kHz-en: -srate 22050.
Csak az expand szűrő segítségével tudod bekapcsolni a feliratokat és az OSD-t, lásd a man oldalt a megfelelő paraméterekért.
Az FBdev elkészítése automatikusan kiválasztódik a ./configure során. Olvasd el a framebuffer dokumentációt a kernel forrásban (Documentation/fb/*) a bővebb információkért.
Ha a kártyád nem támogatja a VBE 2.0 szabványt (régebbi ISA/PCI kártyák, mint például az S3 Trio64), csak a VBE 1.2-t (vagy régebbit?): Nos, a VESAfb még elérhető, de be kell töltened a SciTech Display Doctor-t (egykori UniVBE), mielőtt betöltenéd a Linuxot. Használj DOS boot lemezt vagy valamit. És ne felejtsd el regisztrálni az UniVBE-det! ;))
Az FBdev kimenetnek a fentiek mellett van néhány paramétere is:
megadhatod a használni kívánt framebuffer eszközt (alapértelmezett: /dev/fb0)
használni kívánt mód neve (a /etc/fb.modes fájlnak megfelelően)
módokat tartalmazó konfigurációs fájl (alapértelmezett: /etc/fb.modes)
fontos értékek, lásd example.conf
Ha egy különleges módra akarsz váltani, akkor így használd:
mplayer -vm -fbmodemod_neve
fajlnev
Magában a -vm kiválasztja a legmegfelelőbb módot a /etc/fb.modes fájlból. Használható együtt a -x és -y kapcsolókkal is. A -flip kapcsoló csak akkor támogatott, ha a film pixel formátuma megfelel a videó mód pixel formátumának. Figyelj a bpp értékére, az fbdev vezérlő az aktuálisat próbálja meg használni, vagy ha megadsz valamit a -bpp kapcsolóval, akkor azt.
A -zoom kapcsoló nem támogatott (használd a -vf scale-t). Nem használhatsz 8bpp (vagy kevesebb) módokat.
Valószínűleg el szeretnéd tüntetni a kurzort:
echo -e '\033[?25l'
vagy
setterm -cursor off
és a képernyővédőt:
setterm -blank 0
Kurzor visszakapcsolása:
echo -e '\033[?25h'
vagy
setterm -cursor on
Az FBdev videó mód váltása nem működik a VESA framebufferrel és ne is kérd, hogy működjön, mivel ez nem az MPlayer korlátja.
Az mga_vid
egy videó kimeneti vezérlő és egy
kernel modul kombinációja, ami felhasználja a Matrox G200/G400/G450/G550
videó méretező/overlay egységét a YUV->RGB színtér átalakításhoz és tetszés
szerinti videó méretezéshez.
Az mga_vid
-ben van hardveres VSYNC támogatás tripla
buffereléssel. Működik mind a framebuffer konzolon, mind X alatt, de csak
2.4.x-es Linux-szal.
Ezen vezérlő Linux 2.6.x alatti verziója itt található: http://attila.kinali.ch/mga/ vagy nézz rá az mga_vid külső Subversion repository-jára, melyet checkout-olhatsz így:
svn checkout svn://svn.mplayerhq.hu/mga_vid
Telepítés:
A használatához először le kell fordítanod a drivers/mga_vid.o fájt:
make drivers
Ezután futtasd (root
-ként) a
make install-drivers
parancsot, ami telepíti a modult és létrehozza az eszköz node-ját neked. Töltsd be a vezérlőt
insmod mga_vid.o
Ellenőrizd a memória méret detektálását a dmesg parancs segítségével. Ha hibásan írja, használd a mga_ram_size kapcsolót (előtte rmmod mga_vid), a kártya memóriájának MB-ban történő megadásához:
insmod mga_vid.o mga_ram_size=16
Az automatikus betöltéshez/törléshez először írd be ezt a sort a /etc/modules.conf fájlod végére:
alias char-major-178 mga_vid
Ezekután le kell fordítanod (újra) az MPlayert, a ./configure meg fogja találni a /dev/mga_vid-et és elkészíti az 'mga' vezérlőt. Az MPlayerben a -vo mga kapcsolóval használhatod, ha matroxfb konzolod van vagy a -vo xmga-val XFree86 3.x.x vagy 4.x.x alatt.
Az mga_vid vezérlő együttműködik az Xv-vel.
A /dev/mga_vid eszköz fájlt megnézheted némi infóért például a
cat /dev/mga_vid
segítségével és beállíthatod a fényerősséget:
echo "brightness=120" > /dev/mga_vid
Van egy mga_vid_test nevű teszt alkalmazás ugyan ebben a könyvtárban. Ha minden jól működik, akkor 256x256-os képeket rajzol a képernyőre.
Ez a vezérlő a kernel tdfx framebuffer vezérlőjét használja a filmek YUV gyorsításával történő lejátszásához. Kell hozzá egy kernel tdfxfb támogatással, és egy újrafordítás a
./configure --enable-tdfxfb
paranccsal.
Ez a Linux kernel moduljainak és egy videó kimeneti vezérlőnek a
kombinációja, hasonlóan az mga_vid-hez.
2.4.x kernel kell hozzá az agpgart
vezérlővel, mivel a tdfx_vid
AGP-t használ.
Add meg a --enable-tdfxfb a configure-nak
a videó kimeneti vezérlő elkészítéséhez és készíts egy kernel modult
az alábbi utasítások alapján.
A tdfx_vid.o kernel modul telepítése:
Fordítsd le a drivers/tdfx_vid.o fájlt:
make drivers
Ezután futtasd (root
-ként) a
make install-drivers
parancsot, ami telepíti a modult és létrehozza az eszköz node-ját neked. Töltsd be a vezérlőt
insmod tdfx_vid.o
A szükség esetén történő automatikus betöltéshez/törléshez, először szúrd be ezt a sort a /etc/modules.conf fájl végére:
alias char-major-178 tdfx_vid
Van egy tdfx_vid_test nevű teszt alkalmazás ugyan ebben a könyvtárban. Ha minden jól működik, néhány hasznos információt jelenít meg.
Az MPlayer támogatja a filmek OpenGL-lel történő megjelenítését is, de ha a platformod/vezérlőd támogatja az Xv-t, inkább azt használd PC-n Linux-szal, az OpenGL teljesítménye észrevehetően gyengébb. Ha Xv támogatás nélküli X11-ed van, az OpenGL jó alternatíva lehet.
Sajnos nem minden vezérlő támogatja ezt a tulajdonságot. A Utah-GLX vezérlők (az XFree86 3.3.6-hoz) minden kártya esetén támogatják. Lásd a http://utah-glx.sf.net oldalt a részletes telepítési leíráshoz.
Az XFree86(DRI) 4.0.3 vagy későbbi támogatja az OpenGL-t Matrox és Radeon kártyákkal, a 4.2.0 vagy későbbi Rage128-cal. Lásd a http://dri.sf.net oldalt a letöltéshez és a telepítési utasításokért.
Egy felhasználónk tanácsa: a GL videó kimenetet függőlegesen szinkronizált TV kimenet előállításához is felhasználhatod. Csak be kell állítanod egy környezeti változót (legalábbis az nVidia-n):
export __GL_SYNC_TO_VBLANK=1
Az AAlib egy függvény könyvtár grafika karakteres módban történő megjelenítéséhez, egy nagyszerű ASCII renderelő segítségével. Már jelenleg is rengeteg program támogatja, például a Doom, Quake, stb. Az MPlayerben is van egy roppant jól használható vezérlő hozzá. Ha a ./configure talál telepített aalib-et, az aalib libvo vezérlő alapértelmezett lesz.
Pár billentyű segítségével állíthatod a renderelési opciókat az AA Ablakban:
Gomb | Művelet |
---|---|
1 | kontraszt csökkentése |
2 | kontraszt növelése |
3 | fényerő csökkentése |
4 | fényerő növelése |
5 | gyors renderelés be/kikapcsolása |
6 | dithering módjának beállítása (nincs, hiba eloszlás, Floyd Steinberg) |
7 | kép megfordítása |
8 | váltás az aa és az MPlayer vezérlése között |
A következő parancssori kapcsolókat használhatod:
V
OSD színének megváltoztatása
V
Felirat színének megváltoztatása
ahol a V
lehet:
0
(normális),
1
(sötét),
2
(vastag),
3
(félkövér betű),
4
(ellentétes),
5
(speciális).
Maga az AAlib számtalan lehetőséget biztosít. Itt van pár fontosabb:
Beállítja a javasolt aa vezérlőt (X11, curses, Linux).
Mind a 256 karakter használata.
Nyolc bites ASCII.
Kiírja az összes aalib kapcsolót.
A renderelés nagyon CPU igényes, különösen ha AA-on-X-et (aalib használata X alatt) használsz, a legalacsonyabb a standard, nem framebuffer-es konzolon. Használd az SVGATextMode-ot a nagy felbontás beállításához, és élvezd! (másodlagos Hercules kártyák a sirályak :)) (de SZVSZ használhatod a -vf 1bpp kapcsolót is a hgafb-en megjelenő grafikához :)
A -framedrop kapcsoló használatát javasoljuk, ha nem elég gyors a géped az összes képkocka rendeléséhez!
Terminálon lejátszva jobb sebességet és minőséget kapsz a Linux vezérlővel,
mint a curses-szal (-aadriver linux). De ehhez írási joggal
kell rendelkezned a /dev/vcsa<terminal>
fájlhoz! Ezt az aalib nem ismeri fel magától, de a vo_aa megpróbálja
megtalálni a legjobb módot.
Lásd a http://aa-project.sf.net/tune oldalt a további
tuningolási dolgokhoz.
A libcaca
függvénykönyvtár egy grafikus könyvtár, ami szöveget jelenít meg pixelek helyett, így
működik régebbi videó kártyákkal vagy szöveges terminálokon is. Hasonló a népszerű
AAlib
könyvtárhoz.
A libcaca
-nak egy terminál kell a működéshez, így
bármilyen Unix rendszeren (beleértve a Mac OS X-et) működik, vagy a
slang
vagy az
ncurses
vagy DOS alatt a
conio.h
illetve Windows rendszereken
akár a slang
vagy az
ncurses
(Cygwin emuláción keresztül) vagy
a conio.h
könyvtárak használatával. Ha
a ./configure
megtalálja a libcaca
-t, a caca libvo vezérlő
elkészül.
A különbség az AAlib
-hez képest
a következőek:
16 elérhető szín a karakter kimenetre (256 színű párok)
színes kép dithering
De a libcaca
-nak megvan az
alábbi korlátja:
nincs fényerő, kontraszt és gamma támogatás
Pár billentyűvel szabályozhatod a caca ablakban a renderelés opcióit:
Gomb | Művelet |
---|---|
d |
Váltás a libcaca dithering metódusai között.
|
a |
A libcaca antialiasing ki-/bekapcsolása.
|
b |
A libcaca háttérbe küldése.
|
A libcaca
figyel pár
környezeti változót is:
Állítsd be a javasolt caca vezérlőt, pl. ncurses, slang, x11.
Megadja a sorok és oszlopok számát, pl. 128x50.
Megadja a használni kívánt betűtípust, pl. fixed, nexus.
Használd a -framedrop kapcsolót ha a számítógéped nem elég gyors az összes képkocka rendeléséhez.
Ezt a vezérlőt egy általános vezérlőként terveztük meg és vezettük be bármilyen, VESA VBE 2.0 kompatibilis BIOS-szal rendelkező monitorkártya esetében. A másik előnye ennek a vezérlőnek, hogy megpróbálja használni a TV kimenetet. VESA BIOS EXTENSION (VBE) Version 3.0 Dátum: 1998. szeptember 16. (70. oldal) ezt írja:
Duál-Vezérlős Tervezés. A VBE 3.0 támogatja a duál-vezérlős tervezést, feltételezve hogy általában mindkét vezérlőt ugyanaz az OEM biztosítja, egy BIOS ROM vezérlésével ugyan azon a grafikus kártyán, lehetséges az alkalmazás számára elrejteni azt a tényt, hogy valójában két vezérlő van jelen. Ez ugyan megakadályozza a vezérlők egyidejűleg történő egyedi használatát, azonban lehetővé teszi a VBE 3.0 előtt kiadott alkalmazások normális működését. A 00h VBE funció (Vezérlő információkkal tér vissza) a két vezérlő kombinált információit adja vissza, beleértve a használható módok kombinált listáját. Ha az alkalmazás kiválaszt egy módot, a megfelelő vezérlő aktiválódik. Az összes többi VBE funkció ezután az aktív vezérlővel dolgozik.
Így van esélyed a TV kimenet használatára ezzel a vezérlővel. (Gondolom a TV-out legtöbbször legalább egyedülálló fej vagy egyedüli kimenet.)
ELŐNYÖK
Van esélyed a film nézésre akkor is ha a Linux nem ismeri a videó hardveredet.
Nem kell telepítened semmiféle grafikus dolgot a Linuxodra (mint pl. X11 (AKA XFree86), fbdev és így tovább). Ez a vezérlő fut szöveges-módban.
Jó eséllyel működő TV-kimenetet kapsz. (Legalábbis az ATI kártyákon).
Ez a vezérlő meghívja az int 10h
kezelőt így nem
emulátor - igazi dolgokat hív az
igazi BIOS-ban valós-módban
(valójában vm86 módban).
Használhatod a VIDIX-et vele, így gyorsított videó megjelenítést kapsz és TV kimenetet egy időben! (Javasolt az ATI kártyákhoz.)
Ha VESA VBE 3.0+-od van, és megadtad a monitor-hfreq, monitor-vfreq, monitor-dotclock-ot valahol (konfigurációs fájlban vagy paranccsorban), a lehető legjobb frissítési rátát kapod. (Általános Időzítő Formulát használva). Ezen képesség engedélyezéséhez meg kell adnod a monitorod összes opcióját.
HÁTRÁNYOK
Csak x86 rendszereken működik.
Csak a root
használhatja.
Jelenleg csak Linux alatt elérhető.
A VESA PARANCSSORI KAPCSOLÓI
opts
jelenleg felismert: dga
a dga mód használatához és
nodga
a dga mód letiltásához. A dga módban engedélyezheted
a dupla bufferelést a -double kapcsolóval. Megjegyzés: ezen
paraméterek elhagyásával engedélyezed a dga mód automatikus
detektálását.
ISMERT PROBLÉMÁK ÉS MEGOLDÁSAIK
Ha telepítettél NLS betűtípust a Linux rendszeredre és VESA vezérlőt használsz szöveges-módban, akkor az MPlayerből való kilépés után a ROM betűtípusa lesz betöltve a nemzeti helyett. A nemzeti betűkészletet újra betöltheted pl. a Mandrake/Mandriva disztribúcióban található setsysfont nevű segédprogram használatával. (Tanács: Ugyan ez a segédprogram használható az fbdev honosítására is).
Some Linux graphics drivers don't update active BIOS mode in DOS memory. Tehát ha ilyen problémáid vannak - mindig csak szöveges módban használd a VESA vezérlőt. Különben a szöveges mód (#03) aktiválódik mindenképp és újra kell indítanod a számítógépedet.
Gyakran a VESA vezérlő bezárása után fekete képernyőt kapsz. Hogy visszaállítsd a képernyődet az eredeti állapotába - egyszerűen csak válts át másik konzolra (az Alt+F<x> gombok megnyomásával) majd válts vissza ugyanígy.
A működő TV kimenethez be kell dugnod a TV-csatlakozót mielőtt betöltene a PC-d, mivel a videó BIOS csak egyszer, a POST eljárás során inicializálja magát.
Ha lehet, kerüld el! Az X11-es kimenetnek (megosztott memória kiterjesztést használnak), nincs semmilyen hardveres támogatásuk. Tudja ugyan (MMX/3DNow/SSE által gyorsítva, de így is lassan) a szoftveres méretezést, használhatod a -fs -zoom kapcsolókat. A legtöbb hardverben benne van a hardveres méretezés támogatása, használd a -vo xv kimenetet hozzá vagy a -vo xmga-t a Matrox kártyákhoz.
A probléma az, hogy a legtöbb kártya vezérlője nem támogatja a hardveres gyorsítást a második fejen/TV-n. Ezekben az esetekben zöld/kék színű ablakot látsz a film helyett. Az ilyen esetekben jön jól ez a vezérlő, de erős CPU-val kell rendelkezned a szoftveres méretezés használatához. Ne használd az SDL vezérlő szoftveres kimenetét+méretezőjét, annak még rosszabb a képminősége!
A szoftveres méretezés nagyon lassú, jobb, ha megpróbálsz videó módot váltani inkább. Az egyszerűbb. Lásd a DGA rész modeline-jait, és írd be őket az XF86Config fájlba.
Ha XFree86 4.x.x-ed van: használd a -vm kapcsolót. Ez átvált egy olyan felbontásra, amin elfér a film. Ha mégsem:
XFree86 3.x.x-szel: körkörösen végigmehetsz az elérhető felbontásokon a Ctrl+Alt+Keypad + és Ctrl+Alt+Keypad - gombokkal.
Ha nem találod a beszúrt módokat, nézd át az XFree86 kimenetét. Néhány vezérlő nem tud alacsony pixelclock-ot használni, ami szükséges az alacsony felbontású videó módokhoz.
BEVEZETÉS. A VIDIX a VIDeo Interface for *niX rövidítése. A VIDIX-et egy felhasználói térben használható vezérlőként tervezték és mutatták be, mely olyan videó teljesítményt nyújt, mint az mga_vid a Matrox kártyákon. Ráadásul könnyen portolható.
Ezt az interfészt úgy tervezték meg, hogy illeszkedjen a már létező videó gyorsító interfészekhez (mga_vid, rage128_vid, radeon_vid, pm3_vid) egy állandó sémával. Magas szintű interfészt biztosít a BES (BackEnd Scalers) néven ismert chip-ekhez vagy az OV-hoz (Video Overlays). Nem nyújt a grafikus szerverekhez hasonló alacsony szintű interfészt. (Nem akarok versenyezni a z X11 csapattal a grafikus mód váltásban). Pl. ezen interfész fő célja a videó lejátszás sebességének maximalizálása.
HASZNÁLAT
Használhatsz egyedülálló videó kimeneti vezérlőt: -vo xvidix. Ez a vezérlő a VIDIX-es technológia X11-es front end-je. X szerver kell hozzá és csak X szerverrel működik. Jegyezd meg, hogy mivel közvetlenül éri el a hardvert az X vezérlő megkerülésével, a grafikus kártya memóriájában lévő pixmap-ok sérülhetnek. Ezt elkerülheted az X által használt videó memória korlátozásával, amit az XF86Config "VideoRam" opciójával adhatsz meg az eszköz részben. Ajánlott ezt a kártyádon lévő memória mínusz 4 MB-ra állítani. Ha kevesebb, mint 8 MB videó ram-od van, akkor ehelyett használhatod az "XaaNoPixmapCache" opciót a képernyő részben.
Van egy konzolos VIDIX vezérlő: -vo cvidix. Ehhez egy működő és inicializált frambuffer kell a legtöbb kártyánál (vagy különben csak összeszemeteled a képernyőd), és hasonló eredményt kapsz, mint a -vo mga vagy -vo fbdev kapcsolókkal. Az nVidia kártyák azonban képesek tényleges grafikus kimenetre igazi szöveges konzolon. Lásd az nvidia_vid részt a további információkért. Hogy megszabadulj a határoló szövegektől és a villogó kurzortól, próbálj ki valami ilyesmit:
setterm -cursor off > /dev/tty9
(feltéve, hogy a tty9
eddig nem volt használva)
és ezután válts a tty9
-re.
Másrész a -colorkey 0-t ajánlott megadni egy "háttérben"
futó videónál, mivel a helyes működése a colorkey funkcionalításától
függ.
Használhatod a VIDIX aleszközt, ami számos videó kimeneti vezérlővel együtt használható, például: -vo vesa:vidix (csak Linux) és -vo fbdev:vidix.
Igazából nem számít, hogy melyik videó kimeneti vezérlőt használod együtt a VIDIX-szel.
KÖVETELMÉNYEK
A videó kártyának grafikus módban kell lennie (kivéve az nVidia kártyákat a -vo cvidix kimeneti vezérlővel).
Az MPlayer videó kimeneti vezérlőnek tudnia kell aktiválni a videó módot és információkat kell tudnia átadni a VIDIX aleszköznek a szerver videó karakterisztikájáról.
HASZNÁLATI MÓDOK. Ha a VIDIX-et aleszközként használod (-vo vesa:vidix), akkor a videó mód konfigurációt a videó kimeneti vezérlő (röviden vo_server) végzi. Ezért az MPlayer parancssorában ugyan azokat a kulcsokat használhatod, mint a vo_server-rel. Ráadásul ismeri a -double kulcsot mint globálisan látható paramétert. (Javaslom ezen kulcs VIDIX-szel történő használatát legalább az ATI kártyával). Ami a -vo xvidix-et illeti, most csak a következő kapcsolókat ismeri: -fs -zoom -x -y -double.
A parancssorban harmadik alkapcsolóként megadhatod közvetlenül a VIDIX vezérlőjét:
mplayer -vo xvidix:mga_vid.so -fs -zoom -double file.avi
vagy
mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 file.avi
De ez veszélyes, inkább ne használd. Ebben az esetben a megadott vezérlő lesz kényszerítve, így az eredmény megjósolhatatlan (lefagyaszthatja a számítógéped). CSAK akkor csinálj ilyet, ha teljesen biztos vagy benne, hogy működik és az MPlayer nem teszi meg automatikusan. Ez esetben kérjük jelezd ezt a fejlesztőknek is. A helyes módszer a VIDIX argumentumok nélküli használata, és így az automatikus detektálás engedélyezése.
Mivel a VIDIX-nek direkt hardver elérés kell, futtathatod root-ként vagy beállíthatod a SUID bit-et az MPlayer binárisán (Figyelem: Ez biztonsági kockázatot jelent!). Alternatívaként használhatsz egy speciális kernel modult, így:
Töltsd le az svgalib (pl. 1.9.x-es) fejlesztői verzióját.
Fordítsd le a modult az svgalib_helper könyvtárban (az svgalib-1.9.17/kernel/ könyvtáron belül található, ha az svgalib oldaláról töltötted le a forrást) és insmod-old.
A /dev könyvtárban a megfelelő eszközök létrehozásához add ki a
make device
parancsot az svgalib_helper könyvtárban rootként.
Ezután futtasd le a configure-t újra és add meg neki a
--enable-svgalib_helper és a
--extra-cflags=/eleresi/ut/svgalib_helper/forrasahoz/
kernel/svgalib_helper
paramétereket, ahol a /eleresi/ut/svgalib_helper/forrasahoz/
könyvtárat
az svgalib_helper kicsomagolt forrását tartalmazó könyvtárnak megfelelően kell beállítani.
Forgass újra.
Jelenleg a legtöbb ATI kártya natívan támogatott, a Mach64-től a legújabb Radeonokig.
Két lefordított bináris van: radeon_vid a Radeonhoz és rage128_vid a Rage 128 kártyákhoz. Előírhatsz egyet vagy hagyhatod a VIDIX rendszernek automatikusan kipróbálni az összes elérhető vezérlőt.
A Matrox G200, G400, G450 és G550 működik a jelentések szerint.
A vezérlő támogatja a videó equalizereket és majdnem olyan gyors, mint a Matrox framebuffer.
Van egy vezérlő a Trident Cyberblade/i1 chipset-hez, ami a VIA Epia alaplapokon található.
A vezérlőt Alastair M. Robinson írta és tartja karban.
Habár van vezérlő a 3DLabs GLINT R3 és Permedia3 chip-ekhez, senki sem tesztelte le, így örömmel fogadjuk a jelentéseket.
Egy egyedülálló tulajdonsága az nvidia_vid vezérlőnek a sima, egyszerű, csak szöveges konzolon történő videó megjelenítés - framebuffer vagy X varázslat és egyebek nélkül. Ehhez a cvidix videó kimenetet kell használni, amint az itt látható:
mplayer -vo cvidix pelda.avi
"A DirectFB egy grafikus függvénykönyvtár, amit a beágyazott rendszereket szem előtt tartva terveztek meg. Maximális hardver gyorsítási teljesítményt ad minimális erőforrás felhasználással és terheléssel." - idézet a http://www.directfb.org oldalról.
Ki fogom hagyni a DirectFB tulajdonságokat ebből a fejezetből.
Mivel az MPlayer nem támogatott, mint "video provider" a DirectFB-ben, ez a kimeneti vezérlő engedélyezi a videó lejátszást DirectFB-n keresztül. Természetesen gyorsított lesz, az én Matrox G400-amon a DirectFB sebessége majdnem megegyezik az XVideo-éval.
Mindig próbáld meg a DirectFB legújabb verzióját használni. Megadhatsz DirectFB opciókat a parancssorban a -dfbopts kapcsoló használatával. A réteg választás egy aleszköz módszerével történhet, pl.: -vo directfb:2 (-1-es réteg az alapértelmezett: automatikus keresés)
Kérjük olvasd el a fő DirectFB részt az általános információkért.
Ez a videó kimeneti vezérlő engedélyezi a CRTC2-t (a második fejen) a Matrox G400/G450/G550 kártyákon, a videót az első fejtől függetlenül jelenítve meg.
Ville Syrjala-nak van egy README-je és egy HOWTO-ja a weboldalán, ami leírja, hogy hogyan hozhatod működésbe a DirectFB TV kimenetet a Matrox kártyákon.
Az első DirectFB verzió, amit működésre tudtunk bírni a
0.9.17 volt (hibás, kell hozzá az a surfacemanager
javítás a fenti URL-ről). A CRTC2 kód portolását az
mga_vid-be évekig terveztük, a
javításokat szívesen fogadjuk.
Az MPlayer támogatja a Siemens DVB chipset-tel szerelt kártyákat olyan gyártóktól, mint a Siemens, Technotrend, Galaxis vagy a Hauppauge. A legújabb DVB vezérlők elérhetőek a Linux TV oldalról. Ha szoftveres átkódolást akarsz csinálni, legalább egy 1GHz-es CPU-ra lesz szükséged.
A configure megtalálja a DVB kártyádat. Ha mégsem, kényszerítheted:
./configure --enable-dvb
Majd fordíts és telepíts, mint rendesen.
HASZNÁLAT. A hardveres dekódolás szabványos MPEG-1/2 videó folyamot és/vagy MPEG audiót tartalmazó fájlok esetén elvégezhető ezzel a paranccsal:
mplayer -ao mpegpes -vo mpegpes file.mpg|vob
Bármilyen más típusú videó folyam esetén MPEG-1-be történő átkódolás szükséges, ezért lassú és nem éri meg a vesződést, különösen ha lassú a géped. Egy ehhez hasonló paranccsal végezhető el:
mplayer -ao mpegpes -vo mpegpesyourfile.ext
mplayer -ao mpegpes -vo mpegpes -vf expandyourfile.ext
Figyelj rá, hogy a DVB kártyák PAL esetén csak a 288-as és 576-os, NTSC esetén a 240-es és 480-as magasságokat ismerik. Muszáj átméretezned más magassághoz a scale=szélesség:magasság kapcsolóval és a kívánt szélesség és magasság megadásával a -vf kapcsolónál. A DVB kártyák számos szélességet elfogadnak, mint például 720, 704, 640, 512, 480, 352 stb. és hardveres méretezést alkalmaznak vízszintes irányban, így a legtöbb esetben nem kell vízszintesen méretezned. Egy 512x384 (4:3 arányú) MPEG-4 (DivX)-hez:
mplayer -ao mpegpes -vo mpegpes -vf scale=512:576
Ha szélesvásznú filmed van és nem akarod átméretezni teljes magasságúra, használhatod az expand=w:h szűrőt a fekete sávok hozzáadásához. Egy 640x384 MPEG-4 (DivX) megnézésénél:
mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 file.avi
Ha a CPU-d túl lassú a teljes méretű 720x576 MPEG-4 (DivX)-hez, próbáld meg leméretezni:
mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 file.avi
Ha a sebesség nem javul, próbáld meg a függőleges leméretezést is:
mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 file.avi
Az OSD és a feliratokhoz használd az expand szűrő OSD tulajdonságát. Így, az expand=w:h vagy expand=w:h:x:y helyett írj expand=w:h:x:y:1-et (az ötödik paraméter, a :1 a végén engedélyezi az OSD render-elést). A képet egy kicsit feljebb szeretnéd vinnni valószínűleg, hogy nagyobb hely maradjon a feliratoknak. Vagy akár a feliratokat is felviheted, ha a TV képernyőjén kívülre esnek, használd a -subpos <0-100> kapcsolót ennek beállításához (a -subpos 80 egy jó választás).
A nem-25fps-es filmek PAL TV-n vagy lassú CPU-n való lejátszásához még add hozzá a -framedrop kapcsolót.
Az MPEG-4 (DivX) fájlok méretarányának megtartásához és az optimális méretezési paraméterekhez (hardveres vízszintes és szoftveres függőleges méretezés a helyes méretarány megtartásával) használd az új dvbscale szűrőt:
for a 4:3 TV: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1 for a 16:9 TV: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1
Digital TV (DVB bemeneti modul). A DVB kártyád segítségével digitalis TV-t is nézhetsz.
A scan és szap/tzap/czap/azap programoknak telepítve kell lenniük; mind benne vannak a drivers csomagban.
Ellenőrizd, hogy a vezérlőid megfelelően működnek egy olyan programmal, mint a dvbstream (ez a DVB bemeneti modul alapja).
Most már fordíthatsz egy ~/.mplayer/channels.conf fájlt, a szap/tzap/czap/azap által elfogadott szintaktikával, vagy engeded a scannek, hogy elkészítse neked.
Ha több típusú kártyád van (pl. műholdas, földi, kábel és ATSC), a csatorna fájlokat elmentheted ~/.mplayer/channels.conf.sat, ~/.mplayer/channels.conf.ter, ~/.mplayer/channels.conf.cbl, és ~/.mplayer/channels.conf.atsc néven, így az MPlayernek implicit javaslod ezen fájlok használatát a ~/.mplayer/channels.conf helyett és csak azt kell megadnod, hogy melyik kártyát akarod használni.
Győződj meg róla, hogy csak Free to Air csatornák vannak a channels.conf fájlodban, különben MPlayer kódolatlan átvitelre fog várni.
Az audió és a videó mezőkidben használhatsz kiterjesztett szintaxist: ...:pid[+pid]:... (egyenként maximálisan 6 pid); ebben az esetben az MPlayer beleveszi a stream-be az összes jelzett pid-et, plusz a pid 0-t (ami a PAT-ot tartalmazza). Mindig ajánlott a PMT és MCR pid bevétele minden sorba a megfelelő csatornáknál (ha ismered őket). Megadhatsz 8192-őt is, ez kiválaszt minden pid-et ezen a frekvencián, majd ezután a TAB-bal tudsz váltani a programok között. Ez nagyobb sávszélességet igényel, de az olcsóbb kártyák mindig átviszik az összes csatornát legalább a kernelig, így ezeknél nem jelent számottevő különbséget. Egyéb lehetőségek: televideo pid, második audió sáv, stb.
Ha az MPlayer rendszeren panaszkodik
"Túl sok videó/audió csomag a bufferben"
"Too many video/audio packets in the buffer"
üzenettel vagy az audió és videó közötti szinkronizáció növekvő eltérését tapasztalod, nézd meg, hogy van-e PCR pid a folyamban (szükséges az átvivő bufferelésének történő megfeleléshez) és/vagy próbáld meg használni a libavformat-ban lévő MPEG-TS demuxer-t a -demuxer lavf -lavfdopts probesize=128 opció parancssorhoz történő hozzáadásával.
A csatornák beállításainak kilistázásához futtast ezt:
mplayer dvb://
Ha egy adott csatornát akarsz nézni, mint pl. az R1-et, írd be:
mplayer dvb://R1
Ha egynél több kártyád van, meg kell adnod a kártya számát is, ahol a csatorna látható (pl. 2) az alábbi szintaxissal:
mplayer dvb://2@R1
A csatornaváltáshoz nyomd meg a h (következő) vagy a k (előző) gombot vagy használd az OSD menüt.
Az audió vagy videó folyam ideiglenes kikapcsolásához másold be a következőket a ~/.mplayer/input.conf fájlba:
% set_property switch_video -2 & step_property switch_video ? set_property switch_audio -2 ^ step_property switch_audio
(A billentyűket átírhatod a kívántra.) Ha megnyomod a switch_x -2 parancshoz tartozó billentyűt, a megfelelő folyam bezárásra kerül; ha a step_x-hez tartozót, akkor a folyam újra meg lesz nyitva. Ügyelj rá, hogy ez a kapcsolási mechanizmus nem a várt módon fog működni, ha a több audió és videó folyam van.
Lejátszás közben (nem rögzítés közben), a dadogás és 'A rendszeret túl lassú ehhez' üzenetek megelőzése érdekében javasolt a
-mc 10 -speed 0.97 -af scaletempo
használata a parancssorban, a scaletempo paramétereinek megfelelő beállításával.
Ha a ~/.mplayer/menu.conf fájlod tartalmazza a
<dvbsel>
bejegyzést, úgy, mint az
etc/dvb-menu.conf példafájl (ezt felhasználhatod a
~/.mplayer/menu.conf fájl felülírásához), a fő menüben
egy al-menü bejegyzést láthatsz, aminek a segítségével választhatsz a
channels.conf-ban előre beállított csatornák közül,
melyet az elérhető kártyák listája követhet, ha egynél több
MPlayer által használható kártya van.
Ha el akarod menteni a programot a lemezre, használhatod az alábbi parancsot:
mplayer -dumpfiler1.ts
-dumpstream dvb://R1
Ha inkább másik formátumban akarsz rögzíteni (újrakódolni), kiadhatsz egy ehhez hasonló parancsot:
mencoder -or1.avi
-ovc xvid -xvidencopts bitrate=800 \ -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1
Olvasd el a man oldalt a kapcsolók listájához, amiket megadhatsz a DVB bemeneti modulnak.
A JÖVŐ. Ha kérdésed van vagy további bejelentésekről szeretnél tudomást szerezni és részt venni a beszélgetéseinkben, csatlakozz az MPlayer-DVB levelezési listához. Kérjük vedd figyelembe, hogy a lista nyelve az angol.
A jövőben tervezzük a DVB kártyák által biztosított natív OSD használatát az OSD menü és a feliratok megjelenítéséhez.
Az MPlayer támogatja a hardveresen gyorsított lejátszást a Creative DXR2 kártyával.
Mindenek előtt megfelelően telepített DXR2 vezérlő kell. A vezérlőt és a telepítési útmutatót megtalálhatod a DXR2 Resource Center oldalán.
HASZNÁLAT
TV kimenet engedélyezése.
Átlapolásos kimenet bekapcsolása X11-en.
Ezzel a kapcsolóval a DXR2 vezérlő irányítható.
A DXR2-n használt átlapolásos chipset elég rossz minőségű, de az alapértelmezett beállítások mindenkinél működnek. Az OSD használható az átlapolással (nem TV-n) a színkulcsban történi kirajzolással. Az alapértelmezett színkulcs beállításokkal változó eredményeket kaphatsz, valószínűleg látni fogod a színkulcsot a karakterek körül vagy más egyéb érdekes effektet. De ha megfelelően beállítod a színkulcsot, elfogadható eredményt kapsz.
Kérjük nézd meg a man oldalt a használható kapcsolókhoz.
Az MPlayer támogatja a hardveresen gyorsított lejátszást a Creative DXR3 és Sigma Designs Hollywood Plus kártyákkal. Ezek a kártyák a Sigma Designs em8300 MPEG dekódoló chip-jét használják.
Mindenek előtt megfelelően telepített DXR3/H+ vezérlő kell, 0.12.0 verziójú vagy régebbi. A vezérlőket és a telepítési utasításokat megtalálhatod a DXR3 & Hollywood Plus for Linux oldalon. A configurenak automatikusan meg kell találnia a kártyádat, és a fordításnak hiba nélkül le kell futnia.
HASZNÁLAT
eszköz
Az overlay az átlapolást aktiválja a TV-out helyett. A helyes
működéshez megfelelően beállított overlay setup kell. A legegyszerűbb út
az átlapolás beállításához először az autocal majd az mplayer futtatása
dxr3 kimenettel és az átlapolás bekapcsolása nélkül futtasd a dxr3view-t. A
dxr3view-ban állíthatsz az átlapolási beállításokon és láthatod az effekteket
valós időben, talán ezt a funkciót az MPlayer GUI
is támogatni fogja a jövőben. Ha az átlapolás megfelelően be lett állítva,
többet nem kell használnod a dxr3view-t. A prebuf bekapcsolja
az előbufferelést. Az előbufferelés az em8300 chip egy olyan képessége, mellyel
egynél több képkockát tud megtartani egy időben. Ez azt jelenti, hogy ha
előbuffereléssel futtatod az MPlayert, az megpróbálja
folyamatosan tele tartani a videó buffert adatokkal. Ha lassú gépen vagy, az
MPlayer közel vagy pontosan 100% CPU kihasználtságot
fog okozni. Ez különösen gyakori ha egyszerű MPEG streamet játszasz le (pl.
DVD-k, SVCD-k, stb.), mivel ekkor az MPlayernek nem
kell újrakódolnia MPEG-be, és nagyon gyorsan tölti a buffert.
Az előbuffereléssel a videó lejátszás sokkal
kevésbé érzékeny az többi program CPU foglalására, nem fog képkockát eldobni,
hacsak az alkalmazások nem foglalják túl hosszú ideig a CPU-t. Ha előbufferelés
nélkül futtatod, az em8300 sokkal érzékenyebb a CPU terhelésre, így nagyon
javasolt, hogy használd az MPlayer
-framedrop kapcsolóját a további szinkronvesztés elkerüléséhez.
A sync bekapcsolja az új szinkron-motort. Ez jelenleg még
egy tesztelés alatt lévő képesség. A bekapcsolt szinkron tulajdonsággal az
em8300 belső órája folyamatosan figyelve lesz, és ha eltér az
MPlayer órájától, resetel, ezzel az em8300-t az
összes hátralévő képkocka eldobására kényszeríti.
A norm=x beállítja a DXR3 kártya TV normáját külső segédeszköz,
pl. em8300setup nélkül. A helyes norma értékek: 5 = NTSC, 4 = PAL-60, 3 = PAL.
Speciális norma a 2 (auto-beállítás PAL/PAL-60 használatával) és az 1
(auto-beállítás PAL/NTSC használatával) mivel ezek a film képkocka rátájának
segítségével állapítják meg a normát. A norm = 0 (alapértelmezett) nem változtat
a jelenlegi normán.
eszköz
= a használni kívánt eszköz
száma több em8300 kártya esetén.
Ezen opciók bármelyike elhagyható.
:prebuf:sync látszólag nagyszerűen működik MPEG-4 (DivX)
filmek lejátszásakor. Többen problémákról számoltak be MPEG-1/2 fájlok
lejátszásakor bekapcsolt prebuf esetén. Először mindenféle opció nélkül nézd
meg, majd ha szinkron vagy DVD felirat problémáid vannak, adj egy esélyt a
:sync-nek.
X
Audió kimenethez, ahol az X
az eszköz száma
(0 ha egy kártya).
xxxxx
A em8300 nem tud lejátszani 44100Hz-nél alacsonyabb mintavételű hangot. Ha a mintavételi ráta 44100Hz alatt van, válassz 44100Hz-et vagy 48000Hz-et, attól függően, hogy melyik van közelebb. Pl. ha egy film 22050Hz-et használ, válaszd a 44100Hz-et, mivel 44100 / 2 = 22050, ha 24000Hz-et, válaszd a 48000Hz-et, mert 48000 / 2 = 24000 és így tovább. Ez nem működik digitális audió kimenettel (-ac hwac3).
Nem-MPEG tartalom em8300-on történő nézéséhez (pl. MPEG-4 (DivX) vagy
RealVideo) meg kell adnod egy MPEG-1 videó szűrőt, mint pl. a
libavcodec
(lavc).
Lásd a man oldalt a további infókért a -vf lavc
kapcsolóról.
Jelenleg nem lehet az em8300 fps értékét
módosítani, ami azt jelenti, hogy fixen 30000/1001 fps. Emiatt javasolt
a -vf lavc=minőség
:25
kapcsoló használata, különösen ha előbufferelést használsz. Hogy miért
25 és nem 30000/1001? Nos, a dolog úgy áll, hogy ha 30000/1001-et
használsz, a kép kicsit ugrálós lesz. Ennek az okát nem tudjuk. Ha
beállítod valahova 25 és 27 közé, a kép stabillá válik. Jelenleg mást
nem tehetünk, elfogadjuk ezt tényként.
Habár a DXR3 vezérlő tud némi OSD-t tenni az MPEG-1/2/4 videóra, sokkal rosszabb minősége van, mint az MPlayer tradícionális OSD-jének és számos frissítési problémája is van. A fenti parancssor először is átkonvertálja a bemeneti videót MPEG-4-be (ez szükséges, bocs), majd alkalmazza rá az expand szűrőt, ami nem terjeszt ki semmit (-1: alapértelmezett), de a normális OSD-t teszi a képre (ezt csinálja az "1" a végén).
A em8300 támogatja az AC-3 audió lejátszását (térhatású hang) a kártya digitális audió kimenetén keresztül. Lásd a -ao oss kapcsolót fent, a DXR3 kimenetének meghatározására használható a hangkártya helyett.
Ez egy képernyő-vezérlő (-vo zr) számos MJPEG
mentő/lejátszó kártyához (DC10+ és Buz-zal tesztelve, és működnie kell
LML33, a DC10 esetén is). A vezérlő úgy működik, hogy kódolja a képkockát
JPEG-be majd kiküldi a kártyára. A JPEG kódoláshoz a
libavcodec
-et használja, ami
ezért szükséges hozzá. Egy speciális cinerama móddal
igazi nagyképernyőn nézhetsz filmeket, feltéve, hogy két felvevőd és két
MJPEG kártyád van. A felbontástól és a minőségi beállításoktól függően ez
a vezérlő rengeteg CPU erőt igényel, ne felejtsd el megadni a
-framedrop kapcsolót, ha lassú a géped. Megjegyzés: Az
én AMD K6-2 350MHz-es gépem (-framedrop-pal) eléggé
elfogadható volt VCD méretű anyag nézésekor és leméretezett filmnél.
Ez a vezérlő a http://mjpeg.sf.net címen található kernel vezérlővel társalog, így először ezt kell beizzítanod. Az MJPEG kártya jelenléte automatikusan detektálva lesz a configure script által, ha ez nem sikerül, kényszerítsd a detektálásra a
./configure --enable-zr
kapcsolóval.
A kimenet számos kapcsolóval szabályozható, a kapcsolók hosszú leírással megtalálhatóak a man oldalon, egy rövidebb listát a
mplayer -zrhelp
parancs lefuttatásával kaphatsz.
Az olyan dolgokat, mint méretezés és OSD (on screen display) ez a vezérlő nem kezeli, de megoldhatóak videó szűrőkkel. Például tegyük fel, hogy van egy filmed 512x272-es felbontással és teljes képernyőn akarod nézni a DC10+-eden. Három lehetőséged van, méretezned kell a filmet 768, 384 vagy 192-es szélességre. Teljesítmény és minőségi okokból én a 384x204-re való méretezést választanám, gyors bilineáris szoftveres méretező használatával. A parancssor:
mplayer -vo zr -sws 0 -vf scale=384:204 movie.avi
A levágás a crop szűrő segítségével valósítható meg és magával a vezérlővel. Feltéve, hogy a film túl széles a megjelenítéshez a Buz-odon és hogy a -zrcrop-ot akarod használni a film szűkítéséhez, a következő parancs a te barátod:
mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi
Ha használni akarod a crop szűrőt, ez kell:
mplayer -vo zr -vf crop=720:320:80:0 benhur.avi
Extra esetben a -zrcrop meghívja a cinerama módot, pl. a filmet több TV vagy beamer között sugározhatod egy nagyobb kép létrehozásához. Feltéve, hogy két beamer-ed van. A bal oldali a Buz-odhoz csatlakozik a /dev/video1-en, a jobb oldali a DC10+-odhoz a /dev/video0-án. A film felbontása 704x288. Továbbá tegyük fel azt is, hogy a jobb beamer-t fekete-fehéren szeretnéd, a balnak pedig 10-es minőségű JPEG képeket kell adnia. Ekkor a következő parancsot kell használnod:
mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
-zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 \
movie.avi
Láthatod, hogy a második -zrcrop előtt feltűnő opciók csak a DC10+-re, a második -zrcrop után lévők csak a Buz-ra vonatkoznak. A cinerama-ban használható MJPEG kártyák maximális száma négy, így egy 2x2-es vidi-falat építhetsz.
Végül egy fontos megjegyzés: Ne indítsd el vagy állítsd meg a XawTV-t a lejátszó eszközön a lejátszás alatt, ez összeomlasztja a számítógépedet. Legjobb ELŐSZÖR elindítani a XawTV-t, EZUTÁN elindítani az MPlayert, várni, míg az MPlayer végez, és EZUTÁN megállítani a XawTV-t.
Ez a vezérlő képes a lejátszásra a Blinkenlights UDP protokol felhasználásával. Ha nem tudod, hogy mi az a Blinkenlights, vagy az utóda az Arcade, nézz utána. Habár ez a legutoljára használt videó kimeneti vezérlő, kétségkívül ez a legjobb, amit az MPlayer nyújtani tud. Csak nézz meg pár Blinkenlights dokumentációs videót. Az Arcade videóban láthatod a Blinkenlights kimeneti vezérlőt akcióban a 00:07:50-en.
Linux alatt két módon bírhatod működésre a G400 TV kimenetét:
a Matrox G450/G550 TV-kimenet utasításaiért lásd a következő részt!
A vezérlő és a HAL modul használatával, mely elérhető a Matrox oldalán. Ezzel X-et kapsz a TV-n.
Ez a módszer nem nyújt gyorsított lejátszást Windows alatt! A második fejnek csak YUV framebuffer-e van, a BES (Back End Scaler, a YUV méretező a G200/G400/G450/G550 kártyákon) nem működik rajta! A Windows-os vezérlők ezt valahogy megkerülik, talán 3D motort használnak a nagyításhoz és a YUV framebuffer-t a nagyított képek megjelenítéséhez. Ha tényleg X-et akarsz használni, válaszd a -vo x11 -fs -zoom kapcsolókat, de LASSÚ lesz, és Macrovision másolásvédelem van rajta (ezzel a Perl script-tel "megkerülheted" a Macrovisiont).
A 2.4-es kernelekben lévő matroxfb modulok használatával. A 2.2-es kernel-ekben nincs TV-out tulajdonság hozzájuk, így használhatatlanok erre. Engedélyezned kell az ÖSSZES matroxfb-specifikus tulajdonságot a fordítás alatt (kivéve a MultiHead-et) és modulokba kell fordítanod! Az I2C-t is engedélyezned kell és a matroxset, fbset és con2fb eszközöknek az elérési úton kell lenniük.
Majd töltsd be a matroxfb_Ti3026, matroxfb_maven, i2c-matroxfb,
matroxfb_crtc2
modulokat a kerneledbe. A szöveges-módú
konzolod framebuffer módba vált (nincs visszaút!).
Ezután állítsd be a monitorod és a TV-t a kedvednek megfelelően a fenti eszközökkel.
Yoh. A következő dolog, hogy a kurzort eltűntesd a tty1-ről (vagy akármiről) és kikapcsold a képernyő törlést. Futtasd le a következő parancsokat:
echo -e '\033[?25l' setterm -blank 0
vagy
setterm -cursor off setterm -blank 0
A fentieket valószínűleg beleírod egy script-be, egy képernyő törléssel együtt. A kurzor visszakapcsolása:
echo -e '\033[?25h'
vagy
setterm -cursor on
Yeah sirály. Indítsd el a film lejátszást:
mplayer -vo mga -fs -screenw 640 -screenh 512 filename
(Ha X-et használsz, most válts át matroxfb-re, például a
Ctrl+Alt+F1 gombokkal.)
Változtasd meg a 640
-et és az 512
-t,
ha másra állítottad a felbontást...
Élvezd az ultra-gyors ultra-különleges Matrox TV kimenetet (jobb mint az Xv)!
A TV kimenet támogatása ezeken a kártyákon csak nemrég jelent meg, és még nincs a a fő kernelben. Jelenleg az mga_vid modul nem használható AFAIK, mert a G450/G550-es vezérlő csak egy konfigurációban működik: az első CRTC chip (a sokkal több képességgel) az első képernyőn (a monitoron) és a második CRTC (nincs BES - a BES magyarázatához lásd a G400-as részt fent) TV-n. Így csak az MPlayer fbdev kimeneti vezérlőjét használhatod jelenleg.
Az első CRTC nem irányítható át a második fejre jelenleg. A matroxfb kernel vezérlő szerzője - Petr Vandrovec - talán készít támogatást ehhez, az első CRTC kimenetét egyszerre mindkét fejen megjelenítve, mint ahogy most is javasolt a G400-on, lásd a fenti részt.
A szükséges kernel javítás és a bővebb HOWTO letölthető: http://www.bglug.ca/matrox_tvout/
Senki sem vállal ezért semmilyen felelősséget, sem garanciát bármilyen, ezen leírásból származó kárért.
Kábel a G400-hoz. A CRTC2 csatlakozójának negyedik pin-je a kompozit videó jel. A földelés a hatodik, hetedik és nyolcadik pin. (az infót Rácz Balázs adta)
Kábel a G450-hez. A CRTC2 csatlakozójának első pin-je a kompozit videó jel. A földelés az ötödik, hatodik, hetedik és tizenötödik (5, 6, 7, 15) pin. (az infót Kerekes Balázs adta)
BEVEZETÉS. Jelenleg az ATI nem akarja támogatni semelyik TV-out chip-jét sem Linux alatt, a licenszelt Macrovision technológiájuk miatt.
ATI KÁRTYÁK TV-KIMENETÉNEK ÁLLAPOTA LINUXON
ATI Mach64: támogatja a GATOS.
ASIC Radeon VIVO: támogatja a GATOS.
Radeon és Rage128: támogatja az MPlayer! Lásd a VESA vezérlő és a VIDIX részt.
Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4: támogatja az atitvout.
Egyéb kártyák esetében lásd a VESA vezérlőt, VIDIX nélkül. Bár ehhez erős CPU kell.
Az egyeten dolog, amit tenned kell - Be kell dugnod a TV csatlakozóját, mielőtt bekapcsolnád a PC-t mivel a videó BIOS csak egyszer, a POST folyamat során inicializálja magát.
Először le KELL töltened a zárt-forrású vezérlőt az http://nvidia.com-ról. Nem írom le a telepítés és a konfiguráció lépéseit, mert ez nem tartozik ezen dokumentáció céljához.
Miután az XFree86, az XVideo és a 3D gyorsítás is megfelelően működik, írd át a kártya Device részét az XF86Config fájlban, a következő példának megfelelően (a te kártyádhoz/TV-dhez igazítva):
Section "Device" Identifier "GeForce" VendorName "ASUS" BoardName "nVidia GeForce2/MX 400" Driver "nvidia" #Option "NvAGP" "1" Option "NoLogo" Option "CursorShadow" "on" Option "TwinView" Option "TwinViewOrientation" "Clone" Option "MetaModes" "1024x768,640x480" Option "ConnectedMonitor" "CRT, TV" Option "TVStandard" "PAL-B" Option "TVOutFormat" "Composite" EndSection
Természetesen a legfontosabb a TwinView rész.
A NeoMagic chip számos laptop-ban megtalálható, pár közülük egy egyszerű analóg TV kódolóval van felszerelve, mások sokkal fejlettebbel rendelkeznek.
Analóg kódoló chip: A visszajelzések szerint megbízható TV kimenet a -vo fbdev vagy -vo fbdev2 kapcsolókkal érhető el. Kernelbe forgatott vesafb szükséges és a következő paramétereket kell megadni a kernel parancssorában: append="video=vesafb:ywrap,mtrr" vga=791. Ajánlott elindítani az X-et, majd átváltani konzol módba pl. a Ctrl+Alt+F1-gyel. Ha nem sikerül elindítani az X-et az MPlayer konzolból történő elindítása előtt, a videó lassú és zavaros lesz (a magyarázatokat szívesen fogadjuk). Jelentkezz be a konzolodra majd add ki a következő parancsot:
clear; mplayer -vo fbdev -zoom -cache 8192 dvd://
Ezután a filmet konzol módban, kb. a laptop LCD képernyőjének felét kitöltve kell látnod. A TV-re váltáshoz nyomd meg az Fn+F5-öt háromszor. Tesztelve Tecra 8000-en, 2.6.15 kernel vesafb-vel, ALSA v1.0.10-en.
Chrontel 70xx kódoló chip: Az IBM Thinkpad 390E és talán más Thinkpad-okban és notebook-okban található.
A -vo vesa:neotv_pal-t kell használnod a PAL-hoz vagy a -vo vesa:neotv_ntsc-t az NTSC-hez. TV kimenetet biztosít az alábbi 16 bpp és 8 bpp módokban:
NTSC 320x240, 640x480 és talán 800x600 is.
PAL 320x240, 400x300, 640x480, 800x600.
Az 512x384-es módot nem támogatja a BIOS. Át kell méretezned a képet egy másik felbontásra a TV kimenet aktiválásához. Ha egy képet látsz a képernyőn 640x480-ban vagy 800x600-ban, de semmit 320x240-ben vagy kisebb felbontáson, ki kell cserélned két táblázatot a vbelib.c fájlban. Lásd a vbeSetTV függvényeket a részletekért. Kérlek keresd meg a szerzőt ebben az esetben.
Ismert dolgok: Csak VESA, semmilyen más beállítás, pl. fényesség, kontraszt, blacklevel, flickfilter nincs implementálva.
Az MPlayer bináris csomagjai számos forrásból elérhetőek. Van egy listánk a számos rendszerhez elkészített nem hivatalos csomagokról a weboldalunkon. Azonban ezen csomagok közül egyikhez sem nyújtunk támogatást. A problémáidat a szerzőknek jelezd, ne nekünk.
Debian csomag készítéséhez futtasd az alábbi parancsot az MPlayer forrásának könyvtárában:
fakeroot debian/rules binary
Ha különleges kapcsolókat akarsz átadni a configure-nak, állítsd be a
DEB_BUILD_OPTIONS
környezeti változót. például ha
szeretnél GUI-t és OSD menü támogatást, ezt kell használnod:
DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary
Pár változót is átadhatsz a Makefile-nak. Például ha gcc 3.4-et szeretnél használni a fordításhoz annak ellenére, hogy nem az az alapértelmezett fordító:
CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary
A forrás fa kitakarításához add ki a következő parancsot:
fakeroot debian/rules clean
Rendszergazdaként a szokásos módszerrel telepíthető a .deb csomag:
dpkg -i ../mplayer_verziószám
.deb
Az RPM csomag elkészítéséhez add ki a következő parancsot az MPlayer forrás könyvtárában:
FIXME: megfelelő parancs beszúrása
Az MPlayer működik ARM CPU-val rendelkező PDA-kon is,
mint páldául a Sharp Zaurus, vagy a Compaq Ipaq. Megszerzésének legegyszerűbb
módja az OpenZaurus webhelyéről
történő letöltés. Ha saját erődből akarod lefordítani, érdemes körülnézni az
mplayer
és a
libavcodec
Openzaurus buildroot könyvtárakban, ezek ugyanis mindig tartalmazzák a legújabb
Makefile-okat és patcheket az MPlayer SVN verziójának
libavcodec
-kel történő lefordításához.
Ha GUI frontend-et is szeretnél, használd az xmms-embedded-et.
Az MPlayer fut az összes ismert BSD-n. Léteznek ports/pkgsrc/fink/stb. verziók az MPlayerből, amelyek nagy valószínűséggel egyszerűbben fordíthatóak le, mint a mi nyers forrásaink.
Ha az MPlayer nem találja a /dev/cdrom-ot vagy a /dev/dvd-t, csinálj egy symlinket:
ln -s /dev/cdrom_egység
/dev/cdrom
Ha Win32 DLL-eket akarsz használni az MPlayerrel,
újra kell fordítanod a kernelt "option USER_LDT
"-vel
(kivéve, ha FreeBSD-CURRENT-et
használsz, ahol ez az alapállapot).
Ha a processzorod támogatja az SSE-t, akkor ezen utasításkészlet kihasználásához
a kernelt az "options CPU_ENABLE_SSE
" beállítással
kell fordítani (ehhez FreeBSD-STABLE vagy kernelpatchekre van szükség).
A gas különböző verzióinak hiányosságai miatt (relokáció vs MMX), két
lépésben kell fordítani: előszőr legyen a nem-natív verzió a $PATH
-ban,
majd add ki a gmake -k parancsot, majd a natív verzióval
gmake.
Az OpenBSD 3.4-től a fenti kavarás már nem szükséges.
Lásd a Mac OS részt.
Az MPlayer számos kereskedelmi Unix variánsra portolva lett. Mivel a fejlesztő környezet ezeken a rendszereken másfajta, mint a szabad Unix-okon, lehet, hogy némi kézi beállítást igényel a fordítás.
A Solarisnak még mindig rossz, POSIX-inkompatibilis rendszer eszközei és shell-je
van az alapértelmezett helyeken. Amíg nem tesznek egy bölcs lépést a számítástechnikai
kőkorszak leváltására, addig a /usr/xpg4/bin könyvtárat
hozzá kell adnod a PATH
-hoz.
Az MPlayer Solaris 2.6 vagy újabb rendszereken működik. A SUN audió vezérlőjét a -ao sun kapcsolóval használhatod.
Az MPlayer kihasználja az
UltraSPARC gépek VIS
utasításkészletét (az MMX-hez hasonló), bár jelenleg csak a
libmpeg2
-ben,
libvo
-ben és
a libavcodec
-ben, de az
mp3lib
-ben nem.
Egy 400Mhz-es CPU elég, hogy élvezhetően lejátsz egy VOB filet.
Szükséged lesz egy felinstallált
mLib
-re
is.
Figyelmeztetés:
A mediaLib jelenleg le van tiltva alapértelmezésben az MPlayerben, mivel hibás. A SPARC felhasználók, akik az MPlayert mediaLib támogatással forgatták, egy vastag, zöld csíkról számoltak be a libavcodec-kal kódolt és dekódolt videók esetén. Ha mégis akarod, engedélyezheted:
./configure --enable-mlib
Azonban ezt a saját felelősségedre tedd. Az x86 felhasználóknak soha sem ajánlott mediaLib-et használni, mivel nagyon lerontja az MPlayer teljesítményét.
Solaris SPARC-on GNU C/C++ fordító is kell; az nem számít, hogy assemblerrel vagy nélküle van.
Solaris x86-on kell a GNU assembler é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 Sun standard assemblere (/usr/ccs/bin/as) nem támogat.
A configure script megpróbálja megkereseni, hogy a
"gcc" parancsod melyik assemblert indítja (ha nem sikerül neki,
használd a
--as=/ahova/installalva/lett/a/gnu-as
kapcsolót, hogy megadd a configurenak az "as" helyét
a rendszeredben).
Megoldások a gyakori problémákra:
Hibaüzenet a configure-tól egy Solaris x86-os rendszeren GNU assembler nélküli GCC használata esetén:
% 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, ha a GNU C fordító nem GNU assemblert (GNU as) használ:
% 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 ... további "Illegal mnemonic" és "Syntax error" hibák ...
Az MPlayer segfault-olhat ha win32codec-eket használó videót akarsz kódolni vagy dekódolni:
... Trying to force audio codec driver family acm... Opening audio decoder: [acm] Win32/ACM decoders sysi86(SI86DSCR): Invalid argument Couldn't install fs segment, expect segfault MPlayer interrupted by signal 11 in module: init_audio_codec ...
Ez a Solaris 10-ben és a pre-Solaris Nevada b31-ben a sysi86() egyik változtatása miatt van. Javítva lett a Solaris Nevada b32-ben; bár a Sun-nak még vissza kell vezetnie a javítást a Solaris 10-be. Az MPlayer Project felhívta a Sun figyelmét a problémára, a javítás készülőben van a Solaris 10-hez. Ettől a hibáról további információt itt találhatsz: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.
A Solaris 8 hibái miatt nem biztos, hogy le tudsz játszani 4 GB-nál nagyobb DVD lemezt:
Az sd(7D) vezérlőnek a Solaris 8 x86-ban van egy hibája a >4GB lemez blokkok elérésénél egy eszközön, melyen a logikai blokkméret != DEV_BSIZE-zel (pl. CD-ROM és DVD média). A 32 bites egész túlcsordulása miatt a lemez cím modulo 4GB kerül megcímzésre (http://groups.yahoo.com/group/solarisonintel/message/22516). Ez a probléma a SPARC alapú Solaris 8-on nincs.
Egy hasonló hiba van a hsfs(7FS) fájl rendszer kódjában is (alias ISO9660), a hsfs nem támogatja a 4 GB-nál nagyobb partíciókat/lemezeket, minden adat modulo 4GB-vel lesz elérve (http://groups.yahoo.com/group/solarisonintel/message/22592). Ez a hiba a 109764-04 (SPARC) / 109765-04 (x86) jelzésű patch-ek telepítése után megszűnik.
Joe Page ad helyet egy részletes HP-UX MPlayer HOGYAN-nak a weboldalán, amit Martin Gansser írt. Ezekkel az utasításokkal a fordítás után egyből kész programot kapsz. A következő információk a HOGYAN-ból lettek átvéve.
GCC 3.4.0 vagy későbbire lesz szükséged és SDL 1.2.7 vagy újabb. A HP cc nem tud működő programot fordítani, a korábbi GCC verziók pedig hibásak. Az OpenGL funkcionalításhoz telepítened kel a Mesa-t és így a gl és gl2 videó kimeneti vezérlőknek működniük kell, bár nagyon lassúak is lehetnek a CPU sebességétől függően. A meglehetősen gyenge natív HP-UX hangrendszer helyett inkább használd a GNU esound-ot.
Hozd létre a DVD eszközt nézd végig a SCSI buszt:
# ioscan -fn Class I H/W Path Driver S/W State H/W Type Description ... ext_bus 1 8/16/5 c720 CLAIMED INTERFACE Built-in SCSI target 3 8/16/5.2 tgt CLAIMED DEVICE disk 4 8/16/5.2.0 sdisk CLAIMED DEVICE PIONEER DVD-ROM DVD-305 /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0 target 4 8/16/5.7 tgt CLAIMED DEVICE ctl 1 8/16/5.7.0 sctl CLAIMED DEVICE Initiator /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0 ...
A képernyőn a kimenetben egy Pioneer DVD-ROM látszik a 2. SCSI címen. A kártya a 8/16-os hardver útra az 1-essel hivatkozik.
Készíts egy linket a nyers eszközről a DVD eszközre.
# ln -s /dev/rdsk/c<SCSI busz hivatkozás>
t<SCSI cél ID>
d<LUN>
/dev/<eszköz>
Például:
# ln -s /dev/rdsk/c1t2d0 /dev/dvd
Itt van pár gyakori probléma megoldása:
A rendzser összeomlik indításkor a következő hibaüzenettel:
/usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl
Ez azt jelenti, hogy a .finite().
függvény
nincs benne a szabványos HP-UX math függvénykönyvtárban.
Ekkor .isfinite().
van helyette.
Megoldás: Használd a legújabb Mesa depot fájlt.
Összeomlás lejátszáskor a következő hibaüzenettel:
/usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0
Megoldás: Használd a configure extralibdir opcióját --extra-ldflags="/usr/lib -lrt"
Az MPlayer segfault-ol egy ilyesmi üzenettel:
Pid 10166 received a SIGSEGV for stack growth failure. Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz. Segmentation fault
Megoldás:
A HP-UX kernel alapértelmezésként 8MB-os(?) méretű vermet használ
processzenként. (11.0 és az újabb 10.20 foltok engedik növelni a
maxssiz
-t egészen 350MB-ig a 32-bit-es
programokhoz). Növelned kell a maxssiz
-t
és újrafordítani a kernelt (majd reboot-olni). Ehhez használhatod
a SAM-ot. (Ha már itt tartunk, nézd meg a maxdsiz
paramétert is az egy program által használható maximum adatmennyiséghez.
Az alkalmazásaidon múlik, hogy az alapértelmezett 64MB elég vagy sem.)
Az MPlayer sikeresen fordul AIX 5.1-en, 5.2-n és 5.3-on, GCC 3.3 vagy újabbal. Az MPlayer fordítását AIX 4.3.3 és régebbi változaton nem teszteltük. Javasoljuk, hogy az MPlayert GCC 3.4 vagy újabbal fordítsd vagy ha POWER5-ön forgatsz, GCC 4.0 szükséges.
A CPU detektálás még fejlesztés alatt áll. A következő architektúrákat teszteltük:
604e
POWER3
POWER4
A következő architektúrák nem lettek tesztelve, de működhetnek:
POWER
POWER2
POWER5
Az Ultimedia Services-en keresztüli hang nem támogatott, mert az Ultimedia-t dobták az AIX 5.1-ben; ezért az egyetlen lehetőség az AIX Open Sound System (OSS) vezérlők használata a 4Front Technologies-től http://www.opensound.com/aix.html. A 4Front Technologies szabadon biztosítja az OSS vezérlőket az AIX 5.1-hez nem-üzleti felhasználásra; azonban jelenleg nincs hang kimeneti vezérlő AIX 5.2 és 5.3 alá. Ez azt jelenti, hogy az AIX 5.2 és 5.3 alatt jelenleg az MPlayer nem képes audió kimenetre.
Megoldás a gyakori problémákra:
Ha ezt a hibaüzenetet kapod a configure-tól:
$ ./configure ... Checking for iconv program ... no No working iconv program found, use --charset=US-ASCII to continue anyway. Messages in the GTK-2 interface will be broken then.
Ez azért van, mert az AIX nem-szabványos kódlap neveket használ; ezért az MPlayer kimenetének másik kódlapra konvertálása jelenleg nem támogatott. A megoldás:
$ ./configure --charset=noconv
Igen, az MPlayer fut Windows-on Cygwin és MinGW alatt. Még nincs hivatalos GUI-ja, de a parancssoros verzió teljes mértékben használható. Ajánlott megnézni az MPlayer-cygwin levelezési listát is segítéségért és a legfrissebb információkért. A hivatalos Windows-os binárisok megtalálhatóak a letöltési oldalon. A külső forrásból származó telepítő csomagokat és egyszerű GUI frontend-eket összegyűjtöttük a kapcsolódó projektek oldal Windows-os részében.
Ha el akarod kerülni a parancssor használatát, van egy egyszerű trükk. Tegyél egy parancsikont az asztalodra, ami valami hasonló parancssort tartalmaz:
c:\eleresi\ut\
mplayer.exe %1
Ezután az MPlayer le fog játszani bármilyen videót, amit erre a parancsikonra ejtesz. Írd hozzá a -fs kapcsolót a teljes képernyős módhoz.
A legjobb eredmény a natív DirectX videó kimeneti vezérlővel (-vo directx). Alternatívaként van OpenGL és SDL, de az OpenGL teljesítménye nagyban változik a rendszerek között, az SDL pedig torzítja a képet vagy összeomlik néhány rendszeren. Ha torz a kép, próbáld meg kikapcsolni a hardveres gyorsítást a -vo directx:noaccel kapcsolóval. Töltsd le a DirectX 7 fejléc fájlokat a DirectX videó kimeneti vezérlő beforgatásához.
A VIDIX is működik már Windows alatt a -vo winvidix kapcsolóval, bár még kisérleti fázisban van és egy kis kézi állítgatás kell hozzá. Töltsd le a dhahelper.sys vagy dhahelper.sys (MTRR támogatással) fájlt és másold be a vidix/dhahelperwin könyvtárba az MPlayer forrás fádban. Nyisd meg a konzolt és írd be:
make install-dhahelperwin
adminisztrátorként. Ezután újra kell indítanod a gépet.
A legjobb eredményhez az MPlayernek egy olyan színteret kell használnia, amit a videó kártyád támogat. Sajnos sok Windows-os grafikus vezérlő hibásan támogatottnak jelent pár színteret. Hogy megtudd, melyiket, próbáld ki az
mplayer -benchmark -nosound -frames 100 -vf format=szinter
film
parancsot, ahol a szinter
bármelyik színtér lehet,
amit a -vf format=fmt=help kapcsoló kiír. Ha találsz
olyan színteret, amit a kártyád részben hibásan kezel,
-vf noformat=szinter
kapcsolóval megakadályozhatod a használatát. Írd be ezt a konfigurációs fájlodba,
hogy véglegesen kimaradjon a használatból.
Vannak speciálisan Windowsra készített codec csomagok a
letöltési oldalunkon,
melyek segítségével azokat a formátumokat is lejátszhatod, amikhez még
nincs natív támogatás.
Tedd be a codec-eket valahova az elérési útvonaladba vagy add meg a
--codecsdir=c:/ut/a/codecjeidhez
(alternatívaként
--codecsdir=/ut/a/codecjeidhez
csak Cygwin alatt) kapcsolóval a configure-nak.
Kaptunk olyan visszajelzéseket, hogy a Real DLL-eknek írhatóaknak kell lenniük az
MPlayert futtató felhasználó által, de csak bizonyos
rendszereken (NT4). Próbáld meg írhatóvá tenni őket, ha problémáid vannak.
VCD-ket is lejátszhatsz a .DAT vagy .MPG fájlok lejátszásával, amit a Windows meglát a VCD-n. Így nagyszerűen működik (javítsd ki a CD-ROM-od betűjelét):
mplayer d:/mpegav/avseq01.dat
Alternatívaként lejátszhatsz egy VCD sávot közvetlenül így:
mplayer vcd://<sáv>
-cdrom-deviced:
A DVD-k is működnek, add meg a -dvd-device kapcsolóval a DVD-ROM-od betűjelét:
mplayer dvd://<cím>
-dvd-deviced:
A Cygwin/MinGW konzol meglehetősen lassú. Kimenet átirányítással vagy a -quiet kapcsolóval a jelentések szerint javítható a teljesítmény néhány rendszeren. A Direct renderelés (-dr) is segíthet. Ha a lejátszás szaggatott, próbáld meg a -autosync 100 opciót. Ha ezek közül bármelyik segít, írd be a konfigurációs fájlodba.
Ha Pentium 4-ed van és fagyásokat tapasztalsz a RealPlayer codec-ekkel, le kell tiltanod a hyperthread támogatást.
A Cygwin 1.5.0 vagy későbbi verziójára lesz szükséged az MPlayer lefordításához.
A DirectX fejléc fájlokat ki kell csomagolni a /usr/include/ vagy /usr/local/include/ könyvtárba.
Az SDL előállításával és Cygwin alatti használatával kapcsolatos utasítások és fájlok megtalálhatóak a libsdl oldalon.
A MinGW 3.1.0 vagy későbbi és az MSYS 1.0.9 vagy későbbi verziójára lesz szükséged. Az MSYS postinstall-jának mondd meg, hogy telepítve van a MinGW.
Csomagold ki a DirectX fejléc fájlokat a /mingw/include/ könyvtárba.
A tömörített MOV fejlécek támogatásához zlib kell, ami alaphelyzetben nincs benne a MinGW-ben. Állítsd be a --prefix=/mingw kapcsolóval és telepítsd, mielőtt az MPlayert fordítanád.
Az MPlayer és a szükséges függvénykönyvtárak elkészítésének módját elolvashatod az MPlayer MinGW HOGYAN-ban.
Az MPlayer nem működik a 10-esnél régebbi Mac OS-eken, de könnyedén lefordítható Mac OS X 10.2 és későbbi verziók alatt. A javasolt fordító a GCC 3.x vagy későbbi Apple féle változata. Az alap fordítási környezetet az Apple Xcode telepítésével kapod meg. Ha Mac OS X 10.3.9 vagy régebbi verziód és QuickTime 7-esed van, használhatod a corevideo videó kimeneti vezérlőt is.
Sajnos az alap környezet nem teszi lehetővé az MPlayer
összes képességének kihasználását.
Például ha befordított OSD támogatást szeretnél, telepített
fontconfig
és a
freetype
függvénykönyvtárakra
lesz szükséged. Más Unix-okkal ellentétben, mint amilyen a legtöbb
Linux és BSD variáns, az OS X nem rendelkezik alapértelmezett csomag
kezelővel, ami az operációs rendszerhez tartozna.
Két független közül választhatsz: Fink és MacPorts. Mindkettő nagyjából ugyan azt a szolgáltatást nyújtja (pl. rengeteg választható csomag, függőségek kezelése, csomagok egyszerű telepítése/frissítése/eltávolítása, stb...). A Fink biztosít előfordított bináris csomagokat, de forrásból is lefordítható bármi, míg a MacPorts csak forrásból történő fordítást tesz lehetővé. Ezen leírás szerzője a MacPorts-ot választotta, azon egyszerű okból kifolyólag, hogy a beállítása sokkal egyszerűbb. A későbbi példák mind MacPorts-on alapszanak.
Például az MPlayer lefordítása OSD támogatással:
sudo port install pkg-config
Ez telepíti a pkg-config-ot, ami a függvénykönyvtárak
fordítási/szerkesztési flag-jeinek kezelését végző rendszer.
Az MPlayer configure
script-je
is ezt használja a függvénykönyvtárak megfelelő detektálásához.
Ezután hasonló módon telepítheted a
fontconfig-ot:
sudo port install fontconfig
Ezek után indíthatod az MPlayer
configure
script-jét (figyelj a
PKG_CONFIG_PATH
és PATH
környezeti változók beállítására, hogy a configure
megtalálja a MacPorts-szal telepített függvénykönyvtárakat):
PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ PATH=$PATH:/opt/local/bin/ ./configure
Van egy natív GUI az MPlayerhez egy előfordított MPlayer binárissal együtt Mac OS X alá a MPlayerOSX projektből, de emlékezz rá: ez a projekt már nem aktív.
Szerencsére az MPlayerOSX projektet az MPlayer csapat egyik tagja átvette. Előzetes kiadások elérhetőek a letöltési oldalunkról és hamarosan jön a hivatalos kiadás is.
Ha saját magad akarod lefordítani forrásból az MPlayerOSXet,
szükséged lesz az mplayerosx
-re, a
main
-re és a
main
SVN modul
main_noaltivec
-re átnevezett másolatára.
mplayerosx
a GUI frontend,
main
az MPlayer és a
main_noaltivec
az MPlayer AltiVec támogatás
nélkül.
Az SVN modulok letöltéséhez használt az alábbi parancsokat:
svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main
Az MPlayerOSX elkészítéséhez valami ilyesmit kell csinálnod:
MPlayer_forras_konyvtar | |--->main (MPlayer Subversion forrás) | |--->main_noaltivec (MPlayer Subversion forrás --disable-altivec -kel konfigurálva) | |--->mplayerosx (MPlayer OS X Subversion forrás)
Először a main és main_noaltivec-et kell lefordítanod.
Kezdetnek a maximális kompatibilítás biztosítása érdekében állíts be egy környezeti változót:
export MACOSX_DEPLOYMENT_TARGET=10.3
Majd konfigurálj:
Ha a G4 vagy későbbi, AltiVec támogatással rendelkező CPU-ra konfigurálsz:
./configure --disable-gl --disable-x11
Ha G3-as, AltiVec nélküli gépre:
./configure --disable-gl --disable-x11 --disable-altivec
Lehet, hogy szerkesztened kell a config.mak fájlt és
át kell írnod az -mcpu
-t és -mtune
-t
74XX
-ről G3
-ra.
Folytasd a
make
paranccsal, majd menj a mplayerosx könyvtárba és írd be
make dist
Ez egy tömörített .dmg
archívot hoz létre
egy használatra kész binárissal.
Használhatod az Xcode 2.1 projektet is; a régi, Xcode 1.x projekt nem működik már.
A MEncoder összes használható kapcsolójához és a példákhoz kérlek nézd meg a man oldalt. Mindennapi példákért és a számos kódolási paraméter bővebb leírásáért olvasd el a kódolási tippeket, amiket számos levelezési lista szálból gyűjtöttünk össze az MPlayer-users-ről. Kereshetsz az archívumban, vagy a nagyon régi dolgok után itt, a rengeteg beszélgetés között, melyek a MEncoderrel történő kódolást több szempontból vizsgálják és kiemelik a problémákat vele kapcsolatban.
A kódoláshoz az audió és videó codec-ek a -oac és -ovc opciókkal adható meg. Gépeld be ezt a példát:
mencoder -ovc help
a gépeden lévő MEncoder által támogatott videó codec-ek kilistázásához. A következő választások érhetőek el:
Audió codec-ek:
Audió codec neve | Leírás |
---|---|
mp3lame | kódol VBR, ABR vagy CBR MP3-at LAME-mel |
lavc | a libavcodec egyik audió codec-jét használja |
faac | FAAC AAC audió kódoló |
toolame | MPEG Audio Layer 2 kódoló |
twolame | tooLAME alapú MPEG Audio Layer 2 kódoló |
pcm | tömörítetlen PCM audió |
copy | nem kódol újra, csak másolja a tömörített kockákat |
Videó codec-ek:
Videó codec neve | Leírás |
---|---|
lavc | a libavcodec egyik videó codec-jét használja |
xvid | Xvid, MPEG-4 Advanced Simple Profile (ASP) codec |
x264 | x264, MPEG-4 Advanced Video Coding (AVC), AKA H.264 codec |
nuv | nuppel video, néhány realtime alkalmazás használja |
raw | tömörítetlen videó képkockák |
copy | nem kódol újra, csak másolja a tömörített kockákat |
frameno | a 3-lépéses kódolásban használatos (nem javasolt) |
A kimeneti konténer formátumokat a -of kapcsolóval választhatod ki. Írd be:
mencoder -of help
a gépeden lévő MEncoder által támogatott konténerek kilistázásához. A következő választások érhetőek el:
Konténer formátumok:
Konténer formátum neve | Leírás |
---|---|
lavf | a libavformat által
támogatott valamelyik konténer |
avi | Audio-Video Interleaved |
mpeg | MPEG-1 és MPEG-2 PS |
rawvideo | nyers videó folyam (nincs keverés - csak egy videó folyam) |
rawaudio | nyers audió folyam (nincs keverés - csak egy audió folyam) |
Az AVI konténer a MEncoder natív konténer formátuma, ami azt jelenti, hogy ezt kezeli a legjobban és hogy a MEncoder ehhez lett tervezve. Amint fentebb megemlítettük, más konténer formátumok is használhatóak, de problémákba ütközhetsz a használatuk során.
libavformat
konténerek:
Ha a libavformat
-ot választottad
a kimeneti fájl keveréséhez (a -of lavf használatával),
a megfelelő konténer formátum a kimeneti fájl kiterjesztése alapján kerül
megállapításra.
Egy meghatározott konténer formátumot a
libavformat
format kapcsolójával írhatsz elő.
libavformat konténer neve | Leírás |
---|---|
mpg | MPEG-1 és MPEG-2 PS |
asf | Advanced Streaming Format |
avi | Audio-Video Interleaved |
wav | Waveform Audio |
swf | Macromedia Flash |
flv | Macromedia Flash video |
rm | RealMedia |
au | SUN AU |
nut | NUT nyílt konténer (kísérleti és még nem a specifikációnak megfelelő) |
mov | QuickTime |
mp4 | MPEG-4 formátum |
dv | Sony Digital Video konténer |
mkv | Matroska nyílt audió/videó konténer |
Amint láthatod, a libavformat
elég sok konténer formátumba engedélyezi a keverést a
MEncoder-nek.
Sajnos mivel a MEncoder nem úgy lett tervezve
a kezdetektől, hogy az AVI-tól különböző konténer formátumokat is támogassa,
izgulhatsz a kimeneti fájl miatt.
Kérjük ellenőrizd, hogy az audió/videó szinkron rendben van-e és hogy a
fájl lejátszható-e más lejátszókkal is az
MPlayer-en kívül.
8.1. példa - kódolás Macromedia Flash formátumba
Egy Macromedia Flash videó létrehozása, mely lejátszható web böngészőben a Macromedia Flash plugin-nel:
mencoderbemenet.avi
-okimenet.flv
-of lavf \ -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \ -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3
A MEncoder tud kódolni fájlokból vagy akár
direkt DVD vagy VCD lemezekről is.
A fájlból való kódoláshoz egyszerűen csak add meg a fájl nevét a parancssorban,
vagy a dvd://részszám
vagy
vcd://sávszám
eszközt a
DVD részről vagy VCD sávról történő kódoláshoz.
Ha egy DVD-t már átmásoltál a merevlemezedre (használhatod pl. a
dvdbackup ezsközt, mely a legtöbb rendszeren megvan),
és a másolatot akarod elkódolni, akkor is használnod kell a
dvd:// szintaxist, a -dvd-device-szal együtt,
amit a lemásolt DVD gyökérkönyvtárának elérési útja követ.
A -dvd-device és -cdrom-device
kapcsolókkal felülbírálhatóak a direkt lemezolvasásnál használt eszközök
elérési útjái is, ha az alapértelmezett
/dev/dvd és /dev/cdrom nem
működnek a rendszereden.
Ha DVD-ről kódolsz, gyakran kívánatos, hogy a kódolni kívánt fejezetet vagy
fejezetek tartományát is megadd.
Ehhez használhatod a -chapter kapcsolót.
Például a -chapter 1-4
csak az 1-4 fejezeteket fogja elkódolni a DVD-ről.
Ez különösen hasznos, ha egy 1400 MB-os kódolást csinálsz két CD-re, mivel
meggyőződhetsz róla, hogy a vágás pontosan fejezet határnál lesz és nem
egy jelenet közepén.
Ha van támogatott TV felvevő kártyád, tudsz kódolni a TV-in eszközről is.
Használd a tv://csatornaszám
eszközt
fájlnévként és a -tv kapcoslót a mentési beállítások
megadásához.
A DVB hasonlóképpen működik.
A név abból a tényből ered, hogy ez a módszer a fájlt kétszer kódolja át. Az első kódolás (szinkronizációs lépés) létrehoz pár ideiglenes, néhány megabájtos fájlt (*.log), ezeket ne töröld le még (az AVI-t letörölheted vagy egyszerűen létre sem hozod, a videó /dev/null-ba vagy Windows alatt a NUL-ba irányításával). A második lépésben, a két menetes kimenet fájl lesz létrehozva, az ideiglenes fájlok bitrátájának felhasználásával. Az eredmény fájlnak sokkal jobb lesz a képminősége. Ha most hallasz erről először, nézz meg pár a neten elérhető leírást.
8.2. példa - audió sáv másolása
Egy DVD második sávjának két menetes kódolása MPEG-4 ("DivX") AVI-ba az audió sáv másolásával.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
-oac copy -o kimenet.avi
8.3. példa - audió sáv kódolása
Egy DVD második sávjának két menetes kódolása MPEG-4 ("DivX") AVI-ba az audió sáv MP3-ba alakításával. Vigyázz ezzela módszerrel, mivel bizonyos esetekben audió/videó deszinkronizációhoz vezethet.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
-oac mp3lame -lameopts vbr=3 -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
-oac mp3lame -lameopts vbr=3 -o kimenet.avi
A MEncoder támogatja a Sony PSP videó formátumába történő kódolást, de a PSP szoftverének változatától függően különböző korlátok vannak. Nyugodt lehetsz, ha a következő korlátokat figyelembe veszed:
Bitráta: nem lépheti át az 1500kbps-t, bár az utóbbi verziók elég jól támogatnak bármilyen bitrátát, feltéve, hogy a fejlécben nem túl nagy érték van megadva.
Méretek: a PSP videó szélességének és magasságának 16-tal oszthatónak kell lennie és az eredmény szélesség * magasság értékének <= 64000 kell lennie. Bizonyos körülmények között lehetséges a nagyobb felbontás PSP-vel történő lejátszása is.
Audió: a mintavételezési frekvenciának 24kHz-nek kell lennie az MPEG-4 videóknál és 48kHz-nek a H.264-nél.
8.4. példa - kódolás PSP-be
mencoder -ofps 30000/1001 -af lavcresample=24000 -vf harddup -oac lavc \ -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=libfaac \ -of lavf -lavfopts format=psp \bemenet.video
-okimenet.psp
Figyelj rá, hogy beállíthatod a videó címét a
-info name=FilmCime
kapcsolóval.
A MEncoder tud készíteni MPEG (MPEG-PS) formátumú kimeneti fájlokat. Általában, ha MPEG-1 vagy MPEG-2 videót használsz, az azért van, mert egy korlátozott formátumhoz kódolsz, mint pl. az SVCD, a VCD vagy a DVD. Ezen formátumok speciális igényei a VCD és DVD készítési leírásban megtalálhatóak.
A MEncoder kimeneti fájl formátumának megváltoztatásához használd a -of mpeg kapcsolót.
Példa:
mencoderbemenet.avi
-of mpeg -ovc lavc -lavcopts vcodec=mpeg1video \ -oac copyegyéb_kapcsolók
-okimenet.mpg
Egy MPEG-1-es fájl létrehozása, mely alkalmas minimális multimédia támogatással rendelkező rendszereken, például alapértelmezett Windows telepítéseken történő lejátszásra is:
mencoderbemenet.avi
-of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 \ -okimenet.mpg
-oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \ -lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3
Ugyan ez a libavformat
MPEG muxer-ének használatával:
mencoderinput.avi
-oVCD.mpg
-ofps 25 -vf scale=352:288,harddup -of lavf \ -lavfopts format=mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \ -lavcopts vcodec=mpeg1video:vrc_buf_size=327:keyint=15:vrc_maxrate=1152:vbitrate=1152:vmax_b_frames=0
Ha valamilyen okból kifolyólag a videó minőség a második lépésben nem kielégítő, ajánlott újrafuttatnod a videó kódolásod egy másik cél bitrátával, feltéve, hogy elmentetted az előző lépés statisztikát tartalmazó fájlját. Ez azért lehetséges, mert a statisztika fájl elsődleges célja minden egyes képkocka komplexitásának feljegyzése, ami nem függ erőteljesen a bitrátától. Azonban vedd figyelembe, hogy akkor kapod a legjobb minőséget, ha a lépések cél bitrátája nem különbözik nagy mértékben.
Gyakran szükséged lehet a videó képméretének átméretezésére. Ennek több oka lehet: fájl méretének csökkentése, hálózati sávszélesség, stb. A legtöbb ember akkor is végez átméretezést, amikor DVD-ket vagy SVCD-ket konvertál DivX AVI-ba. Ha át szeretnél méretezni, olvasd el a képméret arányok megtartásáról szóló részt.
A méretezési eljárást a scale
videó szűrő végzi:
-vf scale=szélesség
:magasság
.
A minősége beállítható a -sws kapcsolóval.
Ha ez nincs megadva, akkor a MEncoder a 2: bicubic-et használja.
Használat:
mencoderbemenet.mpg
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \ -vf scale=640:480 -okimenet.avi
MEncoder kétféleképpen tudja kezelni a folyamokat: kódolni vagy másolni tudja őket. Ez a rész a másolásról szól.
Videó stream (-ovc copy kapcsoló): szép dolgokat lehet vele csinálni :) Például FLI vagy VIVO vagy MPEG-1 videót tenni (nem konvertálni!) AVI fájlba! Természetesen csak az MPlayer tudja lejátszani az ilyen fájlokat :) Ennek valószínűleg gyakorlati haszna nincs. Ésszerűbben: a videó stream másolása hasznos lehet például ha csak az audió stream-et kell kódolni (például tömörítetlen PCM-et MP3-ba).
Audió stream (-oac copy kapcsoló):
őszintén szólva... Bele lehet mixelni egy külső audió fájlt (MP3, WAV) a
kimeneti stream-be. Használd a
-audiofile fájlnév
kapcsolót
ehhez.
A -oac copy használatával végrehajtott egyik konténer formátumból másikba történő másoláshoz szükséges lehet a -fafmttag kapcsoló, hogy megmaradjon az eredeti fájl audió formátum tag-je. Például ha egy NSV fájl AAC audióval AVI konténerbe alakítasz át, az audió formátum tag hibás lesz és meg kell változtatni. Az audió formátum tag-ek listáját megtalálod a codecs.conf fájlban.
Példa:
mencoderbemenet.nsv
-oac copy -fafmttag 0x706D \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -okimenet.avi
A MEncoder képes egy vagy több JPEG, PNG, TGA vagy más képfájlból film létrehozására. Egy egyszerű framecopy-val MJPEG (Motion JPEG), MPNG (Motion PNG) vagy MTGA (Motion TGA) fájlokat tud létrehozni.
A folyamat leírása:
A MEncoder dekódolja a
bemeneti képe(ke)t a libjpeg
-gel
(ha PNG-ket dekódol, akkor a libpng
-vel).
Ezután a MEncoder a dekódolt képeket a kiválasztott videó tömörítőnek adja át (DivX4, Xvid, FFmpeg msmpeg4, stb.).
Példák. A -mf kapcsoló magyarázata a man oldalon található.
Egy MPEG-4-es fájl létrehozása az aktuális könyvtárból található összes JPEG fájlból:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc \
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o kimenet.avi
Egy MPEG-4 fájl létrehozása néhány JPEG fájlból az aktuális könyvtárban:
mencoder mf://frame001.jpg,frame002.jpg
-mf w=800:h=600:fps=25:type=jpg \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -okimenet.avi
Egy MPEG-4 fájl létrehozása JPEG fájlok explicit listájából (az aktuális könyvtárban lévő lista.txt tartalmazza a forrásként felhasználandó fájlokat, soronként egyet):
mencoder mf://@lista.txt
-mf w=800:h=600:fps=25:type=jpg \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -okimenet.avi
Különböző típusú képeket is használhatsz, függetlenül a használt módszertől — egyedi fájlnevek, helyettesítő karakterek vagy fájl lista — feltéve természetesen, hogy a képméretek azonosak. Így például a cím kép lehet egy PNG fájl, majd a bemutató készülhet JPEG fényképekből.
Egy Motion JPEG (MJPEG) fájl készítése az aktuális könyvtár összes JPEG fájlából:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o kimenet.avi
Egy tömörítetlen fájl létrehozása az aktuális könyvtár összes PNG fájlából:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o kimenet.avi
A szélességnek 4 egész többszörösének kell lennie, ez a RAW RGB AVI formátum megszorítása.
Egy Motion PNG (MPNG) fájl létrehozása az aktuális könyvtár PNG fájlaiból:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o kimenet.avi
Egy Motion TGA (MTGA) fájl létrehozása az aktuális könyvtár összes TGA fájlából:
mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o kimenet.avi
A MEncoder képes a feliratok kiszedésére a DVD-kből és elmentésére VOBsub formátumú fájlokba. Ezek két fájlból állnak, .idx és .sub kiterjesztéssel, és általában egy .rar archívba vannak becsomagolva. Az MPlayer le tudja ezeket játszani a -vobsub és a -vobsubid kapcsolókkal.
Meg kell adnod a kimeneti fájlok fájlnevét (az .idx vagy .sub kiterjesztés nélkül) a -vobsubout kapcsolóval és az ezen felirathoz tartozó indexet a kimeneti fájlokban a -vobsuboutindex-szel.
Ha a bemenet nem DVD, akkor a -ifo kapcsolót kell használnod ahhoz, hogy megadd, hogy .ifo fájl szükséges a kimeneti .idx elkészítéséhez.
Ha a bemenet nem DVD és nincs .ifo fájlod, a -vobsubid kapcsolót kell használnod, hogy megadd, milyen nyelv id-t kell beletenni az .idx fájlba.
Mindkét esetben az éppen futó felirat hozzáíródik a .idx és .sub fájlokhoz, amennyiben azok már léteznek. Így ezeket le kell törölnöd, mielőtt nekiállnál.
8.5. példa - Két felirat másolása egy DVD-ről két menetes kódolás közben
rmsubtitles.idx
subtitles.sub
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \ -vobsuboutsubtitles
-vobsuboutindex 0 -sid 2 mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \ -vobsuboutsubtitles
-vobsuboutindex 1 -sid 5
8.6. példa - Francia felirat másolása egy MPEG fájlból
rmsubtitles.idx
subtitles.sub
mencodermovie.mpg
-ifomovie.ifo
-vobsuboutsubtitles
-vobsuboutindex 0 \ -vobsuboutid fr -sid 1 -nosound -ovc copy
A DVD-s és az SVCD-s (pl. MPEG-1/2) fájlokban van egy képméret arány érték, ami leírja, hogy a lejátszónak hogyan kell méreteznie a videó stream-et, így az embereknek nem lesz tojás fejük (pl.: 480x480 + 4:3 = 640x480). Ennek ellenére AVI-ba (DivX) történő kódoláskor figyelembe kell venned, hogy az AVI fejléc nem tárolja ezt az értéket. A film átméretezése undorító és időigényes, kell, hogy legyen egy jobb megoldás!
Van is.
Az MPEG-4-nek van egy egyedülálló sajátossága: a videó stream tartalmazhatja a szükséges képarányt. Igen, úgy mint az MPEG-1/2 (DVD, SVCD) és a H.263 fájlok. Sajnos azonban kevés videó lejtászó van az MPlayeren kívül, ami támogatná ezt az attribútumot.
Ez a tulajdonság csak a libavcodec
mpeg4
codec-jével használható. Tartsd észben: habár
az MPlayer hibátlanul lejátsza a létrehozott
fájlt, a többi lejátszó lehet, hogy rossz képarányt fog használni.
Ajánlott levágni a fekete sávokat a film képe felett és alatt.
Lásd a man oldalt a cropdetect
és a
crop
szűrők használatához.
Használat
mencodersample-svcd.mpg
-vf crop=714:548:0:14 -oac copy -ovc lavc \ -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -okimenet.avi
libavcodec
codec családdalXvid
codec-kalx264
codec-kelVideo For Windows
codec családdal
Egy gyakran feltett kérdés: "Hogyan készíthetem el a legjobb minőségű DVD rip-et egy adott méretben?" Vagy: "Hogyan készíthetem el a lehető legjobb minőségű DVD rip-et? Nem érdekel a fájl méret, csak a legjobb minőséget akarom."
Az utóbbi kérdés talán kicsit rosszul van megfogalmazva. Hiszen ha nem érdekel a fájl méret, akkor miért nem másolod át az egész MPEG-2 videó stream-et a DVD-ről egy az egyben? Az AVI fájlod 5GB körül fogja végezni, fogd és vidd, de ha a legjobb minőséget akarod és nem érdekel a méret, akkor biztos, hogy ez lesz a legjobb lehetőséged.
Valójában egy DVD MPEG-4-be történő átkódolásának az oka pont az, hogy érdekel a fájl mérete.
Nehéz egy általános receptet adni a jó minőségű DVD rip-ek készítéséhez.
Számos szempontot figyelembe kell venni és meg kell értened ezeket a
részleteket, különben elégedetlen leszel a végeredménnyel. Kicsit körbejárjuk
ezen dolgok közül néhányat és utána példát is adunk. Feltételezzük, hogy a
libavcodec
-et használod a videó
kódolásához, habár az elmélet bármilyen codec-kel használható.
Ha ez túl sok neked, akkor talán jobb, ha a sok nagyszerű frontend valamelyikét használod, amik fel vannak sorolva a kapcsolódó projektek oldalán a MEncoder részben. Így nagyon jó minőségű rip-eket készíthetsz túl sok gondolkodás nélkül, mert ezen eszközök legtöbbje úgy lett megtervezve, hogy jó döntéseket hozzon.
Mielőtt eszedbe jutna bármiféle film átkódolása, meg kell tenned pár előkészületi lépést.
Az első és legfontosabb lépés a kódolás előtt annak megállapítása, hogy miféle anyaggal van egyáltalán dolgod. Ha a forrás anyagod DVD-ről származik vagy sugárzott/kábeles/műholdas TV, a következő két formátum valamelyikében tárolódik: NTSC Észak Amerikában és Japánban, PAL Európában. Fontos tudatosítani, hogy ez csak a televízión történő megjelenítés formátuma és gyakran nincs összhangban a film eredeti formátumával. A tapasztalatok szerint az NTSC tartalmat sokkal nehezebb elkódolni, mert több elemet kell azonosítani a forrásban. Ahhoz, hogy megfelelő legyen a kódolás, ismerned kell az eredeti formátumot. Ennek elmulasztása esetén különböző hibák lesznek a kódolásodban, csúnya törési (átlapolás) mellékhatások, duplázott vagy akár elveszett képkockák. Mindamellett, hogy csúnya, a mellékhatások rontják a kódolási hatékonyságot is: rosszabb minőség per bitráta egység arányt kapsz.
Itt van egy lista a forrás anyagok által általában használt típusokról, ebben valószínűleg megtalálod a tiédet és annak jellemzőit:
Szabványos film: Moziban történő vetítéshez rögzítették 24 fps-sel.
PAL videó: PAL videókamerával rögzítették 50 mező per másodperc sebességgel. Egy mező csak a képkocka páros vagy páratlan sorszámú sorait tartalmazza. A televíziót úgy tervezték meg, hogy ilyen arányban frissítsen, az analóg tömörítés egy olcsó formájaként. Az emberi szemnek ezt kompenzálnia kellene, de ha egyszer megérted az átlapolást, meg fogod látni a TV-n és soha többé nem fogod élvezni a TV adást. Két mező még nem alkot egy teljes képkockát, mert 1/50 másodpercnyire vannak egymástól időben és így csak mozgásnál igazodnak össze.
NTSC Videó: NTSC kamerával felvett, 60000/1001 mező per másodperc vagy a színek előtti időben 60 mező per másodperc sebességű film. Egyébként hasonló a PAL-hoz.
Animáció: Általában 24fps-sel rajzolják, de található kevert-framerátás változat is.
Számítógépes grafika (CG): Bármilyen framerátával mehet, de van pár, ami gyakoribb a többinél; 24 és 30 képkocka per másodpercesek a tipikusak NTSC-nél és 25fps PAL-nál.
Régi film: Különböző alacsony frameráták.
A képkockákból álló filmekre progresszívként szoktak hivatkozni, míg az egymástól független mezőkből állóakra vagy átlapoltként vagy videóként - bár ez utóbbi félreérthető.
További bonyolításként néhány film a fenti kettő keveréke.
A legfontosabb különbség, amit észre kell venni a két formátum között, hogy van, amelyik képkocka-alapú míg mások mező alapúak. Bármikor, ha egy filmet televíziós megjelenítésre készítenek elő (beleértve a DVD-t is), átkonvertálják mező-alapú formába. A különböző módszereket, amikkel ez végrehajtható, gyűjtőnéven "telecine"-nek hívjuk, ennek egyik változata a hírhedt NTSC-s "3:2 pulldown". Hacsak nem volt az eredeti anyag is mező-alapú (és megegyező mező rátájú), más formátumbú lesz a filmed, mint az eredeti.
Számos általános típusa van a pulldown-nak:
PAL 2:2 pulldown: Az összes közül a legjobb. Minden képkocka két mező idejéig látszódik, úgy, hogy a páros és páratlan sorokat kinyeri belőlük és váltakozva mutatja őket. Ha az eredeti anyag 24fps-es, ez az eljárás felgyorsítja a filmet 4%-kal.
PAL 2:2:2:2:2:2:2:2:2:2:2:3 pulldown: Minden 12. kockát három mező hosszan mutat kettő helyett. Ezzel elkerüli a 4%-os gyorsulást, de sokkal nehezebben megfordíthatóvá teszi a folyamatot. Általában musical készítésénél használják, ahol a 4%-os sebességmódosulás komolyan rontaná a zenei jelet.
NTSC 3:2 telecine: A kockák felváltva 3 vagy 2 mezőnyi ideig látszódnak. Ezáltal a mező ráta 2.5-szöröse lesz az eredeti framerátának. Az eredmény nagyon kis mértékben lelassul, 60 mező per másodpercről 59.94 mező per másodpercre, az NTSC mező ráta megtartása miatt.
NTSC 2:2 pulldown: A 30fps-es anyagok NTSC-n történő megjelenítéséhez használják. Szép, csakúgy, mint a 2:2 PAL pulldown.
Vannak még egyéb módszerek az NTSC és a PAL videó közötti konvertáláshoz, de ez a téma meghaladja ezen leírás célkitűzéseit. Ha ilyen filmbe futsz bele és el szeretnéd kódolni, a legjobb, ha keresel egy másolatot az eredeti formátumban. A két formátum közötti konvertálás nagyon romboló hatású és nem lehet teljesen visszafordítani, így a kódolt adatod nagyon megszenvedi, ha már konvertált forrásból készül.
Ha a videó DVD-n van, az egymást követő mezők képkockává csoportosíthatóak, még akkor is, ha nem egyidejű megjelenítésre tervezték őket. A DVD-n és digitális TV-n használt MPEG-2 szabvány lehetőséget nyújt mind az eredeti progresszív kockák elkódolására, mind pedig arra, hogy azon mezők számát, amelyhez egy képkockát meg kell jeleníteni, az adott képkocka fejlécében tárolhassuk. Ha ezt a módszert használják, a filmet gyakran "soft-telecined"-ként jellemzik, mert ez az eljárás csak utasítja a DVD lejátszót a pulldown alkalmazására a film tényleges megváltoztatása helyett. Ez a lehetőség nagyon preferált, mert könnyen visszafordítható (tulajdonképpen kihagyható) a kódoló által és megtartja a maximális minőséget. Bár sok DVD és műsorszóró stúdió nem használ megfelelő kódolási technikát, hanem inkább "hard telecine"-es filmeket alkalmaznak, ahol a mezők tulajdonképpen duplázva vannak az elkódolt MPEG-2-ben.
Az eljárás, ahogy ezeket az eseteket kezelni kell, később kerül leírásra ebben az útmutatóban. Most következzék pár tanács, amik segítségével eldöntheted, hogy milyen anyaggal van dolgod:
NTSC régiók:
Ha az MPlayer azt írja ki, hogy a frameráta megváltozott 24000/1001-re a film nézése közben, és soha nem vált vissza, akkor majdnem biztosan progresszív tartalomról van szó, amit "soft telecine" eljárásnak vetettek alá.
Ha az MPlayer a frameráta oda-vissza váltakozását mutatja 24000/1001 és 30000/1001 között és "hullámzást" látsz ilyenkor, akkor több lehetőség is van. A 24000/1001 fps-es részek majdnem biztosan progresszív tartalmak, "soft telecine"-ltek, de a 30000/1001 fps-es részek lehetnek vagy hard-telecine-lt 24000/1001 fps-esek vagy 60000/1001 mező per másodperces NTSC videók. Kövesd a következő két esetben leírt irányelveket, hogy el tudd dönteni, valójában melyik formátummal van dolgod.
Ha az MPlayer soha nem mutatja a frameráta változást és minden egyes mozgást tartalmazó kocka hullámosnak tűnik, akkor a filmed NTSC videó 60000/1001 mező per másodperc sebességgel.
Ha az MPlayer soha nem mutatja a frameráta változást és minden ötből két kocka hullámosnak tűnik, akkor a filmed "hard telecine"-s 24000/1001fps-es formátumú.
PAL régiók:
Ha sosem látsz hullámzást, akkor a filmed 2:2 pulldown-os.
Ha hullámzást látsz váltakozóan ki-be minden fél másodpercben, akkor a filmed 2:2:2:2:2:2:2:2:2:2:2:3 pulldown-os.
Ha mindig látsz hullámzást a mozgás közben, akkor a filmed PAL videó 50 mező per másodperces sebességgel.
Az MPlayer le tudja lassítani a lejátszást a -speed kapcsolóval vagy a kockáról-kockára történő lejátszással. Próbáld meg használni a -speed 0.2-t, hogy nagyon lassan nézhesd a filmet vagy nyomogasd a "." gombot a kockáról kockára történő lejátszáshoz és azonosítsd a mintákat, ha nem látod meg teljes sebességnél.
Nagyon sokféle minőségben tudod elkódolni a filmedet. A modern videó kódolókkal és egy kis pre-codec tömörítéssel (leméretezés és zajcsökkentés), lehetséges nagyon jó minőség elérése 700 MB-on, egy 90-110 perces szélesvásznú filmnél. Továbbá minden, kivéve a leghosszabb filmeket, elkódolható majdnem tökéletes minőséggel 1400 MB-ba.
Három féle megközelítése van egy videó kódolásának: konstans bitráta (CBR), konstans kvantálás, és többmenetes (ABR vagy átlagos bitráta).
Egy film képkockáinak komplexitása és így a tömörítéshez szükséges bitek száma nagy mértékben változhat jelentről jelenetre. A modern videó kódolók már alkalmazkodnak az igényekhez a bitráta variálásával. Az egyszerű módokban, mint pl. a CBR, a kódolók nem ismerik az elkövetkező jelenetek bitráta igényét és így nem tudják átlépni az igényelt átlagos bitrátát hosszabb időre. A fejlettebb módokban, mint pl. a több lépéses kódolásnál, már figyelembe lehet venni az előző lépés statisztikáját; ez megoldja a fent említett problémát.
A legtöbb ABR kódolást támogató codec csak a két lépéses kódolást
támogatja, míg néhány másik, mint pl. az x264
,
az Xvid
és a
libavcodec
támogatják
a többmenetest, ami kissé javít a minőségen minden lépésben,
bár ez a javulás nem mérhető és nem is észrevehető a 4. lépés után.
Ezért, ebben a részben a két lépéses és a többmenetes felváltva
értelmezhető.
Ezen módok mindegyikében a videó codec (mint pl. a
libavcodec
)
a videó képkockákat 16x16 pixel nagyságú macroblock-okra osztja, majd egy
kvantálást végez mindegyik macroblock-on. Minél alacsonyabb a kvantálás, annál
jobb a minőség és nagyobb a bitráta. A film kódolók által egy adott macroblockhoz
a megfelelő kvantáló kiválasztására használt módszer változó és nagymértékben
tuningolható. (Ez egy extrém túl-egyszerűsítése a tulajdonképpeni folyamatnak,
de az alap koncepciót hasznos megérteni.)
Ha előírsz egy konstans bitrátát, a videó codec elkódolja a videót, figyelmen
kívül hagyva a részleteket amennyire csak lehetséges és a legkisebb mértékben,
amennyire szükséges, hogy a megadott bitrátánál alacsonyabban maradjon. Ha
tényleg nem érdekel a fájl méret, használhatsz CBR-t és megadhatsz egy bitrátát
vagy hagyhatod határozatlanul. (A gyakorlatban ez egy kellően magas értéket
jelent, ami nem szab gátat, pl. 10000Kbit.) Ha nincs különösebb megkötés a
bitrátára vonatkozóan, az eredmény az lesz, hogy a codec a lehető legalacsonyabb
kvantálást fogja használni minden egyes macroblock-hoz (amint ez a
vqmin-ben meg van adva a libavcodec
nél, alapértelmezésként 2). Amint
előírsz egy megfelelően alacsony bitrátát, ami a codecet magasabb kvantálás
használatára kényszeríti, majdnem biztos, hogy rontod a videód minőségét.
Ahhoz, hogy ezt elkerüld, valószínűleg downscale-t kell végrehajtani a
videón, az alábbiakban szereplő módszernek megfelelően. Általában igaz,
hogy jobb ha kerülöd a CBR-t, ha számít a minőség.
Konstans kvantálással a codec ugyan azt a kvantálót használja, amit
a vqscale kapcsolóval megadtál (a libavcodec
nek), minden macroblock-nál. Ha
a lehető legjobb minőségű rip-et szeretnéd, szintén a bitráta kihagyásával,
használhatod a vqscale=2 kapcsolót. Ez ugyan azt a bitrátát
és PSNR-t (peak signal-to-noise ratio) szolgáltatja, mint a CBR a
vbitrate=végtelen kapcsolóval és a alapértelmezett 2-es
vqmin-nal.
A konstans kvantálás problémája, hogy a megadott kvantálót alkalmazza, akár szükséges a macroblock-hoz, akár nem. Lehet, hogy használható lenne egy nagyobb kvantálás is a mackroblock-on a vizuális minőség feláldozása nélkül is. Miért pazarolnánk a biteket szükségtelenül alacsony kvantálóra? A CPU-d annyi ciklusa lehet, amennyi időd csak van, de a merevlemezed véges.
Két lépéses kódolásban az első lépés úgy rip-eli a filmet, mintha CBR lenne, de megtartja a tulajdonságok listáját minden egyes képkockánál. Ezeket az adatokat használja fel aztán a második lépésben a használni kívánt kvantálót meghatározó intelligens döntésekben. Gyors akciónál vagy nagyon részletes jeleneteknél magasabb kvantálót használ, lassú mozgásnál vagy kevésbé részletes jeleneteknél alacsonyabbat. Általában a mozgás mennyisége sokkal fontosabb, mint a részletesség.
Ha használod a vqscale=2 kapcsolót, akkor biteket pazarolsz. Ha a vqscale=3 kapcsolót adod meg, akkor nem a legjobb minőségű rip-et kapod. Tegyük fel, hogy egy DVD-t rip-elsz vqscale=3-mal, és az eredmény 1800Kbit. Ha két lépéses kódolást csinálsz vbitrate=1800 kapcsolóval, az kimeneti videó jobb minőségű lesz ugyanolyan bitrátával.
Mivel most meggyőződtél róla, hogy a két lépéses kódolás a megfelelő módszer, az igazi kérdés az, hogy milyen bitrátát ajánlott használni? A válasz az, hogy nincs egyszerű válasz. Valószínűleg olyan bitrátát akarsz választani, ami a legjobb egyensúlyt biztosítja a minőség és a fájl méret között. Ez viszont a forrás videótól függően változik.
Ha a méret nem számít, egy jó kiindulási pont minden nagyon jó minőségű rip-hez egy 2000Kbit körüli érték, plusz-mínusz 200Kbit. A gyors akciókhoz és a nagy részletességű videókhoz vagy ha sas szemed van, akkor választhatsz 2400-at vagy 2600-at. Néhány DVD-nél nem fogsz különbséget felfedezni 1400Kbit-en sem. Jó ötlet az egyes fejezeteket különböző bitrátával megnézni, hogy meglásd a különbséget.
Ha egy bizonyos méretet céloztál be, valahogy ki kell számítanod a bitrátát.
De ezelőtt azt kell megtudnod, hogy mennyi helyet kell fenntartanod az
audió sáv(ok)nak, így először ezeket
kell lerippelned.
A következő egyenlettel tudod kiszámítani a bitrátát:
bitráta = (cél_méret_Mbyteokban - hang_mérete_Mbyteokban) *
1024 * 1024 / hossz_másodpercben * 8 / 1000
Például egy két órás film 702 Mbájtos CD-re való összenyomásához, 60
Mbájtnyi hang sávval, a videó bitrátájának
(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000 =
740kbps
-nek kell lennie.
Az MPEG-típusú tömörítés természetéből adódóan számos megszorítás van, amit követned kell a maximális minőség érdekében. Az MPEG 16x16 makroblokknak nevezett négyzetre osztja fel a videót, mindegyik 4 darab 8x8 blokk luma (intenzitás) információt és két fél-felbontású 8x8 chroma (szín) blokkot tartalmaz (egy a vörös-világoskék tengelyen, a másik a kék-sárga tengelyen). Ha a film szélessége és magassága nem 16 többszöröse, a kódoló akkor is elegendő 16x16-os makroblokkot fog használni, hogy lefedje a teljes képet, a maradék hely veszendőbe megy. Így ha a minőség maximalizálása a cél egy fix fájl mérettel, akkor eléggé rossz ötlet nem 16 valamelyik többszörösét használni méretként.
A legtöbb DVD-n van valamekkora fekete sáv a sarkokban. Ha ezeket békén hagyod, akkor több módon is nagyon rontják a minőséget.
Az MPEG-típusú tömörítés nagyban függ a frekvencia tartományok transzformálásától is, általában a Diszkrét Koszinusz Transzformációt (DCT) használják, ami hasonló a Fourier transzformációhoz. Ez a fajta kódolás hatékony a minták és a sima átmenetek átalakításához, de nehezen bírkózik meg az éles élekkel. Ezek elkódolásához sokkal több bitre van szüksége, különben egy gyűrűsödésnek nevezett mellékhatás jelenik meg.
A frekvencia transzformáció (DCT) külön hajtódik végre minden egyes makroblokkon (tulajdonképpen minden blokkon), így ez a probléma csak akkor jelentkezik, ha az éles él a blokkon belül van. Ha a fekete határ épp olyan pixel határon kezdődik, ami 16 többszöröse, akkor nincs probléma. Habár a fekete határok a DVD-ken ritkán vannak szépen eligazítva, így a gyakorlatban majdnem mindig vágni kell, hogy elkerüld ez a büntetést.
A frekvencia tartományok kódolása mellett az MPEG-típusú tömörítés mozgó vektorokat használ a képkockák közötti változások ábrázolásához. A mozgó vektorok természetesen kevésbé hatékonyak a sarkokból érkező új tartalomnál, mert az még nincs jelen az előző képkockán. Amíg a tartalom a sarkok felé terjed ki, a mozgó vektoroknak nincs problémájuk a tartalom kifelé mozgásával. Habár a fekete határok megjelenésekor lehetnek gondok:
Minden egyes makroblokknál az MPEG-típusú kódolás egy vektort is eltárol, mely azt mondja meg, hogy az előző képkocka melyik részét kell átmásolni ebbe a makroblokkba a következő kocka megbecsléséhez. Csak a megmaradt különbséget kell elkódolni. Ha a makroblokkot kettéosztja a kép széle és a fekete sáv, akkor a kép többi részének mozgó vektorai felül fogják írni a fekete sávot. Ez azt jelenti, hogy sok bitet kell elpazarolni vagy a határ felülírt részének újrafeketítéséhez vagy (inkább) a mozgó vektor nem kerül felhasználásra és így a makroblokk összes változását expliciten el kell kódolni. Mindkét esetben jelentősen romlik a kódolás hatékonysága.
Ez a probléma szintén csak akkor jelentkezik, ha a fekete sáv nem 16 többszörösű pixel-határon van.
Végül tegyük fel, hogy van egy makroblokkunk a kép belsejében és egy objektum mozog be ebbe a blokkba a kép sarka felől. Az MPEG-típusú kódolás nem tudja azt mondani, hogy "másold át azt a részt, ami a kép belsejében van, de a fekete sávot ne". Így a fekete sáv is átmásolódik és így rengeteg bitet kell feláldozni a kép ott lévő részének újrakódolásához.
Ha a kép tovább fut az elkódolt terület sarka felé, az MPEG-nek speciális optimalizációi vannak az kép szélén lévő pixelek ismétlődő másolására, ha a mozgó vektorok a kódolt területen kívülről jönnek. Ez a tulajdonság haszontalanná válik, ha a filmen fekete sávok vannak. Az első két problémával ellentétben itt nem segít a 16 többszörösére való igazítás.
Habár a sávok teljesen feketék és soha nem változnak, mindenképpen egy kis plusz munkát igényelnek, mivel több macroblokk van.
A fenti okok miatt javasolt, hogy teljesen vágd le a fekete sávokat. Továbbá ha a kép sarkainál zaros/torz rész van, ennek a levágása is javít a kódolási hatékonyságon. A keményvonalas videósok, akik az eredeti tartalmat akarják megtartani, amennyire csak lehet, biztos tiltakozni fognak ez ellen, de ha nem tervezed konstant kvantálás használatát, akkor a vágás miatt nyert minőségjavulás jelentősen nagyobb lesz, mint a sarkok levágása miatti információvesztés.
Emlékezz rá az előző fejezetből, hogy a végső képméret, amibe kódolsz, 16 többszöröse ajánlott, hogy legyen (mind szélességben, mind magasságban). Ezt vágással, méretezéssel vagy ezek kombinációjával érheted el.
Vágásnál van egy pár ökölszabály, amit jó ha betartasz, ha nem akarsz kárt tenni a filmben. A normál YUV formátum 4:2:0, a chroma (szín) információkat almintaként tárolja, pl. a chroma csak fele annyiszor kerül mintázásra minden irányban, mint a luma (intenzítás) információk. Tanulmányozd ezt a diagramot, ahol L jelenti a luma mintázási pontokat és C a chroma-kat!
L | L | L | L | L | L | L | L |
C | C | C | C | ||||
L | L | L | L | L | L | L | L |
L | L | L | L | L | L | L | L |
C | C | C | C | ||||
L | L | L | L | L | L | L | L |
Amint láthatod, a kép sorai és oszlopai természetszerűleg párokba rendeződnek. Így a vágási eltolásodnak és a méreteidnek páros számoknak kell lenniük. Ha nem, akkor a chroma nem fog rendes sort alkotni a luma-val. Elméletben lehetséges a vágás páratlan eltolással, de ehhez a chroma újramintázása szükséges, ami egy veszteséges művelet és nem is támogatja a vágó szűrő.
Továbbá az átlapolt videót a következőképpen mintázzák:
Top field | Bottom field | ||||||||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L | ||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L | ||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L | ||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L |
Amint láthatod a minták nem ismétlődnek meg a 4 sor után. Így az átlapolt videóhoz a vágás y-eltolásának és a magasságának 4 többszörösének kell lennie.
A natív DVD felbontás 720x480 NTSC-vel és 720x576 PAL-lal, de van egy arányjelző is, ami megmutatja, hogy teljes képernyős (4:3) vagy széles vásznú (16:9). Sok (ha nem az összes) széles képernyős DVD nem szigorúan 16:9-es, vagy 1.85:1-hez vagy 2.35:1-hez (cinescope). Ez azt jelenti, hogy fekete sávok lesznek a videón, amit le kell vágni.
Az MPlayer rendelkezik egy crop detection szűrővel, ami megállapítja a levágandó téglalapot (-vf cropdetect). Futtasd az MPlayert a -vf cropdetect kapcsolóval és kiírja a vágási beállításokat a határok eltávolításához. A filmet elegendő ideig kell engedned futni ahhoz, hogy legyen teljesen lefedett kép és helyes vágási eredményeket kapj.
Ezután teszteld le a kapott értékeket az MPlayerrel, felhasználva a cropdetect által kiírt parancssort és állíts a téglalapon, ha szükséges. A téglalap szűrő segít neked a vágási téglalap filmen való, interaktív módon történő elhelyezésében. Emlékezz, és kövesd a fenti oszthatósági ökölszabályokat, nehogy félreigazítsd a chroma plane-eket.
Bizonyos esetekben a méretezés nem kívánatos. A méretezés függőleges irányban nehéz átlapolt videónál és ha meg akarod őrizni az átlapoltságot, tartózkodnod kell a méretezéstől. Ha nem fogsz méretezni, de 16 többszörösét akarod használni képméretként, túl kell vágnod a filmet. Ne vágj kisebbet, mert a fekete szélek nagyon rosszak kódoláskor!
Mivel az MPEG-4 16x16-os macroblock-okat használ, meg kell győződnöd róla, hogy a kódolt videó mindegyik dimenziója 16 többszöröse-e, különben rontod a minőséget, különösen alacsony bitrátánál. Ezt megteheted a levágandó terület szélességének és magasságának 16 legközelebbi többszörösére való kerekítésével. Amint az már szerepelt korábban, vágásnál növelni szeretnéd az y-offszetet a régi és az új magasság közötti különbség felével, így a keletkező videó elmozdul a kép középpontjából. A DVD videó mintavételezési módja miatt meg kell győződnöd róla, hogy az offszet páros szám-e. (Valójában íratlan szabály, hogy soha ne használj páratlan értékeket semmilyen paraméternek se, ha vágsz vagy méretezel egy videót.) Ha nem akarsz pár extra pixelt eldobni, akkor a videó méretezését kell megfontolnod inkább. Ezt nézzük meg a következő példánkban. Tulajdonképpen engedélyezheted a cropdetect szűrőnek, hogy ezt az egészet megcsinálja helyetted, mivel van egy opcionális kerekítési paramétere, ami alapértelmezésként 16.
Szintén figyelned kell a "félfekete" pixelekre a sarkokban. Győződj meg róla, hogy ezeket szintén levágtad, különben olyan biteket pazarolsz el ott, amiket máshoz jobban felhasználhatnál.
Miután mindent elmondtunk és kész, valószínűleg olyan videót kapsz, aminek
a pixeljei nem éppen 1.85:1 vagy 2.35:1 arányúak, de legalább valami hasonló.
Az új képarányt kiszámíthatod kézzel is, de a MEncoder
rendelkezik egy kapcsolóval a libavcodec
hez, amit autoaspect-nek
hívnak, ami megcsinálja ezt neked. Ne méretezd át ezt a videót a pixelek
négyszögletesítéséhez, hacsak nem akarod pazarolni a helyet a merevlemezeden.
A méretezés történhet lejátszáskor, és a lejátszó az AVI-ban tárolt arányt
fogja használni a megfelelő felbontás megállapításához.
Sajnos nem minden lejátszó teszi kötelezővé ezt az auto-méretezési
információt, ezért lehet, hogy mégis átméretezésre kényszerülsz.
Ha nem konstans kvantálási módban fogsz kódolni, akkor meg kell adnod a bitrátát. A bitráta koncepciója elég egyszerű. A filmed tárolására másodpercenként felhasznált bitek (átlagos) száma. Normális esetben a bitrátát kilobit (1000 bit) per másodpercben mérik. A filmed mérete a lemezen egyenlő a bitráta és a film hosszának szorzatával, plusz egy kis "túlterheléssel" (lásd az AVI konténert például). Az egyéb paraméterek, mint a méretezés, vágás, stb. nem változtatják meg a fájl méretét, amíg nem változtatsz a bitrátán is.
A bitráta nem aránylik a felbontáshoz. Ezért mondhatjuk, hogy egy 320x240-es fájl 200 kbit/sec-kel nem lesz ugyan olyan minőségű, mint ugyan az a film 640x480-ban, 800 kbit/sec-kel! Ennek két oka van:
Érzékelhető: Jobban észreveszed az MPEG hibáit ha fel vannak nagyítva! A hibák a blokkok (8x8) méretezéséből adódnak. A szemed nem látja meg a hibát 4800 kicsi blokkban olyan könnyen, mint 1200 nagy blokkban (feltételezve, hogy mindkettőt teljes képernyőre nagyítod).
Elméleti: Ha egy képet leméretezel, de ugyan akkora méretű (8x8) blokkokat használsz a frekvenciatartomány transzformálásához, több adatot mozgatsz a magasabb frekvenciatartományokba. Egyszerűen fogalmazva, minden pixel több részletet fog tartalmazni, mint előtte. Így habár a leméretezett képed kiterjedésében az információ 1/4-edét tartalmazza csak, mégis az információ nagy részét tartalmazhatja a frekvenciatartományban (feltéve, hogy a magas frekvenciák nincsenek kellőképpen kihasználva az eredeti 640x480-as képen).
A régi leírások egy "bit per pixel" megközelítés szerint javasolták a bitráta és a felbontás megválasztását, ez azonban általában nem helyes a fentiek miatt. A legjobb becslésnek az tűnik, ha a bitráta léptéke a felbontás négyzetgyökével arányos, így a 320x240 és 400 kbit/sec összehasonlítható a 640x480 és 800 kbit/sec-kel. Azonban ez még nem lett bizonyítva sem elméleti sem gyakorlati törvénnyel. Továbbá, tekintve, hogy a filmek nagyon változatosak a zajtól, részletességtől, a mozgás szögétől, és a többitől függően, haszontalan általános tanácsokat adni bit per átló hosszára vonatkozóan (a bit per pixel analógiája, a négyzetgyök felhasználásával).
Eddig csak a felbontás és a bitráta kiválasztás nehézségeiről beszéltünk.
A következő képések segítenek a kódolásod felbontásának kiszámításában,
a videód túlzott mértékben történő torzítása nélkül, a forrás videó
számos tulajdonságának figyelembe vételével.
Először, ki kell számítanod az elkódolt képarányt:
ARc = (Wc x (ARa / PRdvd )) / Hc
ahol:
Wc és Hc a vágott videó szélessége és a magassága,
ARa a megjelenített kép aránya, ami általában 4/3 vagy 16/9,
PRdvd a DVD pixel rátája, ami PAL DVD-k esetén 1.25=(720/576) és 1.5=(720/480) NTSC DVD-knél.
Ezután, kiszámíthatod az X és Y felbontást, egy bizonyos Tömörítési
Minőség (Compression Quality, CQ) faktornak megfelelően:
ResY = INT(SQRT( 1000*Bitrate/25/ARc/CQ )/16) * 16
és
ResX = INT( ResY * ARc / 16) * 16
Oké, de mi az a CQ? A CQ reprezentálja a kódolás pixelenkénti és képkockánkénti bitszükségletét. Nagy vonalakban minél nagyobb a CQ, annál kisebb a valószínűsége, hogy kódolási hibát fog látni. Bár ha van cél méret a filmedhez (1 vagy 2 CD például), akkor korlátozott a felhasználható bitek száma; ezért szükséges, hogy megfelelő arányt találj a tömörség és a minőség között.
A CQ függ a bitrátától, a videó codec hatékonyságától és a film felbontásától.
Ha növelni akarod a CQ-t, általában leméretezést kell végezned a filmen,
mivel a bitráta a cél méret és a film hosszából számítódik, ami konstans.
Az MPEG-4 ASP codec-ekkel, mint pl. az Xvid
és a libavcodec
, egy 0,18 alatti
CQ általában nagyon kockás képet eredményez, mert nincs
elég bit minden egyes makroblokk információinak eltárolásához. (Az MPEG4,
mint sok más codec, csoportokba gyűjti a pixeleket a kép tömörítéséhez;
ha nincs elég bit, láthatóvá válik ezen blokkok széle.)
Ezért ésszerű a CQ-t a 0,20-0,22-es tartományból választani 1 CD-s rip
esetén, és 0,26-0,28-ból a 2 CD-snél a szabványos kódolási opciókkal.
A libavcodec
-hez
és az
Xvid
-hez
itt felsoroltaknál fejlettebb kódolási opciók segítségével lehetséges
ugyan ilyen minőség elérése 0,18-0,20-as CQ mellett egy 1 CD-s rip
esetén és 0,24-0,26-ossal 2 CD-s rip-nél.
Az MPEG-4 AVC codec-eknél, mint pl. az x264
,
használhatsz 0,14-0,16-os CQ tartományt a szabványos kódolási opciókkal
és lemehetsz akár 0,10-0,12-ig is az
x264
fejlett kódolási beállításaival.
Kérlek figyelj rá, hogy a CQ csak egy mutató, mely az elkódolt tartalomtól függ, egy 0,18-as CQ-val jól nézhet ki egy Bergman, szemben az olyan filmekkel, mint például a Mátrix, ami sok gyors-mozgású részt tartalmaz. Másrészt nem éri meg növelni a CQ-t 0,30-nál magasabbra, mert csak pazarolni fogod a biteket észrevehető minőségi nyereség nélkül. Vedd figyelembe, amint azt már korábban is említettük, hogy az alacsony felbontású videókhoz nagyobb CQ kell (összehasonlítva pl. a DVD felbontással), hogy jól nézzen ki.
A MEncoder videó szűrői használatának ismerete alapvető fontosságú a jó kódoláshoz. Az összes videó feldolgozás a szűrőkön keresztül történik -- vágás, méretezés, szín állítás, zajszűrés, élesítés, deinterlacing, telecine, inverz telecine és deblocking, csak hogy néhányat megemlítsünk. A támogatott formátumok sokaságával együtt a MEncoder szűrőinek változatossága a fő előnye a hasonló programokkal szemben.
A szűrők láncban töltődnek be a -vf kapcsoló használatával:
-vf szuro1=opciok,szuro2=opciok,...
A legtöbb szűrő több numerikus opciót vár, kettőspontokkal elválasztva, de igazából a szintaxis szűrőről szűrőre változik, ezért olvasd el a man oldal általad használni kívánt szűrőhöz tartozó részét!
A szűrők olyan sorrendben módosítják a videót, ahogy be lettek töltve. Például a következő lánc:
-vf crop=688:464:12:4,scale=640:464
először kivágja a 688x464 területű régiót (12,4)-es bal felső sarokkal, majd az eredményt leméretezi 640x464-re.
Bizonyos szűrőket a szűrő lánc elején, vagy ahhoz közel kell betölteni, ahhoz, hogy a videó dekódolótól érkező információkat megkapja, azok ne vesszenek el vagy változzanak meg másik szűrő miatt. A legjobb példa erre a pp (utófeldolgozás, csak ha deblock vagy dering műveleteket hajt végre), az spp (másik utófeldolgozó az MPEG mellékhatások eltávolítására), a pullup (inverz telecine) és a softpulldown (a soft telecine hard telecine-re történő konvertálása).
Általában olyan kevés szűrést szeretnél, amennyit csak lehet, hogy az eredeti DVD forráshoz hű maradj. A vágás gyakran elkerülhetetlen (amint azt fentebb leírtuk), de ne méretezd a videót. Noha a kicsinyítés néha előnyben részesül a magas kvantálóknál, mi szeretnénk elkerülni mindkét dolgot: emlékezz, hogy mit határoztunk el kezdetben a bitek minőségért történő feláldozásáról.
Szintén hagyd békén a gamma, kontraszt, fényerő, stb. beállításokat. Ami jól néz ki a monitorodon nem biztos, hogy másnál is szép lesz. Ezeket a beállításokat lejátszáskor kell elvégezni.
Az egyetlen dolog, amit szeretnél, a videó nagyon könnyű zajszűrőn történő áteresztése, mint pl. -vf hqdn3d=2:1:2. Ismételten, ezen bitek jobb felhasználásáról van szó: miért vesztegessük el őket a zaj kódolására, ha ezt a zajt lejátszás közben is hozzá tudod adni? A hqdn3d paramétereinek növelésével még jobb tömörítettséget érhetsz el, de ha túl magasra állítod az értékeket, akkor láthatóan rontod a kép minőségét. A fent javasolt értékek (2:1:2) eléggé konzervatívak; kísérletezz szabadon nagyobb értékekkel és ellenőrizd az eredményeket magad.
Majdnem minden filmet 24 fps-sel fényképeznek. Mivel az NTSC 30000/1001 fps-es, némi átdolgozás szükséges ezen a 24 fps-es videón, hogy a megfelelő NTSC framerátával menjen. Ez az eljárást 3:2 pulldown-nak hívják, de általában csak telecine néven hivatkoznak rá (mivel a pulldownt gyakran használják a telecine eljárás során), ami egyszerűen leírva lelassítja a filmet 24000/1001 fps-re és megismétel minden negyedik képkockát.
Ez nem speciális feldolgozás, habár minden PAL DVD esetében megcsinálják, ami 25 fps-sel megy. (Műszaki szempontból a PAL-t lehet telecine-elni, ezt 2:2 pulldown-nak hívják, de ez nem terjedt el a gyakorlatban.) A 24 fps-es filmet egyszerűen 25 fps-sel játszák le. Az eredmény az, hogy a film kissé gyorsabban megy, de ha nem vagy egy földönkívüli, valószínűleg nem fogod észrevenni a különbséget. A legtöbb PAL DVD zajszint-javított audiót tartalmaz, így amikor 25 fps-sel játszák le őket, a hangok jól hangzanak, még akkor is, ha az audió sáv (és ebből adódóan az egész film) az NTSC DVD-kénél 4%-kal lassabb futási idővel megy.
Mivel a PAL DVD-ben a videót nem változtatták meg, nem kell aggódnod a frameráta miatt. A forrás 25 fps-es és a rip-ed is 25 fps-es lesz. De ha egy NTSC DVD filmet rippelsz, fordított telecine-t kell alkalmaznod.
A 24 fps-sel felvett filmeknél az NTSC DVD-n lévő videó vagy telecine-elt 30000/1001 fps-re vagy pedig progresszív 24000/1001 fps-es és szándék szerint a DVD lejátszó végzi a telecine-t lejátszás közben. Másrészről a TV sorozatok általában csak átlapoltak, nem telecine-ltek. Ez azonban nem ökölszabály: néhány TV sorozat átlapolt (mint a Buffy a Vámpír gyilkos) míg másik a progresszív és az átlapolt keverékei (mint pl. az Angyal vagy a 24).
Javasoljuk, hogy olvasd el a mit kezdjünk a telecine-nel és az átlapolással NTSC DVD-ken részt, hogy kezelni tudd a különböző lehetőségeket.
Bár ha legtöbbször csak filmeket rippelsz, valószínűleg vagy 24 fps-es progresszív vagy telecine-lt videóval lesz dolgod, ezekben az esetekben használhatod a pullup szűrőt a -vf pullup,softskip kapcsolóval.
Ha az általad elkódolni kívánt film átlapolt (NTSC videó vagy PAL videó), el kell döntened, hogy akarsz-e deinterlacing-et vagy sem. A deinterlacing használhatóvá teszi a filmed progresszív scan-es megjelenítőkön, mint pl. a számítógép monitorok vagy a projektorok, van ára is: az 50 vagy 60000/1001-es mezőráta feleződik 25 vagy 30000/1001 képkocka per másodpercre és így a filmedben tárolt információk durván fele elveszik a jelentős mozgást tartalmazó részekben.
Így hát ha archiválási okokból jó minőség kell, akkor kerüld el a deinterlace-t. Bármikor deinterlace-lheted a filmet lejátszás közben is, ha progresszív scan-es megjelenítőd van. A jelenleg kapható számítógépek teljesítménye deinterlacing szűrő használatára kényszerítik a lejátszókat, ami egy kis mértékű képminőség romlást okoz. Azonban a jövő lejátszói képesek lesznek az átlapolt képernyő TV-vé történő átváltoztatására, teljes mezőrátás deinterlacing-re és az átlapolt videó 50 vagy 60000/1001 teljes képkocka per másodpercre interpolálására.
Fokozott figyelemmel kell eljárni, ha átlapolt videóval dolgozol:
A vágási magasság és y-offszet 4 többszöröse kell, hogy legyen.
Bármilyen függőleges átméretezést átlapolt módban kell elvégezni.
Az utófeldolgozó és a zajcsökkentő szűrők nem az elvártnak megfelelően működnek, ha nem gondoskodsz róla, hogy egyszerre csak egy mezővel dolgozzanak, különben a nem megfelelő használat miatt sérülhet a videó.
Mindezt észben tartva, itt az első példánk:
mencoder capture.avi
-mc 0 -oac lavc -ovc lavc -lavcopts \
vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224
Figyelj az ilme és az ildct kapcsolókra.
A MEncoder audió/videó szinkronizáló
algoritmusai azzal a szándékkal lettek megtervezve, hogy képesek
legyenek a sérült szinkronú filmek megjavítására.
De néhány esetben a képkockáknál szükségtelen kihagyásokat és duplikálásokat
valamint kis mértékben A/V deszinkronizációt okozhatnak, ha megfelelő
bementük van (természetesen az A/V szinkron dolgok csak akkor érvényesek,
ha feldolgozod vagy másolod az audió sávot a videó átkódolása közben,
ami nagyon javasolt).
Ezért lehet, hogy az alapértelmezett A/V szinkronizációra kell váltanod
a -mc 0 opcióval, vagy írd ezt bele a
~/.mplayer/mencoder
konfigurációs fájlodba,
feltéve, hogy csak hibátlan anyaggal dolgozol (DVD, TV mentés, nagyon
jó minőségű MPEG-4 rip, stb.) és nem hibás ASF/RM/MOV fájlokkal.
Ha még további különös képkocka kihagyásokat és duplázásokat akarsz elkerülni, használhatod az -mc 0 és -noskip kapcsolókat együtt is. Ez megakadályoz mindenféle A/V szinkronizációt és egy az egyben másolja a képkockákat, így nem használhatod olyan szűrőkkel, melyek megjósolhatatlanul hozzáadnak vagy elvesznek képkockákat, vagy ha a bemeneti fájlodnak változó framerátája van! Ezért a -noskip használata általában nem javasolt.
A MEncoder által támogatott, úgy nevezett "három lépéses" audió kódolás a visszajelzések szerint A/V deszinkronizációt okoz. Ez különösen akkor történik, ha bizonyos szűrőkkel együtt használják, így jelenleg nem javasolt a három lépéses audió mód használata. Ez a képesség csak kompatibilítási okok miatt maradt meg és a haladó felhasználóknak, akik tudják, hogy mikor lehet használni és mikor nem. Ha ezelőtt még soha nem hallottál a három lépéses módról, felejtsd el azt is, hogy megemlítettük!
Érkeztek jelentések A/V deszinkronizációról MEncoderrel stdin-ről történő kódolás esetén is. Ne tedd ezt! Mindig használj fájlt vagy CD/DVD/stb. eszközt forrásként.
A használandó videó codec kiválasztása több dologtól függ, mint például a méret, minőség, stream-elhetőség, használhatóság és elterjedtség, melyeket a személyes igények és a technikai korlátok határoznak meg.
Tömörítési hatékonyság:
Érthető módon a legtöbb új generációs codec a minőség és a tömörítés
javítására íródott.
Ezért ezen leírás szerzői és még sok más szerint sem tudsz rosszat
választani,
[1]
akár MPEG-4 AVC codec-et választasz, mint például az
x264
, akár egy MPEG-4 ASP
codec-et, mint pl. a libavcodec
MPEG-4 vagy az Xvid
.
(A haladóbb codec fejlesztőket talán érdekelheti Michael
Niedermayer véleménye, a
"miért utáljuk az MPEG4-et".)
Valószínűleg az MPEG-4 ASP-vel jobb minőséget érhetsz el, mint az
MPEG-2 codec-ekkel.
Bár az új codec-ek, melyek még erőteljes fejlesztés alatt állnak, tartalmazhatnak hibákat, amiket még nem fedeztek fel és amik tönkretehetnek egy kódolást. Ez a hátránya az új dolgok használatának.
Mint ahogy az is, hogy amikor új codec-et kezdesz használni, időt kell szánnod az opcióinak a megismerésére, hogy tudd, miket kell beállítanod a kívánt képminőség eléréséhez.
Hardveres kompatibilítás:
Általában sok idő kell, míg az asztali lejátszók elkezdenek támogatni
egy új codec-et.
Ennek eredménye, hogy a legtöbb csak MPEG-1 (mint a VCD, XVCD és KVCD),
MPEG-2 (mint a DVD, SVCD és KVCD) és MPEG-4 ASP (mint a DivX, a
libavcodec
LMP4-e és az
Xvid
) lejátszására képes
(Vigyázz: Legtöbbször nem ismerik az MPEG-4 ASP összes képességét).
Nézd meg a lejátszód technikai specifikációját (ha van) vagy google-ozz
körbe további információért.
Legjobb minőség kontra kódolási idő:
A már jó ideje létező codec-ek (mint pl. a
libavcodec
MPEG-4-e és az
Xvid
) általában nagyon jól
optimalizáltak mindenféle okos algoritmussal és SIMD assembly kóddal.
Ezért a legjobb minőség per kódolási idő arány felé tartanak.
Azonban van néhány nagyon fejlett opció, amit ha engedélyezel, nagyon
nagy mértékben lelassítják a kódolást csekély javulást produkálva.
Ha a fantasztikus sebességet keresed, a codec alapértelmezett beállításai körül nézelődj (azonban így is ajánlott kipróbálni egyéb opciókat, amiket ezen leírás más fejezetei említenek).
Megfontolandó olyan codec-et választani, ami több-szálas módban
dolgozza fel a forrást, azonban ez csak a több processzoros géppel
rendelkezőknek jelent előnyt.
A libavcodec
MPEG-4 tudja
ezt, de a sebességnövekedés eléggé korlátolt és egy kis negatív hatása
van a képminőségre.
Az Xvid
több-szálas kódolása,
melyet a threads opció kapcsol be, használható a
kódolási sebesség — átlagban kb. 40-60%-os — növelésére,
nagyon csekély vagy semmilyen képromlással.
Az x264
is tudja a több-szálas
kódolást, ami jelenleg CPU magonként 94%-kal gyorsítja fel a kódolást
míg a PSNR-t kb. 0.005dB és 0.01dB közötti értékkel csökkenti.
Egyéni igények:
Itt válik a dolog a legirrálisabbá: ugyan azért, amiért sokan leragadtak
a DivX 3-nál évekig, miközben az új codec-ek már csodákat műveltek,
néhányan az Xvid
-et vagy a
libavcodec
MPEG-4-ét részesítik
előnyben az x264
-hez képest.
A döntést magadnak kell meghoznod; ne hallgass azokra, akik egy codec-re esküsznek. Vegyél pár példa klippet nyers forrásokból és hasonlítsd össze a különböző kódolási opciókat és codec-eket, hogy megtudd, melyik a legjobb neked. A legjobb codec mindig az, amelyikhez a legjobban értesz, amelyik a legjobban néz ki szerinted a monitorodon. [2]!
Kérjük, nézd meg a codec-ek és konténer formátumok kiválasztásáról szóló fejezetet a támogatott codec-ek listájához.
Az audió egy sokkal könnyebben megoldható probléma: ha számít a minőség, akkor egyszerűen hagyd úgy, ahogy van. Még az AC-3 5.1 stream-ek is leginkább 448Kbit/s-osak és minden bitet megérnek. Csábító lehet az audió jó minőségű Vorbis-ba történő konvertálása, de az, hogy ma nincs egy A/V receiver-ed az AC-3 áteresztéshez, nem jelenti azt, hogy holnap sem lesz. Készíts a jövőben is használható DVD rip-eket az AC-3 stream megtartásával. Megtarthatod az AC-3 stream-et a kódolás közben a videó stream-be történő közvetlen átmásolással. Vagy ki is szedheted az AC-3 stream-et, hogy elkeverd valamilyen konténer formátumba, mint pl. a NUT vagy a Matroska.
mplayerforras_fajl.vob
-aid 129 -dumpaudio -dumpfilehang.ac3
a 129-es audió sávot kiszedi a sound.ac3
nevű
fájlba a source_file.vob
-ból (NB: a DVD VOB
fájlok általában különböző audió számozást használnak, ami azt jelenti,
hogy a 129-es VOB audio sáv a 2. audió sáv a fájlban).
De néha tényleg nincs más választásod, mint tovább tömöríteni a hangot így több bit jut a videóra. A legtöbb ember vagy MP3-at vagy Vorbis-t választ az audió tömörítéséhez. Míg az utóbbi nagyon hely-takarékos codec, az MP3-nak jobb a hardveres lejátszók terén a támogatottsága, bár ez a trend változóban van.
Ne használd a -nosound-ot ha audióval rendelkező fájlt kódolsz, akkor se, ha az audiót később, elkülönítve kódolod és kevered. Bár ideális esetben működik, a -nosound opció okozhat némi problémát a parancssori kódolási beállításaidban. Más szavakkal, a zene sáv megléte biztosítja a „Too many audio packets in the buffer” (Túl sok audió csomag a bufferban) és hasonló üzenetek elkerülését és a megfelelő szinkront.
Fel kell dolgoznod a MEncoderrel a hangot. Például az -oac copy-val átmásolhatod az eredeti hangsávot a kódolás közben vagy átkonvertálhatod "könnyű" 4 kHz-es mono WAV PCM-be a -oac pcm -channels 1 -srate 4000 kapcsolóval. Különben bizonyos esetekben olyan videó fájlt fog létrehozni, amiben nem lesz szinkronban az audió. Akkor fordulhat elő ilyen eset, ha a videó kockák száma a forrás fájlban nem egyezik meg az audió keretek teljes hosszával vagy folyamatossági hiba/szakadás miatt hiányzó vagy extra audió keretek vannak a fájlban. A helyes megoldás ezen típusú problémák kezelésére csend beillesztése vagy az audió keretek vágása ezeken a pontokon. Azonban a MPlayer ezt nem tudja megtenni, így ha az AC-3-at demuxálod és egy másik alkalmazással kódolod (vagy kimented PCM-be az MPlayerrel), a szeletek hibásan maradnak benne és csak képkocka eldobással/duplázással lehet javítani. Amíg a MEncoder látja az audiót a videó kódolása közben, meg tudja csinálni ezt az eldobást/duplázást (ami általában rendben van, mert teljesen sötét/jelentet váltásos helyeken történik), de ha a MEncoder nem látja az audiót, csak feldolgoz minden képkockát úgy ahogy van és nem fog illeszkedni a végső audió folyamhoz ha például összeilleszted az audió és a videó sávodat egy Matroska fájlba.
Mindenek előtt át kell konvertálnod a DVD hangját WAV fájlba, hogy az audió codec használhassa bemenetként. Például:
mplayerforras_fajl.vob
-ao pcm:file=cel_hang.wav
\ -vc dummy -aid 1 -vo null
ki fogja szedni a második audió sávot a source_file.vob
fájlból a destination_sound.wav
fájlba.
Kódolás előtt valószínűleg normalizálni akarod a hangot, mivel a DVD
audió sávjait legtöbbször alacsony hangerővel rögzítik.
Használhatod a normalize eszközt, ami
megtalálható a legtöbb disztribúcióban.
Ha Windows-t használsz, egy eszköz, mint pl. a BeSweet
megcsinálja ezt neked.
Vagy Vorbis-ba vagy MP3-ba kódolsz.
Például:
oggenc -q1 cel_hang.wav
elkódolja a destination_sound.wav
-ot az 1-es
kódolási minsőséggel, ami nagyjából megfelel 80Kb/s-nak és annak a
minimum minőségnek, amit legalább használnod kell, ha érdekel a minőség.
Kérlek jegyezd meg, hogy a MEncoder jelenleg
nem tud Ogg Vorbis sávokat belekeverni a kimeneti fájlba, mert csak AVI
és MPEG konténereket támogat kimenetként és mindkettőnél audió/videó
lejátszási szinkronizációs problémákat okozhat néhány lejátszóval, ha
az AVI fájl VBR-es audió stream-et tartalmaz, mint pl. a Vorbis.
De ne aggódj, ez a dokumentáció megmutatja, hogy hogy tudod
ezt megcsinálni egyéb programokkal.
Most, hogy elkódoltad a videódat, valószínűleg szeretnéd elkeverni egy vagy több audió sávval együtt egy film konténerbe, mint pl. az AVI, MPEG, Matroska vagy a NUT. A MEncoder jelenleg csak MPEG és AVI konténer formátumokba tud natív audió és videó kimenetet készíteni. Például:
mencoder -oac copy -ovc copy -okimenet_film.avi
\ -audiofilebemenet_audio.mp2
bemenet_video.avi
Ez a bemenet_video.avi
videó fájlból
és a bemenet_audio.mp2
audió fájlból
elkészíti a kimenet_film.avi
fájlt.
Ez a parancs működik MPEG-1 layer I, II és III (ismertebb nevén
MP3) audióval, WAV és egy pár más audió formátummal.
A MEncoderben kísérleti jelleggel van
libavformat
támogatás, ami
az FFmpeg projektből egy függvénykönyvtár, ami számos konténer keverését és
demux-álását támogatja.
Például:
mencoder -oac copy -ovc copy -okimenet_film.asf
-audiofilebemenet_audio.mp2
\bemenet_video.avi
-of lavf -lavfopts format=asf
Ez ugyan azt csinálja, mint az előbbi példa, de a kimeneti
konténer ASF lesz.
Kérlek figyelj, hogy ez a támogatás még nagyon kísérleti (de minden
nap egyre jobb lesz) és csak akkor működik, ha az
MPlayert a
libavformat
támogatás
bekapcsolásával fordítottad (ami azt jelenti, hogy az előre
csomagolt binárisok a legtöbb esetben nem fognak működni).
Néhány súlyos A/V szinkron problémát tapasztalhatsz, ha a videódat valamilyen audió sávval akarod összekeverni, mégpedig azt, hogy akár hogyan állítod az audió késleltetést, soha nem lesz megfelelő a szinkron. Ez akkor történhet meg, ha olyan videó szűrőt használsz, ami eldob vagy megdupláz képkockákat, mint pl. az inverz telecine szűrők. Javasolt a harddup videű szűrő hozzáillesztése a szűrő lánc végéhez ezen problémák elkerülése érdekében.
A harddup nélkül ha a MEncoder meg akar duplázni egy képkockát, a keverőre bízza a jelölés konténerbe helyezését, hogy az utolsó képkocka még egyszer megjelenjen a szinkron megtartása végett, aktuális képkocka írása nélkül. A harddup-pal a MEncoder ehelyett egyszerűen csak újra átküldi a szűrő láncon az utolsó megjelenített képkockát. Ez azt jelenti, hogy a kódoló pontosan ugyan azt a képkockát kapja meg kétszer és tömöríti be. Ez kicsit nagyobb fájlt eredményez, de nem okoz problémát demuxálásnál vagy másik konténer formátumba történő újrakeverésnél.
Nincs más választásod, mint a harddup használata az
olyan konténer formátumokkal, amelyek nincsenek szoros összefüggésben
a MEncoderrel. Ezek pl. azok, amelyeket a
libavformat
-on keresztül
támogat, ami nem támogatja a képkocka duplázást konténer szinten.
Habár a legszélesebb körben támogatott konténer formátum az MPEG-1 után, az AVI-nak is van néhány nagy hátránya. Talán a legnyilvánvalóbb a túlterhelés. Az AVi fájl minden egyes chunk-ja 24 bájtot pazarol a fejlécekre és az indexre. Ez egy kicsit több mint 5 MB óránként vagy 1-2,5% plusz egy 700 MB-os filmnél. Ez nem tűnik soknak, de eldöntheti, hogy 700 kbit/sec-os videót tudsz csak használni vagy 714 kbit/sec-osat, ahol minden bit a minőségre megy.
Ezen hatalmas hátrány mellett az AVI-nak a következő fő korlátai vannak:
Csak fix-fps-ű tartalmat tud tárolni. Ez különleges korlátozás, ha az eredeti anyag, amit el akarsz kódolni, kevert tartalom, például NTSC videó és film anyag keveréke. Már vannak olyan hack-ek, amivel kevert framerátás tartalmat lehetne AVI-ba tenni, de ötszörös vagy még nagyobb mértékben növelik a (már amúgy is nagy) túlterhelést, így nem praktikusak.
Az AVI fájlokban az audiónak vagy konstans-bitrátásnak (CBR) vagy konstans-képkocka méretűnek (pl. minden képkocka ugyan annyi számú mintát dekódol) kell lennie. Sajnos a leghatékonyabb codec, a Vorbis, egyik kívánalomnak sem felel meg. Ezért ha AVI-ban tárolod a filmjeidet, egy kevésbé hatékony codec-et kell használnod, mint pl. az MP3 vagy az AC-3.
A fentiek miatt a MEncoder jelenleg nem támogatja a változó-fps-es kimenetet vagy a Vorbis kódolást. Így ezeket nem korlátozásként fogod fel, ha a MEncoder az egyetlen eszköz, mellyel kódolsz. Azonban lehetséges a MEncodert csak a videó kódolására használni és valamilyen egyéb eszközzel elkódolni az audiót majd összekeverni őket egy konténer formátumba.
A Matroska szabad, nyílt szabványú konténer formátum, melynek célja, hogy rengeteg továbbfejlesztett képességet biztosítson, amit a régebbi konténerek, mint pl. az AVI nem tud kezelni. például a Matroska támogatja a változó bitrátás audió tartalmat (VBR), változó framerátát (VFR), fejezeteket, fájl csatolásokat, hiba kereső kódot (EDC) és a modern A/V codec-eket, mint az "Advanced Audio Coding" (AAC), "Vorbis" vagy "MPEG-4 AVC" (H.264), szemben az AVI-val, amelyik egyiket sem.
A Matroska fájlok készítéséhez szükséges eszközöket együtt mkvtoolnix-nek hívják és elérhetőek a legtöbb Unix platformon, akárcsak Windowson. Mivel a Matroska nyílt szabványú, találhatsz más eszközöket is, amik jobban megfelelnek neked, de mivel az mkvtoolnix a leggyakrabban használt, és maga a Matroska csapat támogatja, csak ennek a használatát mutatjuk be.
Talán a legegyszerűbb módszer, hogy elindulj a Matroska-val, az MMG használata, az mkvtoolnix-szel szállított grafikus frontend és kövesd a mkvmerge GUI (mmg) leírást.
A parancssor segítségével is összekverheted az audió és videó fájlokat:
mkvmerge -okimenet.mkv
bemenet_video.avi
bemenet_audio1.mp3
bemenet_audio2.ac3
Ez a bemenet_video.avi
fájlt és a
két audió fájlt, a bemenet_audio1.mp3
-at
és a bemenet_audio2.ac3
-at összefűzi a
kimenet.mkv
Matroska fájlba.
A Matroska, mint ahogy azt már megemlítettem, ennél sokkal többre
képes, mint pl. több audió sáv használatára (beleértve az audió/videó
szinkronizáció finom-hangolását), fejezetek, feliratok, vágás, stb...
Kérlek olvasd el ezen alkalmazások dokumentációit a részletekért.
Mi az a telecine? Ha nem érted teljesen, ami ebben a dokumentumban le van írva, olvasd el a Wikipedia telecine szócikkét. Ez egy érthető és meglehetősen átfogó leírás arról, hogy mi is az a telecine.
Megjegyzés a számokhoz. Sok dokumentáció, beleértve a fent belinkelt cikket is, az NTSC videó mező per másodperc értékét 59.94-ként határozza meg, és a megfelelő képkocka per másodperc értéket 29.97-nek (telecine-s és átlapolt) és 23.976-nak írja (progresszív). Az egyszerűség kedvéért sok dokumentáció még ezeket a számokat is lekerekíti 60-ra, 30-ra és 24-re.
Pontosan fogalmazva az összes szám csak közelítés. A fekete-fehér NTSC videó pontosan 60 mező per másodperces volt, de később 60000/1001-et választottak, hogy a szín adatokat hozzáigazítsák, de kompatibilisek maradjanak a kortárs fekete-fehér televíziókkal. A digitális NTSC videó (mint ami a DVD-n van) is 60000/1001 mező per másodperces. Ebből származik, hogy az átlapolt és telecine-lt videó 30000/1001 képkocka per másodperces; a progresszív videó 24000/1001 képkocka per másodperces.
A MEncoder dokumentációjának régebbi változatai és számos archivált levelezési listára küldött levél az 59.94-re, 29.97-re és a 23.976-ra hivatkozik. Az összes MEncoder dokumentáció frissítve lett a tört számokra és neked is ajánlatos ezeket használni.
-ofps 23.976 helytelen. -ofps 24000/1001 használandó helyette.
A telecine használata. Az összes videónak, amit NTSC televízión szándékoznak megjeleníteni, 60000/1001 mező per másodperc sebességűnek kell lennie. A TV-nek készített filmeket és show-kat gyakran direkt 60000/1001 mező per másodperces sebességgel fényképezik, de a mozifilmek nagy része 24 vagy 24000/1001 képkocka per másodperccel készül. Amikor a mozis film DVD-jét készítik, a videót egy telecine-nek nevezett eljárás keretében televíziós formátumra konvertálják.
Egy DVD-n a videót tulajdonképpen soha sem 60000/1001 mező per másodperccel tárolják. Abban a videóban, ami eredetileg 60000/1001-es volt, egy pár mező alkot egy képkockát, 30000/1001 képkocka per másodperces sebességet eredményezve. A hardveres DVD lejátszók ezután beolvasnak egy, a videó folyamban benne lévő jelzőt, hogy megállapítsák, hogy a páros vagy páratlan sorszámú sorok alkotják-e az első mezőt.
Általában a 24000/1001 képkocka per másodperces tartalom változatlan marad, ha DVD-re kódolják és a DVD lejátszónak kell telecine-t végezni menet közben. De néha a videót a DVD-re mentés előtt telecine-lik, akkor is, ha eredetileg 24000/1001 képkocka per másodperces volt, így 60000/1001 mező per másodperces lesz, és a lemezen 30000/1001 képkocka per másodpercesként tárolódik.
Ha megnézed az egyes képkockákat a 60000/1001 mező per másodperces videóban, telecine-lt vagy sem, az átlapolás tisztán látható bármilyen mozgásnál, mert az egyik mező (mondjuk a páros sorszámú sorok) időben 1/(60000/1001) másodperccel későbbi történést reprezentál, mint a másik. Átlapolt videó számítógépen történő lejátszáskor rondán néz ki, mert egyrészt a monitornak nagyobb a felbontása, másrészt mert a videót kockáról kockára mutatja meg, mezőről mezőre történő lejátszás helyett.
Megjegyzések:
Ez a rész csak NTSC DVD-re vonatkozik, nem a PAL-ra.
A MEncoder példa sorok a dokumentumban
nem hétköznapi felhasználásra lettek
írva. Csak a legalapvetőbb dolgokat mutatják, ami a megfelelő kategóriába
tartozó videók kódolásához szükséges. A jó DVD rip-ek készítése vagy a
libavcodec
finomhangolása a
maximális minőség eléréséhez nem tartozik ezen fejezet célkitűzései közé,
nézd meg a MEncoder kódolási útmutató
többi részét.
Sok megjegyzés vonatkozik erre a leírásra, melyek így vannak jelölve: [1]
A progresszív videót eredetileg 24000/1001 fps-sel rögzítették és változtatás nélkül tárolják a DVD-n.
Ha egy progressive DVD-t az MPlayerrel játszasz le, az MPlayer a következő sort fogja kiírni, amint a film lejátszása megkezdődik:
demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.
magyarul:
demux_mpg: 24000/1001 fps progresszív NTSC formátumot találtam, frameráta váltás.
Ettől a ponttól kezdve a demux_mpg soha sem mondhatja azt, hogy "30000/1001 fps NTSC formátumot" talált.
Ha progresszív videót nézel, soha nem láthatod meg az átlapolást. De vigyázz, néha pár telecine-s bit belekeveredik oda, ahol nem számítasz rá. Én DVD-n lévő TV műsoroknál láttam egy másodpercnyi telecine-t minden jelenet váltáskor vagy véletlen helyeken történő belenézéskor. Egyszer láttam olyan DVD-t is, aminek az első fele progresszív volt, a második fele pedig telecine-s. Ha tényleg biztosra akarsz menni, átvizsgálhatod az egész filmet:
mplayer dvd://1 -nosound -vo null -benchmark
A -benchmark kapcsoló határása az MPlayer olyan gyorsan játsza le a filmet, amennyire csak lehetséges; a hardveredtől függően sokáig is eltarthat. Minden esetben, ha a demux_mpg frameráta váltást észlel, a fenti sor azonnal megmutatja neked a váltás idejét.
Néha a progresszív videóra "soft-telecine"-ként hivatkoznak, mert a DVD lejátszónak kell ezt telecine-elnie.
A telecine-lt videót eredetileg 24000/1001 fps-sel vették fel, de telecine-lve lett a DVD-re írás előtt.
Az MPlayer nem ír semmilyen frameráta változást, ha telecine-lt videót játszik le.
Egy telecine-lt videó nézésekor átlapolási hibákat láthatsz, amik miatt "villoghat" a kép: ismétlődően megjelennek majd eltűnnek. Ezt jobban megfigyelheted így:
mplayer dvd://1
Menj egy mozgást ábrázoló részhez.
Használd a . gombot az egy képkockával történő előreléptetéshez.
Nézd meg az átlapoltnak látszó és a progresszívnak látszó képkockák mintáját. Ha a minta, amit látsz PPPII, PPPII, PPPII,... akkor a videó telecine-lt. Ha valami más mintát látsz, akkor a videót lehet, hogy egy másik, nem szabványos módszerrel telecine-lték; a MEncoder nem tudja veszteségmentesen átkonvertálni a nem-sabványos telecine-t progresszívba. Ha egyáltalán nem látsz semmilyen mintát, akkor valószínűleg átlapolt.
Néha a DVD-ken lévő telecine-lt videót "hard-telecine"-nek is hívják. Mivel a hard-telecine már 60000/1001 mező per másodperces, a DVD lejátszó mindenféle manipulálás nélkül játsza le a videót.
A másik módszer a telecine-lt forrás felismerésére a forrás megtekintése
a -vf pullup és -v kapcsolók
parancssorhoz történő hozzáadásával. Így megnézheted, hogy a
pullup hogyan illeszkedik a képkockákhoz. Ha a forrás
telecine-s, a konzolon egy 3:2-es mintát kell látnod, melyben
0+.1.+2
és 0++1
váltakozik.
Ennek a technikának megvan az az előnye, hogy nem kell a forrást
nézned az azonosításhoz, ami akkor jó, ha automatizálni szeretnéd a
kódolási folyamatot vagy távolról, lassú kapcsolaton keresztül
szeretnéd megcsinálni.
Az átlapolt videót eredetileg 60000/1001 mező per másodperc sebességgel filmezték és 30000/1001 képkocka per másodperccel került fel a DVD-re. Az átlapolási effektus (gyakran "combing"-nak hívják) a mező párok képkockává történő egyesítésének eredménye. Minden mezőnek 1/(60000/1001) másodpercnyire kellene lennie egymástól, megjelenítésnél a különbség szemmel látható.
Akár csak a telecine-s videóknál, az MPlayernek a nem kell semmiféle frameráta változásról értesítenie átlapolt videók lejátszásakor.
Ha egy átlapolt videót közelebbről megnézel képkocka-léptetéssel a . gombot nyomogatva, megláthatod, hogy minden egyes képkocka átlapolt.
Az összes "kevert progresszív és telecine" videót eredetileg 24000/1001 képkocka per másodperccel rögzítették, de egyes részei utólag telecine-lve lettek.
Ha az MPlayer ilyen videót játszik le, (sokszor ismétlődően) oda-vissza vált "30000/1001 fps NTSC" és "24000/1001 fps progresszív NTSC" között. Figyeld az MPlayer kimenetének alját, ott megláthatod az üzeneteket.
Nézd meg a "30000/1001 fps NTSC" részeket, és meggyőződhetsz róla, hogy telecine-ltek, nem csak átlapoltak.
"Kevert progresszív és átlapolt" tartalomnál a progresszív és az átlapolt videót összeillesztették.
Ez a kategória ugyan úgy viselkedik, mint a "kevert progresszív és telecine", egészen addig, amíg meg nem vizsgálod a 30000/1001 fps-es részeket és észre nem veszed, hogy nincs bennük telecine minta.
Ahogy említettem az elején, például a MEncoder alábbi parancssorai nem igazán használhatóak; csak demonstrálják a minimum paramétereket az egyes kategóriák megfelelő kódolásához.
A progresszív videóhoz nem kell semmilyen különleges szűrés. Az egyetlen paraméterm, amit biztosan használnod kell, az a -ofps 24000/1001. Egyébként a MEncoder 30000/1001 fps-sel és duplikált képkockákkal próbál kódolni.
mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001
Gyakran az az eset áll fenn, hogy a videó progresszívnek tűnik, de valójában nagyon rövid telecine-s részek vannak belekeverve. Ha nem vagy biztos a dolgodban, a legbiztonságosabb, ha kevert progresszív és telecine-lt videóként kezeled. A teljesítményvesztés kicsi [3].
A telecine visszafordítható, hogy megkapd az eredeti 24000/1001-es tartalmat, egy inverz-telecine-nek nevezett eljárással. Az MPlayer számos szűrővel rendelkezik ennek az elvégzéséhez; a legjobb szűrő a pullup le van írva a kevert progresszív és telecine részben.
A legtöbb gyakorlati esetben nem lehetséges a teljes progresszív videó visszanyerése az átlapolt tartalomból. Az egyetlen út ehhez a függőleges felbontás felének elvesztése nélkül a frameráta megduplázása és "megtippelni", hogy mi kellene minden egyes mező megfelelő sorainak felépítéséhez (ennek vannak hátrányai - lásd a 3. módszert).
Kódold el a videót átlapolt formában. Normális esetben az átlapolás
eléggé odavág a kódoló tömörítési képességeinek, de a
libavcodec
nek van két
paramétere speciálisan az átlapolt videó tárolásának egy kicsit jobb
kezeléséhez: ildct és ilme. Az
mbd=2 használata is javasolt
[2] , mert ez a
makroblokkokat nem-átlapoltként fogja elkódolni azokon a helyeken, ahol
nincs mozgás. Ügyelj rá, hogy itt a -ofps NEM kell.
mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2
Használj deinterlacing szűrőt a kódolás előtt. Számos közül választhatsz, mindegyiknek megvan a maga előnye és hátránya. Lásd az mplayer -pphelp és az mplayer -vf help kimenetét, hogy megtudd, mit használhatsz (grep-pelj a "deint"-re), olvasd el Michael Niedermayer Deinterlacing szűrő összehasonlítását, és keress az MPlayer levelezési listáin a sok beszélgetés között, ami a különböző szűrőkről szól. A frameráta itt sem változik, így nem kell a -ofps. A deinterlacing-et a vágás után [1] és a méretezés előtt kell elvégezni.
mencoder dvd://1 -oac copy -vf yadif -ovc lavc
Sajnos ez a kapcsoló hibás a MEncoderben; talán a MEncoder G2-vel működni fog, de itt most még nem. Fagyásokat tapasztalhatsz. Egyébként a -vf tfields célja az lenne, hogy teljes képkockát készít mindegyik mezőből, ami miatt a frameráta 60000/1001 lesz. Ennek a megközelítésnek az az előnye, hogy soha nincs adatvesztés; habár mivel minden egyes kocka csak egy mezőből keletkezik, a hiányzó sorokat valahogy interpolálni kell. Igazából nincs jó módszer a hiányzó adat összegyűjtésére és így az eredmény kicsit úgy fog kinézni, mint amikor valamilyen deinterlacing szűrőt használsz. A hiányzó sorok generálása egyéb dolgokat idéz elő, egyszerűen mivel az adat mennyisége megduplázódik. Így, nagyobb kódolási bitráták szükségesek a minőség megtartásához, és nagyobb CPU teljesítmény mind a kódoláshoz, mind a dekódoláshoz. A tfield-eknek számos különböző opciójuk van az egyes képkockákban hiányzó sorok előállításához. Ha ezt a módszert használod, akkor nézd meg a manual-t és válassz, hogy melyik opcióval néz ki legjobban az anyagod. Figyelj rá, hogy ha tfield-eket használsz, mind a -fps-nek, mind a -ofps-nek az eredeti forrásod framerátájának kétszeresét kell megadnod.
mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \ -fps 60000/1001 -ofps 60000/1001
Ha drasztikus downscaling-et tervezel, kiszedhetsz és elkódolhatsz egy mezőt is a kettő helyett. Természetesen így elveszíted a függőleges felbontás felét, de ha downscaling-et tervezel legfeljebb az eredeti 1/2-ével, a veszteség nem számottevő. Az eredmény egy progresszív 30000/1001 képkocka per másodperces fájl lesz. A helyes eljárás a -vf field használata, majd vágás [1] és megfelelő méretezés. Emlékezz, hogy be kell állítanod a méretarányt a felezett függőleges felbontásnak megfelelően.
mencoder dvd://1 -oac copy -vf field=0 -ovc lavc
Ahhoz, hogy egy kevert, progresszív és telecine-s videót teljesen progresszív videóvá konvertálj, a telecine-lt részeket inverz-telecine-elni kell. Ez háromféle képpen végezhető el, mint ahogy az lejjebb látható. Figyelj rá, hogy mindig az inverse-telecine legyen meg bármilyen átméretezés előtt; hacsak nem vagy teljesen biztos a dolgodban, és az inverse-telecine legyen a vágás előtt is [1]. A -ofps 24000/1001 kell ide, mert a kimeneti videó 24000/1001 képkocka per másodperc sebességű lesz.
A -vf pullup a telecine-s részek inverz-telecine-léséhez lett tervezve úgy, hogy a progresszív adatokat érintetlenül hagyja. A helyes működéshez a pullup-ot a softskip szűrőnek kell követnie, különben a MEncoder összeomlik. Ennek ellenére a pullup a legtisztább és legjobb módszer mind a telecine-s, mind a "kevert progresszív és telecine-s" videók elkódolásához.
mencoder dvd://1 -oac copy -vf pullup,softskip -ovc lavc -ofps 24000/1001
A -vf filmdint hasonló a -vf pullup-hoz: mindkét szűrő megpróbálja egyeztetni a mezőpárokat, hogy azok egy komplett képkockát adjanak. A filmdint deinterlace-lni fogja az egyedi mezőket, amelyeket nem tud egyeztetni, míg a pullup egyszerűen csak eldobja őket. A két szűrő különböző detektáló kódot alkalmaz és a filmdint néha túl kevés mezőt egyeztet. Az, hogy melyik szűrő a jobb, a bemeneti videótól és az egyéni ízléstől függ; kísérletezz szabadon a szűrők opcióinak finomhangolásával, ha valamelyikkel problémád van (lásd a man oldalt a részletekért). A legtöbb jól elkészített bemeneti videónál mindkettő eléggé jól működik, így bármelyik jó választás lehet a kezdéshez.
mencoder dvd://1 -oac copy -vf filmdint -ovc lavc -ofps 24000/1001
A régebbi módszer, a telecine-s részek inverz-telecine-lése helyett a nem-telecine-s részek telecine-lése majd a teljes videó inverz-telecine-lése. Zavarosan hangzik? A softpulldown egy olyan szűrő, ami végigmegy a videón és a teljes fájlt telecine-li. Ha a softpulldown-t vagy detc vagy ivtc követi, a végső eredmény teljesen progresszív lesz. A -ofps 24000/1001 kapcsolót meg kell adni.
mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001
Két módon kezelheted ezt a kategóriát, mindkettő kompromisszum. Az időtartam/hely alapján kell döntened.
Kezeld úgy, mintha progresszív lenne. Az átlapolt részek átlapoltnak látszanak és néhány átlapolt mezőt el kell dobni, ami egyenletlen ugrásokat eredményez. Használhatsz utófeldolgozó szűrőt, ha akarsz, de ez kissé rontja a progresszív részeket.
Ez az opció használhatatlan akkor, ha a videót egy átlapolt eszközön akarod megjeleníteni (TV kártyával például). Ha átlapolt képkockáid vannak 24000/1001 képkocka per másodperces videóban, telecine-lve lesznek a progresszív képkockákkal együtt. Az átlapolt "képkockák" fele három mező hosszon lesz látható (3/(60000/1001) másodperc), ami ugráló "visszaugrás az időben" effektust hoz létre, ami nagyon rosszul néz ki. Ha mégis kísérletezel ezzel, használnod kell egy deinterlacing szűrőt, mint pl. az lb vagy az l5.
Rossz ötlet a progresszív megjelenítéshez is. Eldobja az egymást követő átlapolt mezőpárokat, megszakítva ezzel a folyamatosságot, ami sokkal szembetűnőbb, mint a második módszer, ami néhány progresszív képkockát duplán mutat. A 30000/1001 képkocka per másodperces átlapolt videó amúgy is egy kicsit fodrozódó mert igazából 60000/1001 mező per másodperc sebességgel kellene megjeleníteni, így a duplikált képkockák nem látszanak annyira.
Mindkét esetben érdemes megnézni a tartalmat és eldönteni, hogy hogyan szeretnéd megjeleníteni. Ha a videó 90%-ban progresszív és soha nem akarod TV-n lejátszani, akkor a progresszív megközelítést fogod előnyben részesíteni. Ha csak félig progresszív, akkor valószínűleg átlapoltként akarod elkódolni az egészet.
Kezeld teljesen átlapoltként. A progresszív részekben néhány képkockát meg kell duplázni, ami egyenlőtlen ugrásokat eredményez. De hangsúlyozom, a deinterlacing szűrők rontják a progresszív részeket.
A vágásról: A videó adatot a DVD-ken egy úgynevezett YUV 4:2:0 formátumban tárolják. A YUV videóban a luma ("fényerő") és a chroma ("szín") külön tárolódik. Mivel az emberi szem valamivel érzéketlenebb a színre, mint a fényerőre, a YUV 4:2:0 képen csak egy chroma pixel jut minden négy luma pixelre. Egy progresszív képen minden négy luma pixel által alkotott négyzetben (kettő mindkét oldalon) egy közös chroma pixel van. A progresszív YUV 4:2:0-t le kell vágnod páros felbontásúra és páros offszetet kell használnod. Például a crop=716:380:2:26 jó de a crop=716:380:3:26 nem.
Ha átlapolt YUV 4:2:0-lal van dolgod, a szituáció egy kicsit bonyolódik. Ahelyett, hogy az egy képkockában lévő mind a négy luma pixel osztozna egy chroma pixelen, a mezőben lévő négy luma osztozik egy chroma pixelen. Ha a mezők át vannak lapolva egy képkocka felépítéséhez, minden egyes scanline egy pixel magas. Nos, ahelyett, hogy a négy luma pixel egy négyszögben lenne, két pixel van egymás mellett, a másik kettő két scanline-nal lejjebb van egymás mellett. A két luma pixel a közbeeső scanline-on a másik mezőből van és így egy másik chroma pixel tartozik hozzájuk és két darab, két scanline távolságra lévő luma pixel. Mindezen keverés teszi szükségessé azt, hogy a függőleges vágási dimenzióknak és az offszeteknek néggyel oszthatóaknak kell lenniük. A vízszintes maradhat páros.
A telecine-lt videóknál javaslom, hogy a vágást az inverz telecine után ejtsd meg. Ha a videó már progresszív, csak páros számokkal el kell vágnod. Ha ki akarod használni azt a sebességnövekedést, amit a vágás rejteget magában, akkor függőlegesen négy többszörösével kell vágnod, különben az inverz-telecine szűrő nem kap megfelelő adatokat.
Az átlapolt (nem telecine-lt) videónál függőlegesen mindig négy többszörösével kell vágnod, hacsak nem használod a -vf field-et a vágás előtt.
A kódolási paraméterekről és a minőségről:
Csak mert itt javasoltam az mbd=2-t, nem jelenti
azt, hogy máshol ne lehetne használni. A trell-lel
együtt az mbd=2 egyike a két libavcodec
kapcsolóknak, amik legjobban
növelik a minőséget és igazából mindig ajánlott ezt a kettőt
használni, kivéve ha tilos a kódolási sebesség rontása (pl. valós
idejű kódolás). Még számos egyéb opciója van a libavcodec
-nek, ami növeli a kódolás
minőségét (és csökkenti a kódolás sebességét) de az már túlmutat ezen
dokumentum célkitűzésein.
A pullup teljesítményéről: Bátran használhatod a pullup-ot (a softskippel együtt) a progresszív videókon és ez általában jó ötlet, hacsak a forrás nem egyértelműen teljesen progresszív. A teljesítmény veszteség kicsi az esetek többségében. Nagyon ritka kódolási esetekben a pullup a MEncoder 50%-os lassulását okozhatja. A zenefeldolgozás hozzáadása és a fejlett lavcopts háttérbe szorítja ezt a különbséget, a pullup miatti teljesítményromlást 2%-ra csökkentve.
A libavcodec
számos érdekes videó és audió formátumba történő egyszerű kódolást biztosít.
A következő codec-ekbe kódolhatsz (többé-kevésbé friss lista):
Videó codec neve | Leírás |
---|---|
mjpeg | Motion JPEG |
ljpeg | veszteségmentes JPEG |
jpegls | JPEG LS |
targa | Targa kép |
gif | GIF kép |
bmp | BMP kép |
png | PNG kép |
h261 | H.261 |
h263 | H.263 |
h263p | H.263+ |
mpeg4 | ISO szabvány MPEG-4 (DivX, Xvid kompatibilis) |
msmpeg4 | szabvány előtti MPEG-4 variáns az MS-től, v3 (AKA DivX3) |
msmpeg4v2 | szabvány előtti MPEG-4 az MS-től, v2 (régi ASF fájlokban használják) |
wmv1 | Windows Media Video, 1-es verzió (AKA WMV7) |
wmv2 | Windows Media Video, 2-es verzió (AKA WMV8) |
rv10 | RealVideo 1.0 |
rv20 | RealVideo 2.0 |
mpeg1video | MPEG-1 videó |
mpeg2video | MPEG-2 videó |
huffyuv | veszteségmentes tömörítés |
ffvhuff | FFmpeg által módosított veszteségmentes huffyuv |
asv1 | ASUS Video v1 |
asv2 | ASUS Video v2 |
ffv1 | az FFmpeg veszteségmentes videó codec-je |
svq1 | Sorenson video 1 |
flv | Flash Videókban használt Sorenson H.263 |
flashsv | Flash Screen Video |
dvvideo | Sony Digital Video |
snow | az FFmpeg kísérleti wavelet-alapú codecja |
zmbv | Zip Motion Blocks Video |
dnxhd | AVID DNxHD |
Az első oszlop a codec neveket tartalmazza, amit a
vcodec
opció után kell megadni, például:
-lavcopts vcodec=msmpeg4
Egy példa MJPEG tömörítéssel:
mencoder dvd://2 -o title2.avi
-ovc lavc -lavcopts vcodec=mjpeg -oac copy
Audió codec neve | Leírás |
---|---|
ac3 | Dolby Digital (AC-3) |
adpcm_* | Adaptív PCM formátumok - lásd a mellékelt táblázatot |
flac | Free Lossless Audio Codec (FLAC) |
g726 | G.726 ADPCM |
libfaac | Advanced Audio Coding (AAC) - FAAC használatával |
libgsm | ETSI GSM 06.10 full rate |
libgsm_ms | Microsoft GSM |
libmp3lame | MPEG-1 audio layer 3 (MP3) - LAME használatával |
mp2 | MPEG-1 audio layer 2 (MP2) |
pcm_* | PCM formats - lásd a mellékelt táblázatot |
roq_dpcm | Id Software RoQ DPCM |
sonic | kísérleti FFmpeg veszteséges codec |
sonicls | kísérleti FFmpeg veszteségmentes codec |
vorbis | Xiph Ogg Vorbis codec |
wmav1 | Windows Media Audio v1 |
wmav2 | Windows Media Audio v2 |
Az első oszlop a codec neveket tartalmazza, amit az acodec
opció után kell megadni, például: -lavcopts acodec=ac3
Egy példa AC-3 tömörítéssel:
mencoder dvd://2 -o title2.avi
-oac lavc -lavcopts acodec=ac3 -ovc copy
Ellentétben a libavcodec
videó
codec-jeivel, az audió codec-jei nem használnak el annyi bit-et, amennyit
szánsz nekik, mivel hiányzik belőlük némi minimális pszichoakusztikus modell
(ha van egyáltalán), ami a legtöbb egyéb codec implementációban benne van.
Azonban vedd figyelembe, hogy ezek az audió codec-ek nagyon gyorsak és
azonnal használhatóak bárhol, ahol a MEncodert
a libavcodec
-kel együtt fordították
le (ami a legtöbb esetben így van), és nem függ külső függvénykönyvtáraktól.
PCM/ADPCM codec neve | Leírás |
---|---|
pcm_s32le | előjeles 32-bit-es little-endian |
pcm_s32be | előjeles 32-bit-es big-endian |
pcm_u32le | előjel nélküli 32-bit-es little-endian |
pcm_u32be | előjel nélküli 32-bit-es big-endian |
pcm_s24le | előjeles 24-bit-es little-endian |
pcm_s24be | előjeles 24-bit-es big-endian |
pcm_u24le | előjel nélküli 24-bit-es little-endian |
pcm_u24be | előjel nélküli 24-bit-es big-endian |
pcm_s16le | előjeles 16-bit-es little-endian |
pcm_s16be | előjeles 16-bit-es big-endian |
pcm_u16le | előjel nélküli 16-bit-es little-endian |
pcm_u16be | előjel nélküli 16-bit-es big-endian |
pcm_s8 | előjeles 8-bit-es |
pcm_u8 | előjel nélküli 8-bit-es |
pcm_alaw | G.711 A-LAW |
pcm_mulaw | G.711 μ-LAW |
pcm_s24daud | előjeles 24-bit-es D-Cinema Audio formátum |
pcm_zork | Activision Zork Nemesis |
adpcm_ima_qt | Apple QuickTime |
adpcm_ima_wav | Microsoft/IBM WAVE |
adpcm_ima_dk3 | Duck DK3 |
adpcm_ima_dk4 | Duck DK4 |
adpcm_ima_ws | Westwood Studios |
adpcm_ima_smjpeg | SDL Motion JPEG |
adpcm_ms | Microsoft |
adpcm_4xm | 4X Technologies |
adpcm_xa | Phillips Yellow Book CD-ROM eXtended Architecture |
adpcm_ea | Electronic Arts |
adpcm_ct | Creative 16->4-bit |
adpcm_swf | Adobe Shockwave Flash |
adpcm_yamaha | Yamaha |
adpcm_sbpro_4 | Creative VOC SoundBlaster Pro 8->4-bit |
adpcm_sbpro_3 | Creative VOC SoundBlaster Pro 8->2.6-bit |
adpcm_sbpro_2 | Creative VOC SoundBlaster Pro 8->2-bit |
adpcm_thp | Nintendo GameCube FMV THP |
adpcm_adx | Sega/CRI ADX |
Ideális esetben szeretnéd, ha csak azt kellene mondani a kódolónak, hogy váltson "jobb minőségre" és kész. Ez szép is lenne, de sajnos nehezen megvalósítható, mert a különböző kódolási opciók különböző minőséget eredményeznek, mely függ a forrás anyagtól is. Ez azért van, mert a tömörítés függ a szóbanforgó videó vizuális tulajdonságaitól. Például az Anime és az élő felvétel két nagyon különböző anyag és így különböző opciókat követelnek meg az optimális kódoláshoz. A jó hír, hogy néhány opciót soha sem lehet elhagyni, mint például az mbd=2, trell és v4mv. Olvass tovább a gyakori kódolási opciók leírásához.
Állítható opciók:
vmax_b_frames: 1 vagy 2 a jó, a filmtől
függően.
Figyelj rá, hogy úgy kell kódolnod, hogy DivX5-tel dekódolható legyen az
eredmény, aktiválnod kell a zárt GOP támogatást a
libavcodec
cgop
opciójával, de ki kell kapcsolnod a jelenet detektálást, ami
nem túl jó ötlet, mivel rontja a kódolási hatékonyságot egy kicsit.
vb_strategy=1: segít a gyors mozgású jeleneteknél. Néhány videónál a vmax_b_frames rontja a minőséget, de a vmax_b_frames=2 a vb_strategy=1-gyel együtt segít.
dia: mozgás kereső tartomány. A nagyobb a jobb és a lassabb. Negatív értékek teljesen más skálát adnak. A jó értékek -1 a gyors kódoláshoz vagy 2-4 a lassabbhoz.
predia: mozgás kereső előre-lépés. Nem olyan fontos, mint a dia. Jó értékek 1-től (alapértelmezett) 4-ig. preme=2 kell hozzá, hogy igazán hasznos legyen.
cmp, subcmp, precmp: Összehasonlító funkciók a mozgás becsléshez. Kísérletezz a 0 (alapértelmezett), 2 (hadamard), 3 (dct) és 6 (ráta torzítás) értékekkel! 0 a leggyorsabb és és elegendő a precmp-hez. A cmp-hez és subcmp-hez 2 jó, ha Anime és 3 ha élő akció. A 6 vagy jobb vagy nem, de mindenképpen lassabb.
last_pred: Az előző képkockából megjósolandó mozgások száma. 1-3 vagy hasonló segít egy kis sebességcsökkenés árán. A magasabb értékek lassúak, de igazi hasznuk nincs.
cbp, mv0: A makroblokkok kiválasztását irányítja. Egy kis sebességcsökkenés egy kis minőségjavulásért.
qprd: adaptív kvantálás, mely a makroblokk komplexitásán alapul. Vagy segít vagy nem, a videó és egyéb opciók függvényében. Ennek lehetnek mellékhatásai, hacsak nem állítod be a vqmax-ot valami ésszerűen alacsony értékre (a 6 jó, talán minimum 4); a vqmin=1 is segíthet.
qns: nagyon lassú, különösen ha a qprd-vel kombinálod. Ezen opció hatására a kódoló minimalizálja a zajt tömörítési mellékhatásokkal, ahelyett, hogy a szigorúan a forráshoz próbálna igazodni. Ne használd ezt, csak ha már minden mást kipróbáltál és az eredmény még mindig nem elég jó.
vqcomp: Rátaírányítás beállítása. Hogy milyen értékek jók, az a filmtől függ. Nyugodtan elhagyhatod ezt, ha akarod. A vqcomp csökkentése több bitet engedélyez az alacsony komplexitású részeknél, a növelése a nagy komplexitású részekre teszi őket (alapértelmezés: 0.5, tartomány: 0-1, javasolt tartomány: 0.5-0.7).
vlelim, vcelim: Beállítja a szimpla együttható eliminációs küszöböt a fényerősséghez és a chroma plane-khez. Ezt elkülönítve kódolja le minden MPEG-szerű algorítmus. Az ötlet emögött az opció mögött az, hogy egy jó heurisztikát használnak annak megállapítására, hogy a blokkban történt változás kisebb-e, mint az általad megadott küszöb és ebben az esetben egyszerűen "változtatás nélkül" kerül elkódolásra a blokk. Ez biteket ment meg és talán gyorsít is a kódoláson. A vlelim=-4 és vcelim=9 látszólag jók az élő filmekhez, de nem segítenek az Anime-nál; ha animációt kódolsz, inkább hagyd őket változatlanul.
qpel: Negyed pixel mozgás becslés. Az MPEG-4 fél pixeles precíziót használ a mozgáskereséshez alapértelmezésként, ezért ez az opció plusz terhelést hoz, mivel több információ tárolódik az elkódolt fájlban. A tömörítési nyereség/veszteség a filmtől függ, de általában nem hatékony Anime-oknál. A qpel mindig jelentős dekódolási CPU idő igénnyel jár (+25% a gyakorlatban).
psnr: nem érinti az aktuális kódolást, de készít egy log fájlt, mely megadja minden képkocka típusát/méretét/minőségét és a végére odaírja a PSNR-t (Peak Signal to Noise Ratio, Zajarány csúcspontja).
Opciók, melyekkel nem javasolt játszadozni:
vme: Az alapértelmezett a legjobb.
lumi_mask, dark_mask: Pszichovizuális adaptív kvantálás. Ne játszadozz ezekkel az opciókkal, ha számít a minőség. Az ésszerű értékek jók lehetnek a te esetedben, de vigyázz, ez nagyon szubjektív.
scplx_mask: Megpróbálja megelőzni a blokkos mellékhatásokat, de az utófeldolgozás jobb.
A következő beállítások példák különböző kódolási opciók kombinációjára, amik a sebesség vs minőség kérdést döntően befolyásolják ugyanazon cél bitráta mellett.
Az összes kódolási beállítást egy 720x448 @30000/1001 fps-es példa videón teszteltük, a cél bitráta 900kbps volt, a gép pedig egy AMD-64 3400+ 2400 MHz-en 64 bites módban. Mindegyik kódolási beállítás tartalmazza a kódolási sebességet (képkocka per másodpercben) és a PSNR veszteséget (dB-ben) a "nagyon jó minőséghez" viszonyítva. Kérlek vedd figyelembe, hogy a forrásanyagodtól, a géped típusától és a fejlesztésektől függően különböző eredményeket kaphatsz.
Leírás | Kódolási opciók | sebesség (fps-ben) | Relatív PSNR veszteség (dB-ben) |
---|---|---|---|
Nagyon jó minőség | vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2 | 6fps | 0dB |
Jó minőség | vcodec=mpeg4:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo | 15fps | -0.5dB |
Gyors | vcodec=mpeg4:mbd=2:trell:v4mv:turbo | 42fps | -0.74dB |
Valós idejű | vcodec=mpeg4:mbd=2:turbo | 54fps | -1.21dB |
A libavcodec
ezen képességével egyedi inter (I-frame/kulcs frame) és intra
(P-frame/jósolt frame) matricákat állíthatsz be. Több codec támogatja ezt:
az mpeg1video
és mpeg2video
a jelentések szerint működik.
Ennek egy tipikus felhasználása a KVCD által javasolt matricák beállítása.
Egy KVCD "Notch" Kvantálási Mátrix:
Intra:
8 9 12 22 26 27 29 34 9 10 14 26 27 29 34 37 12 14 18 27 29 34 37 38 22 26 27 31 36 37 38 40 26 27 29 36 39 38 40 48 27 29 34 37 38 40 48 58 29 34 37 38 40 48 58 69 34 37 38 40 48 58 69 79
Inter:
16 18 20 22 24 26 28 30 18 20 22 24 26 28 30 32 20 22 24 26 28 30 32 34 22 24 26 30 32 32 34 36 24 26 28 32 34 34 36 38 26 28 30 32 34 36 38 40 28 30 32 34 36 38 42 42 30 32 34 36 38 40 42 44
Használat:
mencoderinput.avi
-ooutput.avi
-oac copy -ovc lavc \ -lavcopts inter_matrix=...:intra_matrix=...
mencoder input.avi
-ovc lavc -lavcopts \
vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,\
12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27,\
29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79\
:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,\
28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34,\
36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg
Nos hát, éppen most vetted meg a Harry Potter és a titkok kamrája gyönyörű új példányát (widescreen edition természetesen) és le akarod rip-pelni ezt a DVD-t, hogy hozzáadhasd a PC-s házimozidhoz. Ez egy régió 1-es DVD, így NTSC-s. Az alábbi példa egyszerűen alkalmazható PAL-ra is, a -ofps 24000/1001 kapcsoló elhagyásával (mert a kimeneti frameráta ugyan annyi, mint a bemeneti) és természetesen a vágás méretei is mások lesznek.
Miután lefuttattad az mplayer dvd://1 parancsot, kövesd a mit kezdjünk a telecine-nel és az átlapolással NTSC DVD-ken részben leírt utasításokat és fedezd fel, hogy ez egy 24000/1001 fps-es progresszív videó, ami azt jelenti, hogy nem kell inverz telecine szűrőt használnod, mint pl. a pullup vagy a filmdint.
Következőnek megállapítjuk a megfelelő vágási téglalapot, így használjuk a cropdetect szűrőt:
mplayer dvd://1 -vf cropdetect
Győződj meg róla, hogy egy teljesen kitöltött képkockán állsz (pl. egy világos jelenet a nyitó képek és logók után), ezt fogod látni az MPlayer konzol kimenetén:
crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)
Ezután lejátszuk a filmet ezzel a szűrővel a számok ellenérzéséhez:
mplayer dvd://1 -vf crop=720:362:0:58
És azt látjuk, hogy tökéletesen megfelel. Majd meggyőződünk, hogy a szélesség és a magasság osztható 16-tal. A szélesség jó, de a magasság nem. Mivel nem buktunk hetedik osztályban matekból, tudjuk, hogy a 16 legközelebbi többszöröse, ami kisebb, mint 362, a 352.
Így egyszerűen használhatjuk a crop=720:352:0:58 opciót, de jó lenne egy kicsit lecsípni a telejéből és az aljából, hogy középen maradjunk. Összehúzzuk a magasságot 10 pixellel, de nem akarjuk növelni az y-offszetet 5 pixellel, mert az páratlan szám és rontja a minőséget. Helyette inkább 4 pixellel növeljük az y-offszetet:
mplayer dvd://1 -vf crop=720:352:0:62
A másik ok, hogy lecsípjünk pixeleket mid fent, mint lent, hogy biztosak legyünk, hogy a fél-fekete pixeleket is levágtuk, amennyiben vannak. Figyelj rá, hogy ha a videó telecine-lt, a pullup szűrő (vagy bármelyik inverz telecine szűrő, amit használsz) a vágás előtt szerepeljen a szűrők láncában. Ha átlapolt, végezz deinterlace-t a vágás előtt. (Ha úgy döntesz, hogy megtartod az átlapolt videót, győződj meg róla, hogy a függőleges vágási offszet 4 többszöröse.)
Ha érdekel annak a 10 pixelnek az elvesztése, inkább a méretek 16 legközelebbi többszörösére való kicsinyítése érdekelhet. A szűrő lánc ez esetben:
-vf crop=720:362:0:58,scale=720:352
A videó ilyen módon történő lekicsinyítése azt jelenti, hogy néhány apró részlet elveszik, de ez valószínűleg nem lesz észrevehető. A nagyítás rosszabb minőséget eredményez (hacsak nem növeled a bitrátát). A vágás az összes ilyen pixeltől megszabadít. Ez egy üzlet, amit minden esetben meg kell fontolnod. például ha a DVD videó televízióra készült, ajánlott elkerülni a függőleges méretezést, mert a sor mintázás az eredeti felvételhez igazodik.
Megtekintés után azt látjuk, hogy a filmünk eléggé eseménydús és nagyon részletes, így 2400Kbit-et választunk bitrátának.
Most már készen vagyunk a két lépéses kódoláshoz. Első lépés:
mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi
-ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=1 \
-vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2
A második lépés ugyan ez, csak megadjuk a vpass=2-t:
mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi
-ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=2 \
-vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2
A v4mv:mbd=2:trell kapcsolók nagyban javítják a minőséget
a kódolási idő rovására. Nem ajánlott ezen opciók elhagyása, ha a fő cél
a jó minőség. A cmp=3:subcmp=3 opciók egy
összehasonlító függvényt választanak ki, ami jobb minőséget biztosít,
mint az alapértelmezettek. Ezzel a paraméterrel is kísérletezhetsz (lásd
a man oldalt a lehetséges értékekért), mivel a különböző függvények
nagyban befolyásolják a minőséget a forrás anyagtól függően. Például ha
úgy találod, hogy a libavcodec
túl kockás eredményt ad, megpróbálhatod a kísérleti NSSE összehasonlító
függvény használatát a *cmp=10 opcióval.
Ennél a filmnél a keletkező AVI 138 perc hosszú lesz és közel 3 GB-os. És mivel azt mondtuk, hogy a fájl méret nem számít, ez egy tökéletesen megfelelő méret. De ha kisebbet szeretnél, próbálj ki egy alacsonyabb bitrátát. A bitráták növelése csökkenő mértékű javulást hoz, így pl. tisztán kivehető a különbség az 1800Kbit és a 2000Kbit között, szinte észrevehetetlen 2000Kbit felett. Nyugodtan kísérletezz, amíg csak kedved tartja.
Mivel a forrás videót áteresztettük a zajeltávolító szűrőn, talán egy picit vissza akarsz tenni a lejátszás közben. Ez, az spp utófeldolgozó szűrővel drasztikusan javítja a felfogható minőséget és segít a segít a videó kockásodásának megszüntetésében. Az MPlayer autoq opciójával szabályozhatod az spp szűrő utófeldolgozásának mértékét a CPU-tól függően. Emellett valószínűleg gamma és/vagy szín korrekciót is szeretnél csinálni, hogy jobban illeszkedjen a monitorodhoz. Például:
mplayer Harry_Potter_2.avi
-vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3
Az Xvid
egy szabad függvénykönyvtár
MPEG-4 ASP videó stream-ek elkódolásához.
A kódolás megkezdése előtt be kell állítanod
a MEncoderben a támogatását.
Ez a leírás főként hasonló információkat szeretne nyújtani, mint az x264 kódolási leírás. Ezért, kérlek kezdd azzal, hogy elolvasod azon leírásnak az első részét.
Kezdésként nézd át az
MPlayer man oldalának
Xvid
részét!
Ez a rész csak a man oldal kiegészítéseként használható.
Az Xvid alapértelmezett beállításai egyensúlyt teremtenek a sebesség és a minőség között, így nyugodtan használhatod azokat, ha a következő rész túl zavarosnak tűnik.
vhq Ez a beállítás a makroblokk döntési algoritmust érinti, minél nagyobb a beállítás, annál okosabb a döntés. Az alapértelmezett érték bátran használható minden kódoláshoz, míg a nagyobb értékek segítik a PSNR-t de jelentősen lassabbak. Kérlek vedd figyelembe, hogy a jobb PSNR nem feltétlenül jelenti azt, hogy a kép jobban fog kinézni, de közelebb lesz az eredetihez. A kikapcsolása észrevehetően felgyorsítja a kódolást; ha a sebesség kritikus számodra, megéri a cserét.
bvhq Ez ugyan azt csinálja, mint a vhq, de a B-kockákon. Elhanyagolható a hatása a sebességre és kismértékben javít a minőségen (+0.1dB PSNR körül).
max_bframes Az egymás után engedélyezett több B-kocka általában javítja a tömöríthetőséget, de több blokkosodási mellékhatást okoz. Az alapértelmezett beállítás jó kompromisszum a tömöríthetőség és a minőség között, de növelheted 3-ig ha ki vagy éhezve a bitrátára. Csökkentheted 1-re vagy 0-ra ha a tökéletes minőséget céloztad meg, de ekkor biztosan tudnod kell, hogy a forrásod bitrátája elég nagy ahhoz, hogy a kódolónak nem kell növelni a kvantálást, hogy elére ezt.
bf_threshold Ez a kódoló B-kocka érzékenységét szabályozza, a nagyobb érték hatására több B-kockát használ (és fordítva). Ez a beállítás a max_bframes-szel együtt használható; ha bitráta éhségben szenvedsz, növelned kell mind a max_bframes, mind a bf_threshold értékét, míg ha növeled a max_bframes-t és csökkented a bf_threshold-ot, akkor a kódoló több B-kockát fog használni, de csak azokon a helyeken, ahol tényleg szükséges. A max_bframes alacsony értéke és a bf_threshold magas értéke nem túl bölcs döntés, mert ez arra kényszeríti a kódolót, hogy olyan helyekre is tegyen B-kockát, ahol nincs rájuk szükség, így csökkenti a vizuális minőséget. De ha kompatibilis akarsz maradni az egyedi lejátszókkal, amik csak a régi DivX profilokat támogatják (amik csak legfeljebb 1 B-kockát támogatnak sorban), ez az egyetlen lehetőséged a tömöríthetőség növelésére a B-kockák használatával.
trellis Optimalizálja a kvantálási eljárást, hogy optimális arányt találjon a PSNR és a bitráta között, ami jelentős bitmegtakarítást engedélyez. Cserébe ezek a bitek a videóban máshol kerülnek felhasználásra, növelve az össz minőséget. Mindig ajánlott bekapcsolva hagyni, mert jelentősen befolyásolja a minőséget. Még ha neked a sebesség számít, akkor is ne kapcsold ki, amíg nem kapcsoltad ki a vhq-t és a többi CPU-éhes opciót nem állítottad a minimumra.
hq_ac Bekapcsol egy jobb együttható kölcségbecslő módszert, ami kissé csökkenti a fájl méretet, kb. 0,15-0,19% között (ami kevesebb, mint 0,01dB-es PSNR növekedésnek felel meg), miközben jelentéktelen hatása van a sebességre. Ezért ajánlott mindig bekapcsolva hagyni.
cartoon A rajzfilm tartalom jobb kódolására lett kitalálva és nincs hatása a sebességre, mivel csak a döntési heurisztikát tuningolja az ilyen típusú tartalomnál.
me_quality Ez a beállítás a mozgás előrejelzés pontosságát vezérli. Minél nagyobb a me_quality érték, annál pontosabb lesz az eredeti mozgás előrejelzése és minél pontosabb ez, annál jobban közelíti majd az eredmény az eredeti mozgást.
Az alapértelmezett érték jó a legtöbb esetben; így nem javasolt a változtatása, csak ha tényleg a sebesség számít, mivel minden a mozgás becslésével megmentett bit másra lesz felhasználva, növelve az össz minőséget. Ezért ne menj 5 alá és ezt is csak végszükség esetén állítsd be.
chroma_me Javítja a mozgás előrejelzést úgy, hogy a számításba beleveszi a chroma (szín) információkat is, míg a me_quality csak a luma-t (grayscale) használja. Ez 5-10%-kal lassítja a kódolást, de eléggé javítja a vizuális minőséget a blokkosodási effektusok csökkentésével és csökkenti a fájl méretet kb. 1,3%-kal. Ha a sebesség érdekel, kapcsold ki ezt az opciót, mielőtt elkezdenél töprengeni a me_quality csökkentésén.
chroma_opt A chroma képek minőségének javítása a célja az egyszerű fehér/fekete sarkoknál a tömörítés javítása helyett. Ezzel csökkentheted a "red stairs" effektust.
lumi_mask Megpróbál kevesebb bitrátát adni a kép azon részeinek, amiket az emberi szem nem lát olyan jól, így a kódolónak lehetősége van a megspórolt biteket a kép sokkal fontosabb részeinél felhasználni. Ezen opció nyeresége a kódolás minőségének szempontjából erősen függ az egyéni beállításoktól és a megtekintéshez használt monitor típusától és beállításaitól (tipikusan egy világosabb vagy TFT monitoron nem fog olyan jól kinézni).
qpel Növeli a várható mozgásvektorok számát a mozgás előrejelzés pontosságának növelésével halfpel-ről quarterpel-re. Az ötlet annyi, hogy a jobb mozgásvektorokért cserébe csökken a bitráta (ezért nő a minőség). Habár a quarterpel pontosságú mozgásvektorok kódolásához egy kicsivel több bit kell, a várható vektorok nem mindig adnak (sokkal) jobb minőséget. Elég gyakran a codec még mindig biteket biztosít az extra pontossághoz, de csak kicsi vagy semmilyen minőségi nyereség nincs cserében. Sajnos, nem lehet előre megmondani a qpel lehetséges nyereségeit, így kódolnod kell vele is és nélküle is, hogy biztosan tudd.
A qpel majdnem dupla kódolási időt jelent és 25%-kal több feldolgozási erőforrást igényel a dekódolása. Nem minden asztali lejátszó támogatja.
gmc
Biteket próbál megspórolni bizonyos jeleneteknél úgy, hogy
egy mozgásvektort használ az egész kockához.
Ez majdnem mindig növeli a PSNR-t, de jelentősen lelassítja
a kódolást (és a dekódolást is).
Ezért csak akkor ajánlott használnod, ha a vhq
a maximumra állítottad.
Az Xvid
GMC-je sokkal
kifinomultabb, mint a DivX-é, de csak kevés lejátszó támogatja.
Az Xvid támogatja a kódolási profilokat a profile opción keresztül, amivel az XVid videó folyam tulajdonságaiban olyan megszorításokat lehet előírni, amikkel az lejátszható marad az összes eszközön, ami támogatja a választott profilt. A megkötések a felbontásra, a bitrátára és bizonyos MPEG-4-es funkciókra vonatkoznak. A következő táblázat megmutatja, hogy melyik profil mit támogat.
Szimpla | Fejlett szimpla | DivX | ||||||||||||||
Profil neve | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 4 | 5 | Handheld | Hordozható NTSC | Hordozható PAL | NTSC házimozi | PAL házimozi | HDTV |
Szélesség [pixelben] | 176 | 176 | 352 | 352 | 176 | 176 | 352 | 352 | 352 | 720 | 176 | 352 | 352 | 720 | 720 | 1280 |
Magasság [pixelben] | 144 | 144 | 288 | 288 | 144 | 144 | 288 | 288 | 576 | 576 | 144 | 240 | 288 | 480 | 576 | 720 |
Frame ráta [fps] | 15 | 15 | 15 | 15 | 30 | 30 | 15 | 30 | 30 | 30 | 15 | 30 | 25 | 30 | 25 | 30 |
Max átlagos bitráta [kbps] | 64 | 64 | 128 | 384 | 128 | 128 | 384 | 768 | 3000 | 8000 | 537.6 | 4854 | 4854 | 4854 | 4854 | 9708.4 |
Átlagos csúcs bitráta 3 mp-n keresztül [kbps] | 800 | 8000 | 8000 | 8000 | 8000 | 16000 | ||||||||||
Max. B-frame | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 2 | ||||||
MPEG kvantálás | X | X | X | X | X | X | ||||||||||
Adaptív kvantálás | X | X | X | X | X | X | X | X | X | X | X | X | ||||
Átlapolt kódolás | X | X | X | X | X | X | X | X | X | |||||||
Quarterpixel | X | X | X | X | X | X | ||||||||||
Globális mozgás-kompenzáció | X | X | X | X | X | X |
A következő beállítások példák különböző kódolási opciók kombinációjára, amik a sebesség vs minőség kérdést döntően befolyásolják ugyanazon cél bitráta mellett.
Az összes kódolási beállítást egy 720x448 @30000/1001 fps-es példa videón teszteltük, a cél bitráta 900kbps volt, a gép pedig egy AMD-64 3400+ 2400 MHz-en 64 bites módban. Mindegyik kódolási beállítás tartalmazza a kódolási sebességet (képkocka per másodpercben) és a PSNR veszteséget (dB-ben) a "nagyon jó minőséghez" viszonyítva. Kérlek vedd figyelembe, hogy a forrásanyagodtól, a géped típusától és a fejlesztésektől függően különböző eredményeket kaphatsz.
Leírás | Kódolási opciók | sebesség (fps-ben) | Relatív PSNR veszteség (dB-ben) |
---|---|---|---|
Nagyon jó minőség | chroma_opt:vhq=4:bvhq=1:quant_type=mpeg | 16fps | 0dB |
Jó minőség | vhq=2:bvhq=1:chroma_opt:quant_type=mpeg | 18fps | -0.1dB |
Gyors | turbo:vhq=0 | 28fps | -0.69dB |
Valós idejű | turbo:nochroma_me:notrellis:max_bframes=0:vhq=0 | 38fps | -1.48dB |
Az x264
egy szabad függvénykönyvtár
a H.264/AVC videó folyamok kódolásához.
Mielőtt elkezdenél kódolni, be kell
állítanod a MEncoderben a támogatását.
Kérlek kezd az olvasást az MPlayer
man oldalának x264
részével.
Ez a rész a man oldal kiegészítésének lett szánva.
Itt csak rövid tanácsokat találhatsz, hogy mely opciók
érdekelhetik a letöbb embert. A man oldal tömörebb, de
ugyanakkor kimerítőbb is és esetenként több technikai
információval szolgál.
Ez a leírás a kódolási opciók két fő kategóriáját tárgyalja:
Opciók, melyekkel a kódolási idő vs. minőség arány szabályozható
Opciók, melyek a különböző egyéni érdekeknek és speciális igényeknek próbálnak eleget tenni
Igazából csak te tudod, hogy mely opciók a legjobbak neked. Az első csoportba tartozó opcióknál könnyű dönteni: csak azt kell megfontolnod, hogy a minőségi különbség megéri-e a sebességbeli különbséget. A másik csoport már sokkal szubjektívebb és több szempontot kell figyelembe venni. Tartsd észben, hogy az "egyéni érdekek és speciális igényeknek" eleget tevő opciók jelentősen befolyásolják a sebességet vagy a minőséget, de elsősorban nem ezért használják őket. Az "egyéni érdekek" opciói közül több olyan változásokat idézhet elő, ami néhány embernek tetszhet, míg másoknak nem.
Mielőtt folytatnád, meg kell értened, hogy ez a leírás csak egy minőségi mércét használ: a globális PSNR-t. A PSNR rövid leírása megtalálható a Wikipedia PSNR-ről szóló cikkében. A globális PSNR az utolsó PSNR szám, amit kiír az x264encopts, ha megadod neki a psnr opciót. Bármikor, amikor egy kijelentést olvasol a PSNR-ről, él az a feltételezés, hogy azonos bitrátát használsz.
Ezen leírás majdnem teljesen egészében feltételezi, hogy két lépéses kódolást használsz. Az opciók összehasonlításánál két fő érv szól a kétlépéses kódolás mellett. Az egyik, hogy a két lépés alkalmazása kb. 1dB PSNR-t jelent pluszban, ami nagyon nagy különbség. A másik, hogy az opciók tesztelésénél a direkt minőség-összehasonlítás az egy lépéses kódolásokkal behoz egy zavaró tényezőt: a bitráta gyakran jelentősen változik a kódolások között. Nem minden esetben könnyű megmondani, hogy a minőségi változás a megváltozott opciók miatt következett-e be vagy a főként véletlenül elért bitráta különbségből adódik.
subq: Azon opciók közül, amik segítségével a sebesség és minőség közötti arányt befolyásolhatod, a subq és a frameref (lásd lejjebb) a legfontosabbak általában. Ha érdekel akár a sebesség, akár a minőség tuningolása, akkor ezt a két opciót kell először megvizsgálnod. Sebesség szempontjából a frameref és a subq opciók elég erőteljes kölcsönhatásban vannak. A tapasztalatok szerint egy referencia kockával a subq=5 (alapértelmezett érték) kb. 35%-kal több időt kíván, mint a subq=1. 6 referencia kockával az igény 60% fölé megy. A subq hatása a PSNR-re elég egyenletes, a referencia kockák számától függetlenül. Általában a subq=5 0.2-0.5 dB-vel magasabb globális PSNR-t biztosít a subq=1-gyel összehasonlítva. Általában ez már látható különbség.
A subq=6 lassabb, de jobb minőséget ad elfogadható áron. A subq=5-tel összehasonlítva általában 0.1-0.4 dB nyereséget jelent a globális PSNR-ben, 25%-100% között változó sebességveszteség árán. A subq egyéb értékeitől eltérően a subq=6 viselkedése nem függ olyan nagy mértékben a frameref és a me opcióktól. A subq=6 hatékonysága inkább a használt B-kockák számától függ. Normális használat esetén ez azt jelenti, hogy a subq=6-nak nagy hatása van mind a sebességre, mint a minőségre az összetett, sok mozgást tartalmazó jelenetek esetében, de sokkal kevesebb a kevés mozgást rögzítő részeknél. Jegyezd meg, hogy még mindig javasoljuk a bframes értékének valamilyen nullától különböző értékre történő állítását (lásd lejjebb).
subq=7 a leglassabb, legjobb minőséget nyújtó mód. A subq=6-tal összehasonlítva általában 0.01-0.05 dB globális PSNR növelést jelent, változó 15%-33%-os sebességveszteség árán. Mivel a kódolási idő vs. minőség arány eléggé rossz, csak akkor ajánlott használni, ha minden egyes bit fontos és a kódolási idő nem számít.
frameref: A frameref alapértéke 1, de ez nem jelenti azt, hogy jó dolog 1-re állítani. Pusztán a frameref növelése 2-re kb. 0.15dB PSNR nyereséget jelent 5-10%-os sebességcsökkenéssel; ez így még jó üzletnek tűnik. A frameref=3 0.25dB PSNR-t hoz a frameref=1-hez képest, ami látható különbség. A frameref=3 kb. 15%-kal lassabb a frameref=1-nél. Ezután sajnos gyorsan jön a csökkenés. A frameref=6 valószínűleg csak 0.05-0.1 dB pluszt jelent a frameref=3-hoz képest, további 15% sebességveszteség mellett. frameref=6 felett a minőségjavulás általában nagyon kicsi (bár vedd figyelembe az egész rész olvasása közben, hogy ez nagymértékben változhat a forrásodtól függően). Egy átlagos esetben a frameref=12 a globális PSNR-t csekély 0.02dB-vel javítja a frameref=6-hoz képest, 15%-20% sebességveszteség árán. Az ilyen magas frameref értékeknél az egyedüli igazán jó dolog, amit mondhatunk, hogy a további növelés szinte soha sem árt a PSNR-nek, de a minőségi javulás szinte alig mérhető és nem is észrevehető.
A frameref növelése szükségtelenül magas értékekre ronthatja és általában rontja is a kódolási hatékonyságot, ha kikapcsolod a CABAC-ot. Bekapcsolt CABAC-kal (alapértelmezett), a frameref "túl magas" értékre történő beállítása jelenleg nagyon távolinak tűnik ahhoz, hogy aggódjunk miatta és a jövőben az optimalizációk lehet, hogy meg is szüntetik ennek lehetőségét.
Ha számít a sebesség, akkor megfontolandó, hogy alacsony subq és frameref értékeket használj az első lépésben és majd a második lépésben emeld. Általában ez jelentéktelen negatív hatással van a végső minőségre: valószínűleg jóval kevesebb, mint 0.1dB PSNR-t veszítesz, ami túl kicsi különbség ahhoz, hogy észrevedd. Bár a frameref különböző értékei alkalmanként befolyásolhatják a képkocka típus döntéseket. Ezek legtöbbször ritka, szélsőséges esetek, de ha teljesen biztos akarsz lenni, gondolkozz el rajta, hogy van-e a videódban teljes képernyős ismétlődő, csillogó minta vagy nagyon nagy ideiglenes elzáródás, ami kikényszeríthet egy I-kockát. Az első lépés frameref-jét úgy állítsd be, hogy elég nagy legyen ahhoz, hogy tartalmazza a villódzási ciklust (vagy az elzárást). Például ha a jelenet oda-vissza ugrál két kép között három keret idejéig, állítsd be az első lépés frameref-jét 3-ra vagy magasabbra. Ez a dolog eléggé ritka az élő akciót tartalmazó videóanyagokban, de néha előjön videójátékok képének mentésekor.
me: Ez az opció a mozgásbecsléshez használt keresés módszerét választja ki. Ezen opció megváltoztatása természetesen magával hozza a minőség-vs-sebesség arány változását. A me=dia csak kis mértékben gyorsabb, mint az alapértelmezett keresés, kevesebb, mint 0.1dB globális PSNR árán. Az alapértelmezett beállítás (me=hex) egy ésszerű kompromisszum a sebesség és a minőség között. A me=umh kicsivel kevesebb, mint 0.1dB globális PSNR-t jelent, amiért változó árat kell fizetni a sebességben a frameref-től függően. Ha a frameref értéke nagy (pl. 12 vagy hasonló), a me=umh kb. 40%-kal lassabb, mint az alapértelmezett me=hex. frameref=3-mal a sebességbeli veszteség visszaesik 25%-30%-ra.
A me=esa egy nagyon alapos keresést használ, ami túl lassú a gyakorlati alkalmazáshoz.
partitions=all: Ez az opció engedélyezi a 8x4-es, 4x8-as és 4x4-es alpartíciók használatát a megjósolt makroblokkokban (az alapértelmezett partíciók mellett). A bekapcsolása viszonylag egyenletes 10%-15%-os sebességveszteséget jelent. Ez az opció eléggé hasztalan a kevés mozgást tartalmazó videókban, bár néhány gyors mozgású forrás, tipikusan a sok apró mozgó objektumot tartalmazó, várhatóan kb. 0.1dB-t javul.
bframes: Ha kódoltál már más codec-kel, rájöhettél, hogy a B-kockák nem mindig hasznosak. A H.264-nél ez megváltozott: új technikák és blokk típusok lehetnek a B-kockákban. Általában még a naív B-kocka választó algoritmus is jelentős PSNR hasznot hozhat. Azt is érdemes megjegyezni, hogy a B-kockák használata általában egy kicsit gyorsít a második lépésen és talán az egy lépéses kódolást is gyorsítja kicsit, ha az adaptív B-kocka döntés ki van kapcsolva.
Az adaptív B-kocka döntés kikapcsolásával (x264encopts nob_adapt opciója) ezen beállítás optimális értéke általában nem több, mint bframes=1, különben a gyors mozgású részek romolhatnak. Bekapcsolt adaptív B-kocka döntéssel (alapértelmezett tulajdonság) nyugodtan használhatsz magasabb értéket; a kódoló csökkenti a B-kockák használatát azokban a részekben, ahol amiatt sérülne a tömörítés. A kódoló ritkán választ 3 vagy 4 B-kockánál többet; ezen opció magasabb értékre állítása nagyon kicsi különbséget eredményez.
b_adapt: Megjegyzés: Ez alapértelmezetten be van kapcsolva.
Ezzel az opcióval a kódoló egy eléggé gyors döntési eljárást fog használni a B-kockák számának csökkentésére az olyan jelenetekben, amelyek nem profitálnak belőlük. Használhatod a b_bias-t a kódoló B-kocka-használatának nyomonkövetésére. Az adaptív B-kockák sebességbeli hátránya jelenleg elég szerény, de ilyen a potenciális minőségbeli javulás is. De általában nem árt. Jegyezd meg, hogy ez csak az első lépésben érinti a sebességet és a képkocka típus döntéseket. A b_adapt-nak és a b_bias-nak nincs hatása a következő lépésekre.
b_pyramid: Jó ha engedélyezed ezt az opciót, ha >=2 B-kockát használsz; ahogy a man oldal is írja, egy kicsi minőségi javulást kapsz sebességcsökkenés nélkül. Jegyezd meg, hogy ezen videók nem olvashatóak a 2005. március 5-nél korábbi libavcodec-alapú dekódolókkal.
weight_b: Általános esetekben ez az opció nem hoz sokat a konyhára. Bár az át- és az elsötétülő jeleneteknél, a súlyozott jóslás jelentős bitráta spórolást hoz. Az MPEG-4 ASP-ben az elsötétülés általában drága I-kockák sorozatával kerül legjobban elkódolásra; a B-kockákban használt súlyozott jóslással lehetséges ezek legalább részben a sokkal kisebb B-kockákkal történő lecserélése. A kódolási időben jelentkező plusz ráfordítás minimális, mivel nem kell külön döntéseket hozni. Ellentétben azzal, amire pár ember gondol, a dekódoló CPU igényét nem érinti jelentősen a súlyozott jóslás.
Sajnos a jelenlegi adaptív B-kocka döntési algoritmusnak van egy olayn érdekes tulajdonsága, hogy kerüli a B-kockákat az elsötétedéseknél. Amíg ez nem változik meg, jó ötlet lehet a nob_adapt opció hozzáadása az x264encopts-hoz, ha arra számítasz, hogy sötétedések jelentősen befolyásolják a videódat.
threads:
Ez az opció szálak segítségével párhuzamos kódolást tesz lehetővé több
CPU-n. A létrejövő szálak száma kézzel is beállítható, de jobb a
threads=auto és rábízni az
x264
-re a használható CPU-k
felderítését és a szálak optimális számának megállapítását.
Ha több processzoros géped van, nem árt fontolóra venni ennek a használatát,
mivel a CPU magokkal arányosan megnövelheti a kódolási sebességet
(kb. 94% CPU magonként), nagyon kicsi minőségromlással (kb. 0.005dB
dual processzornál, 0.01dB quad processzoros gépnél).
Két lépéses kódolás: Fentebb azt javasoltuk, hogy mindig használj két lépéses kódolást, azonban vannak indokok az elkerülése mellett is. Például ha élő TV adást mentesz és kódolsz valós időben, kénytelen vagy egy lépést használni. Az egy lépés nyilvánvalóan gyorsabb, mint a két lépéses; ha teljesen ugyan azokkal az opciókat használod mind a két lépésben, a két lépéses kódolás majdnem kétszer olyan lassú.
Mégis van pár nagyon jó indok a két lépéses kódolás használatára. Az egyik, hogy az egy lépés rátakontollja nem pszichikai, így gyakran ésszerűtlen döntéseket hoz, mert nem látja a nagy képet. Például tegyük fel, hogy van egy két perces videód, mely két eltérő félből áll. Az első fele nagyon gyors mozgású, 60 másodperces jelenet, ami magában kb. 2500kbps-t igényel, hogy megfelelően nézzen ki. Majd rögtön ez után egy sokkal kisebb igényű 60 másodperces jelenet jön, ami 300 kbps-sel is jól néz ki. Tegyük fel, hogy 1400kbps-t kérsz, ami elméletileg elég mind a két jelenethez. Az egy lépéses rátakontroll rengeteg "hibát" ejt egy ilyen esetben. Mindenek előtt az 1400kbps-t célozza meg mind a két szegmensben. Az első rész erőteljesen túl lesz kvantálva, emiatt elfogadhatatlan és túlzottan blokkos képet kapsz. A második szegmens pedig erőteljesen alul lesz kvantálva; tökéletesen néz ki, de az ezzel járó bitráta többlet teljesen ésszerűtlen. Amit még nehezebb elkerülni, az a két jelenet közötti átmenet problémája. A lassú mozgású rész első pár másodperce túlságosan túl lesz kvantálva, mert a rátakontroll még a videó első feléből származó bitráta igényre számít. Ez a túlkvantálási "hiba periódus" a kevés mozgást tartalmazó részt szörnyen rosszá teszi, tulajdonképpen kevesebb, mint 300kbps-t fog használni, ami a megfelelő kinézethez kellene. Több lehetőség is van az egy lépéses kódolás buktatóiból származó hibák csökkentésére, de összességében mégis növelik a bitráta félrebecslésének esélyét.
A többlépéses rátakontrollnak több előnye is van az egylépésessel szemben. Az első lépésből nyert statisztikai adatokból a kódoló egész jó pontossággal meg tudja jósolni egy bármilyen adott kocka bármilyen adott kvantálás melletti kódolásának "költségét" (bitekben). Ez a bitek sokkal ésszerűbb, jobban megtervezett elosztását eredményezi a drága (sok mozgású) és az olcsó (kevés mozgású) jelenetek között. Lásd a qcomp opciót lejjebb néhány ötletért, hogy hogyan tudod ezt a felosztást kedvedre változtatni.
Továbbá a két lépés nem tart kétszer annyi ideig, mint az egy. Az első lépés opcióit rá lehet hangolni a nagyobb sebességre és a gyengébb minőségre. Ha jól választod meg az opciókat, egy nagyon gyors első lépésed lehet. Az eredmény minősége a második lépésben kicsit alacsonyabb lesz mert a méret becslés kevésbé pontos, de a minőségi különbség normális esetben túl kicsi ahhoz, hogy észrevedd. Például próbáld meg a subq=1:frameref=1 opció hozzáadását a x264encopts első lépéséhez. Majd, a második lépésben használj lassabb, jobb minőséget biztosító opciókat: subq=6:frameref=15:partitions=all:me=umh
Három lépéses kódolás? Az x264 lehetőséget nyújt tetszőleges számú egymás utáni lépések elvégzésére. Ha megadod a pass=1 opciót az első lépésben, majd pass=3-at használsz az egyik következő lépésben, a következő lépés beolvassa az előző statisztikáját és megírja a sajátját. Egy ezt követő lépésnek már nagyon jó alapjai lesznek, nagyon pontos döntéseket tud hozni a képkocka méretre vonatkozóan a választott kvantálás mellett. A gyakorlatban az össz minőségi nyereség ebből közel van a nullához és lehetséges, hogy egy harmadik lépés kissé még rontja is a globális PSNR-t az előző lépéshez képest. Az átlagos felhasználásban a három lépés akkor segít, ha két lépéssel rossz bitráta jóslást kaptál vagy ronda átmeneteket a jelenetek között. Ilyen dolog csak a nagyon rövid klippeknél fordulhat elő. Van még pár speciális eset is, amikor a három (vagy több) lépés jól jöhet a haladó felhasználóknak, de a rövidítés végett ezeket az eseteket nem tárgyaljuk ebben a leírásban.
qcomp: A qcomp a "drága", sok mozgást és az "olcsó", kevés mozgást tartalmazó jelenetekhez használt bitek arányát szabályozza. Extrém esetben a qcomp=0 az igazi konstans bitrátát célozza meg. Ezzel a sok mozgású részek borzasztóan fognak kinézni, míg a kevés mozgást tartalmazó részek valószínűleg tökéletesen fognak kinézni, de a hasonló kinézethez szükséges bitráta többszörösét fogják felhasználni. A másik extrém véglet a qcomp=1 majdnem konstans kvantálási paramétert ér el (QP). A konstans QP nem néz ki rosszul, de a legtöbb ember úgy gondolja, hogy ésszerűbb egy kis bitrátát feláldozni a roppant drága jeleneteknél (ahol a minőségromlás nem olyan észrevehető) és felhasználni őket a kitűnő minőségben is könnyebben kódolható jeleneteknél. A qcomp alapértelmezett értéke 0.6, ami eléggé alacsony sok ember ízléséhez képest (0.7-0.8 a leggyakrabban használt).
keyint: A keyint kizárólag a a fájlon belüli keresést rontja a kódolási hatékonyság javára. Alapértelmezésként a keyint 250-re van állítva. Egy 25fps-es anyagnál ez garantálja a 10 másodpercen belüli pontossággal történő ugrást. Ha úgy gondolod, hogy fontos és hasznos lenne az 5 másodperces pontosság, állítsd be a keyint=125 értéket; ez egy kissé rontja a minőséget/bitrátát. Ha csak a minőség érdekel és a kereshetőség nem, beállíthatod magasabb értékre (észben tartva azt, hogy egyre csökkenő hasznot hoz, mely végül szinte észrevehetetlenül kicsi vagy akár nulla lesz). A videó folyam még így is fog tartalmazni kereshető pontokat, amíg van benne jelenet váltás.
deblock: Ez a rész egy kicsit vitatható lesz.
A H.264 egy egyszerű deblocking eljárást definiál az I-blokkokra, ami előre beállított erősséget és áteresztést használ a szóbanforgó blokk QP-je alapján. Alapértelmezettként a nagy QP blokkok erős szűrön mennek át, az alacsony QP blokkok nem kerülnek deblock-olásra semennyire sem. Az alapértelmezett értékek szerint előre beállított erősség jól megválasztott és jó eséllyel PSNR-optimális bármilyen videóhoz, amit csak próbálsz elkódolni. A deblock paraméterrel megadhatod az előre beállított deblocking áteresztés eltolását.
Sokan úgy gondolják, hogy jó ötlet nagy mértékben csökkenteni a deblocking szűrő erősségét (mondjuk -3-ra). Ez valójában szinte soha sem jó ötlet és a legtöbb esetben azok az emberek, akik ezt csinálják, nem is értik igazán, hogy hogyan működik a deblocking alapból.
Az első és legfontosabb dolog azt tudni a beépített deblocking szűrőről, hogy az alapértelmezett áteresztés majdnem mindig PSNR-optimális. Ritkább esetben nem optimális, az ideális eltolás plusz vagy mínusz 1. A deblocking paramétereinek nagy mértékben történő megváltoztatása majdnem garantáltan rontja a PSNR-t. A szűrő erősítése elmaszatol néhány részletet; a szűrő gyengítése a kockásodás láthatóságát növeli.
Tipikusan rossz ötlet a deblocking áteresztés csökkentése, ha a forrásod térbeli komplexitása alacsony (pl. nem túl részletes vagy zajos). A beépített szűrő remek munkát végez a felbukkanó mellékhatások elrejtése érdekében. Ha a forrásban térbeli komplexitása nagy, a mellékhatások még kevésbé láthatóak. Ez azért van, mert a gyűrűs haladás részletnek vagy zajnak látszik. Az emberi szem könnyen meglátja, ha egy részlet elmozdul, de nem olyan könnyű észrevenni, ha a zaj rosszul van reprezentálva. Ha szubjektív minőséghez ér, a zaj és a részletesség valamennyire felcserélhető. A deblocking szűrő erősségének csökkentésével a legvalószínűbb, hogy növeled a hibákat a gyűrűs mellékhatások hozzáadásával, de a szem nem veszi észre, mert összekeveri a mellékhatásokat és a részleteket.
Ez még nem igazolja a deblocking szűrő erősségének csökkentését. Általában jobb zajminőséget érhetsz el az utófeldolgozással. Ha a H.264 kódolásod túl foltos vagy maszatos, próbáld meg lejátszani a -vf noise kapcsolóval. A -vf noise=8a:4a-nak a gyenge mellékhatásokat el kell tüntetnie. Majdnem biztos, hogy jobb eredményt kapsz, mint a deblocking szűrővel való pepecseléssel.
A következő beállítások példák a különböző kódolási opciók kombinációjára, amik érintik a sebességet vagy a minőséget ugyan annál a cél bitrátánál.
Az összes kódolási beállítást egy 720x448 @30000/1001 fps-es minta videón teszteltük, a cél bitráta 900kbps volt, a gép pedig egy AMD-64 3400+ 2400 MHz-en, 64 bit-es módban. Mindegyik kódolási beállítás tartalmazza a kódolási sebességet (képkocka per másodpercben) és a PSNR veszteséget (dB-ben) a "nagyon jó minőséghez" viszonyítva. Kérlek vedd figyelembe, hogy a forrásanyagodtól, a géped típusától és a fejlesztésektől függően különböző eredményeket kaphatsz.
Leírás | Kódolási opciók | sebesség (fps-ben) | relatív PSNR veszteség (dB-ben) |
---|---|---|---|
Nagyon jó minőség | subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid=normal:weight_b | 6fps | 0dB |
Jó minőség | subq=5:partitions=all:8x8dct:frameref=2:bframes=3:b_pyramid=normal:weight_b | 13fps | -0.89dB |
Gyors | subq=4:bframes=2:b_pyramid=normal:weight_b | 17fps | -1.48dB |
A Video for Windows egyszerű kódolást biztosít bináris videó codec-ekkel. A következő codec-ekkel kódolhatsz (ha több is van, kérjük áruld el!)
Tartsd észben, hogy ez nagyon kísérleti támogatás és néhány codec hibásan működhet. Néhány codec csak bizonyos színterekben működik jól, próbáld ki a -vf format=bgr24 és -vf format=yuy2 opciókat, ha a codec hibázik vagy rossz kimenetet ad.
Videó codec fájl név | Leírás | md5sum | Megjegyzés |
---|---|---|---|
aslcodec_vfw.dll | Alparysoft veszteségmentes codec vfw (ASLC) | 608af234a6ea4d90cdc7246af5f3f29a | |
avimszh.dll | AVImszh (MSZH) | 253118fe1eedea04a95ed6e5f4c28878 | -vf format kell hozzá |
avizlib.dll | AVIzlib (ZLIB) | 2f1cc76bbcf6d77d40d0e23392fa8eda | |
divx.dll | DivX4Windows-VFW | acf35b2fc004a89c829531555d73f1e6 | |
huffyuv.dll | HuffYUV (veszteségmentes) (HFYU) | b74695b50230be4a6ef2c4293a58ac3b | |
iccvid.dll | Cinepak Video (cvid) | cb3b7ee47ba7dbb3d23d34e274895133 | |
icmw_32.dll | Motion Wavelets (MWV1) | c9618a8fc73ce219ba918e3e09e227f2 | |
jp2avi.dll | ImagePower MJPEG2000 (IPJ2) | d860a11766da0d0ea064672c6833768b | -vf flip |
m3jp2k32.dll | Morgan MJPEG2000 (MJ2C) | f3c174edcbaef7cb947d6357cdfde7ff | |
m3jpeg32.dll | Morgan Motion JPEG Codec (MJPEG) | 1cd13fff5960aa2aae43790242c323b1 | |
mpg4c32.dll | Microsoft MPEG-4 v1/v2 | b5791ea23f33010d37ab8314681f1256 | |
tsccvid.dll | TechSmith Camtasia Screen Codec (TSCC) | 8230d8560c41d444f249802a2700d1d5 | shareware hiba windows-on |
vp31vfw.dll | On2 Open Source VP3 Codec (VP31) | 845f3590ea489e2e45e876ab107ee7d2 | |
vp4vfw.dll | On2 VP4 Personal Codec (VP40) | fc5480a482ccc594c2898dcc4188b58f | |
vp6vfw.dll | On2 VP6 Personal Codec (VP60) | 04d635a364243013898fd09484f913fb | |
vp7vfw.dll | On2 VP7 Personal Codec (VP70) | cb4cc3d4ea7c94a35f1d81c3d750bc8d | -ffourcc VP70 |
ViVD2.dll | SoftMedia ViVD V2 codec VfW (GXVE) | a7b4bf5cac630bb9262c3f80d8a773a1 | |
msulvc06.DLL | MSU Lossless codec (MSUD) | 294bf9288f2f127bb86f00bfcc9ccdda | Dekódolható a Window Media Playerrel, de az MPlayerrel nem (még). |
camcodec.dll | CamStudio veszteségmentes videó codec (CSCD) | 0efe97ce08bb0e40162ab15ef3b45615 | sf.net/projects/camstudio |
Az első oszlop a codec nevét tartalmazza, amit a codec
paraméter után kell megadni, így:
-xvfcopts codec=divx.dll
Az egyes codec-ek által használt FourCC kód zárójelben látható.
Egy példa egy ISO DVD ajánló VP6 flash videó fájlba történő átalakítására a compdata bitráta beállításaival:
mencoder -dvd-devicezeiram.iso
dvd://7 -otrailer.flv
\ -ovc vfw -xvfwopts codec=vp6vfw.dll:compdata=onepass.mcf -oac mp3lame \ -lameopts cbr:br=64 -af lavcresample=22050 -vf yadif,scale=320:240,flip \ -of lavf
A Video for Windows codec-ekkel történő kódoláshoz be kell állítanod a bitrátát és egyéb opciókat. x86-on ez működik mind *NIX, mind Windows alatt.
Először is le kell fordítanod a vfw2menc programot. A TOOLS alkönyvtárban található az MPlayer forrásában. A Linux alatti elkészítéséhez a Wine-t kell használni:
winegcc vfw2menc.c -o vfw2menc -lwinmm -lole32
Windows alatt MinGW vagy Cygwin használatával:
gcc vfw2menc.c -o vfw2menc.exe -lwinmm -lole32
Az MSVC-vel történő fordításhoz szükséges a getopt. A getopt megtalálható az eredeti vfw2menc archivban itt: The MPlayer win32 alatt projekt.
Az alábbi példa VP6 codec-kel működik.
vfw2menc -f VP62 -d vp6vfw.dll -s firstpass.mcf
Ez megnyitja a VP6 codec dialógus ablakot.
Ismételd meg ezt a második lépéshez is
és használd a -s secondpass.mcf
kapcsolót.
A Windows használók a -xvfwopts codec=vp6vfw.dll:compdata=dialog kapcsolóval a kódolás megkezdése előtt jeleníthetik meg a codec dialógust.
Több oka is van annak, hogy kívánatos lehet QuickTime-kompatibilis fájlok készítése.
Azt szertnéd, hogy minden gép le tudja játszani a kódolásod bármelyik fő platformon (Windows, Mac OS X, Unices …).
A QuickTime több hardveres és szoftveres gyorsítást ki tud használni Mac OS X-en, mint a platform-független lejátszók, mint például az MPlayer vagy a VLC. Ez azt jelenti, hogy a kódolásaid jó eséllyel szebben mennek majd egy régi G4-alapú gépen.
A QuickTime 7 támogatja a következő generációs H.264 codec-et, ami sokkal jobb képminőséget biztosít, mint az előző codec generációk (MPEG-2, MPEG-4 …).
A QuickTime 7 támogatja a H.264 videót és az AAC audiót, de nem támogatja ezek AVI konténer formátumba történő keverését. Mindamellett használhatod a MEncodert a videó és az audió kódolásához, és utána egy külső programmal, mint pl. az mp4creator (az MPEG4IP suite része) újrakevered a videó és audió sávokat egy MP4 konténerbe.
A QuickTime H.264 támogatása korlátolt, így néhány fejlett funkció nem lesz elérhető. Ha olyan funkciókkal kódolod el a videódat, amiket a QuickTime 7 nem támogat, a QuickTime-alapú lejátszók egy csodás fehér képet fognak mutatni neked a várt videó helyett.
B-frame-k: A QuickTime 7 maximum 1 B-frame-t támogat, pl. -x264encopts bframes=1. Ez azt jelenti, hogy a b_pyramid-nek és a weight_b-nek nem lesz hatása, mivel 1-nél több bframe kell nekik.
Makroblokkok: A QuickTime 7 nem támogatja a 8x8 DCT makroblokkokat. Ez az opció (8x8dct) ki van kapcsolva alapértelmezésben, ezért győződj meg, hogy még véletlenül sem engedélyezed. Ez azt is jelenti, hogy a i8x8-nak nem lesz hatása, mivel ahhoz a 8x8dct szükséges.
Méret arány: A QuickTime 7 nem támogatja a SAR (sample aspect ratio) információkat az MPEG-4 fájlokban; feltételezi, hogy a SAR=1. Olvasd el a méretezés részt a tüneti kezeléshez. A QuickTime X-ben már nincs meg ez a korlátozás.
Tegyük fel, hogy rip-pelni szeretnéd a "Narnia krónikái" frissen vásárolt másolatát. A DVD-d régió 1-es, ami azt jelenti, hogy NTSC. Az alábbi példa működik PAL-ra is, feltéve, hogy elhagyod a -ofps 24000/1001-et és kicsit más crop és scale méreteket adsz meg.
Miután lefuttattad az mplayer dvd://1-et, kövesd a Mit kezdjünk a telecine-nel és az átlapolással NTSC DVD-ken részben leírtakat, és rájössz, hogy ez egy 24000/1001 fps-es progresszív videó. Ez kicsit leegyszerűsíti a folyamatot, mivel nem kell inverz telecine szűrőt használnod, mint a pullup vagy deinterlacing szűrőt, mint a yadif.
Ezután le kell vágnod a fekete sávokat a videó tetején és alján, ahogy az ebben az előző részben le van írva.
A következő lépés szívszaggató. A QuickTime 7 nem támogatja azon MPEG-4 videókat, melyekben a sample aspect ratio 1-től különböző, így vagy fel kell méretezned (ami rengeteg lemezterületet elvisz) vagy le kell méretezned (ami miatt elveszik a forrás pár részlete) a videót négyzetes pixelekre. Bárhogy is csinálod, ez nagyon nem jó, de nem kerülheted ki, ha QuickTime 7 által lejátszható videót akarsz. A MEncoder végre tudja hajtani a megfelelő fel- illetve leméretezést megfelelően a -vf scale=-10:-1 vagy a -vf scale=-1:-10 megadásával. Ez a videódat a vágott magasságnak megfelelő szélességűre méretezi, 16 legközelebbi többszörösére kerekítve az optimális tömörítéshez. Emlékezz rá, hogy ha vágsz, először vágnod kell, utána méretezni:
-vf crop=720:352:0:62,scale=-10:-1
Mivel egy másik konténerbe keversz, mindig ajánlott a harddup opció használata annak biztosítására, hogy a duplikált kockák a kimeneti videóban is duplikálva lesznek. Ezen opció nélkül a MEncoder egyszerűen csak egy jelet tesz a videó folyamba a képkocka duplikálásának helyére és innentől a kliens szoftveren műlik, hogy kétszer mutatja-e az adott kockát. Sajnos ez a "szoft duplikálás" nem éli túl az újrakeverést, így az audió lassan elveszíti a szinkront a videóval.
A végleges szűrőlánc így néz ki:
-vf crop=720:352:0:62,scale=-10:-1,harddup
Mint mindig, a bitráta megválasztása a forrás technikai tulajdonságaitól függ, ahogy az itt le van írva, valamint az egyéni ízlésedttől is. Ebben a filmben sok akció van nagy részletességgel, de a H.264 videó sokkal kisebb bitrátán is jobban néz ki, mint az XviD vagy más MPEG-4 codec-ek. Hosszas kísérletezés után ezen leírás szerzője úgy döntött, hogy 900kbps-en kódolja el ezt a filmet és úgy hiszi, hogy nagyon jól néz ki. Csökkentheted a bitrátát, ha több helyet kell megspórolnod vagy növelheted, ha javítanod kell a minőséget.
Készen állsz a videó elkódolására. Mivel érdekel a minőség, természetesen
két-lépéses kódolást futtatsz le. Hogy megspóroljunk némi kódolási időt,
megadhatod a turbo opciót az első lépésben; ez lecsökkenti
a subq-t és a frameref-et 1-re. Némi
lemezterület megspórolása érdekében használhatod az
ss opciót a videó első pár másodpercének levágásához.
(Úgy tűnik, hogy a konkrét film 32 másodpercnyi stáblistát és logót
tartalmaz.) A bframes lehet 0 vagy 1.
A többi opció a Kódolás az
x264
codec-kel részben
és a man oldalon van leírva.
mencoder dvd://1 -o /dev/null -ss 32 -ovc x264 \ -x264encopts pass=1:turbo:bitrate=900:bframes=1:\ me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \ -vf crop=720:352:0:62,scale=-10:-1,harddup \ -oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \ -ofps 24000/1001
Ha több processzoros géped van, ne hagy ki a kódolás drasztikus módon történő
gyorsításának a lehetőségét, melyet az
x264
több-processzoros módja
nyújt a threads=auto x264encopts-ban
történő megadásával a parancssorban.
A második lépés ugyan ez, kivéve, hogy meg kell adni a kimeneti fájlt és a pass=2-őt.
mencoder dvd://1 -o narnia.avi -ss 32 -ovc x264 \ -x264encopts pass=2:turbo:bitrate=900:frameref=5:bframes=1:\ me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \ -vf crop=720:352:0:62,scale=-10:-1,harddup \ -oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \ -ofps 24000/1001
Az eredmény AVI tökéletesen lejátszható az MPlayer-rel, de természetesen a QuickTime nem játsza le, mivel nem támogatja az AVI-ba kevert H.264-et. Ezért a következő lépés a videó MP4 konténerbe történő keverése.
Több mód is van az AVI MP4-be történő újrakeverésére. Használhatod az mp4creator-t, ami az MPEG4IP suite része.
Először az AVI-ból különálló audió és videó folyamokat kell készíteni az MPlayerrel.
mplayer narnia.avi -dumpaudio -dumpfile narnia.aac mplayer narnia.avi -dumpvideo -dumpfile narnia.h264
A fájl nevek fontosak; az mp4creator
.aac
kiterjesztésű AAC audió folyamot és
.h264
kiterjesztésű H.264 videó folyamot vár.
Ezután használd az mp4creator-t egy új MP4 fájl létrehozásához az audió és videó folyamból.
mp4creator -create=narnia.aac narnia.mp4 mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4
A kódolási lépéstől eltérően itt a framerátát decimálisként (23.976) kell megadni, nem törtként (24000/1001).
Ennek a narnia.mp4
fájlnak már bármilyen
QuickTime 7 alkalmazással lejátszhatónak kell
lennie, mint például a QuickTime Player vagy
az iTunes. Ha a videót böngészőben szeretnéd
megnézni a QuickTime plugin-nel, utasítanod kell
a QuickTime plugin-t, hogy kezdje meg a lejátszást,
miközben még tart a letöltés. Az mp4creator
bele tudja tenni a videóba az ehhez szükséges utasító sávokat:
mp4creator -hint=1 narnia.mp4 mp4creator -hint=2 narnia.mp4 mp4creator -optimize narnia.mp4
Ellenőrizheted a végső eredményt, hogy meggyőződj róla, hogy az utasító sávok rendben elkészültek:
mp4creator -list narnia.mp4
Látnod kell a sávok listáját: 1 audió, 1 videó és 2 hint sáv.
Track Type Info 1 audio MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz 2 video H264 Main@5.1, 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps 3 hint Payload mpeg4-generic for track 1 4 hint Payload H264 for track 2
Ha tag-eket akarsz hozzáfűzni a videódhoz, amiket az iTunes megjelnít, használhatod az AtomicParsley-t.
AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite
A --metaEnema opció eltávolít minden meglévő metadata-t (mp4creator beszúrja a saját nevét az "encoding tool" tag-be), a --freefree pedig visszaszerzi a törölt metadata által elfoglalt helyet. A --stik opció beállítja a videó típusát (mint pl. Movie vagy TV Show), aminek a segítségével az iTunes csoportosítani tudja a fájlokat. A --overWrite opció felülírja az eredeti fájlt; ennélkül az AtomicParsley egy új, automatikusan elnevezett fájlt hoz létre ugyan abban a könyvtárban és érintetlenül hagyja az eredeti fájlt.
A MEncoder képes VCD, SCVD és DVD formátumú
MPEG fájlok létrehozására a
libavcodec
könyvtár segítségével.
Ezek a fájlok a
vcdimager-rel
vagy a
dvdauthor-ral
együttműködve felhasználhatók szabványos lejátszókban lejátszható
lemezek készítéséhez.
A DVD, SVCD és VCD formátumok súlyos korlátokkal rendelkeznek. A kódolt képméretekből és a képarányokból csak nagyon kevés áll rendelkezésre. Ha a filmed nem felel meg ezeknek a követelményeknek, méretezned, vágnod vagy fekete keretet kell hozzáadnod a képhez, hogy kompatibilis legyen.
Formátum | Felbontás | V. Codec | V. Bitráta | Mintavételi ráta | A. Codec | A. Bitráta | FPS | Arány |
---|---|---|---|---|---|---|---|---|
NTSC DVD | 720x480, 704x480, 352x480, 352x240 | MPEG-2 | 9800 kbps | 48000 Hz | AC-3,PCM | 1536 kbps (max) | 30000/1001, 24000/1001 | 4:3, 16:9 (csak 720x480-nál) |
NTSC DVD | 352x240[a] | MPEG-1 | 1856 kbps | 48000 Hz | AC-3,PCM | 1536 kbps (max) | 30000/1001, 24000/1001 | 4:3, 16:9 |
NTSC SVCD | 480x480 | MPEG-2 | 2600 kbps | 44100 Hz | MP2 | 384 kbps (max) | 30000/1001 | 4:3 |
NTSC VCD | 352x240 | MPEG-1 | 1150 kbps | 44100 Hz | MP2 | 224 kbps | 24000/1001, 30000/1001 | 4:3 |
PAL DVD | 720x576, 704x576, 352x576, 352x288 | MPEG-2 | 9800 kbps | 48000 Hz | MP2,AC-3,PCM | 1536 kbps (max) | 25 | 4:3, 16:9 (csak 720x576-nál) |
PAL DVD | 352x288[a] | MPEG-1 | 1856 kbps | 48000 Hz | MP2,AC-3,PCM | 1536 kbps (max) | 25 | 4:3, 16:9 |
PAL SVCD | 480x576 | MPEG-2 | 2600 kbps | 44100 Hz | MP2 | 384 kbps (max) | 25 | 4:3 |
PAL VCD | 352x288 | MPEG-1 | 1152 kbps | 44100 Hz | MP2 | 224 kbps | 25 | 4:3 |
[a] Ezek a felbontások ritkán használatosak a DVD-ken, mert elég alacsony minőségűek. |
Ha a filmednek 2.35:1 méretaránya van (a legtöbb akció film), fekete keretet kell hozzáadnod vagy le kell vágnod a filmet 16:9-es méretarányra DVD vagy VCD készítéshez. Ha fekete keretet adsz hozzá, próbáld meg 16 pixel-es határra igazítani őket a kódolási teljesítményre való hatásuk minimalizálásához. Szerencsére a DVD-nek eléggé magas a bitrátája, nem kell aggódnod túlságosan a kódolás hatékonysága miatt, de az SVCD és a VCD bitráta-szegény, ezért erőfeszítéseket kell tenni az elfogadható minőségért is.
A DVD, VCD és SVCD eléggé alacsony GOP (Group of Pictures) méret értékekre korlátoz le. Egy 30 fps-es anyagnál a legnagyobb megengedett GOP méret 18. 25 vagy 24 fps-nél a maximum 15. A GOP méretét a keyint opcióval lehet beállítani.
A VCD videónak CBR-esnek kell lennie 1152 kbps-en. Ehhez a nagyon erős megkötéshez egy extrém alacsony, 327 kilobit-es vbv buffer méret társul. Az SVCD megengedi a bitráta változtatását 2500 kbps-ig és kicsit kevésbé korlátozó, 917 kilobit-es vbv buffer méretet engedélyez. A DVD videó bitrátája bárhol lehet 9800 kbps-ig (bár az általános bitráták ennek felénél vannak) és a vbv buffer méret is 1835 kilobit.
A MEncoder rendelkezik a kimeneti formátumot beállító kapcsolókkal. Ezen opciók használatával utasíthatod, hogy helyes típusú fájlt készítsen.
A VCD és SVCD opciókat xvcd-nek és xsvcd-nek hívják, mert kiterjesztett formátumúak. Nem teljesen kompatibilisek, főként mivel a kimenet nem tartalmaz scan offszet-eket. Ha SVCD CD képet kell készítened, add át a kimeneti fájlt a vcdimager-nek.
VCD:
-of mpeg -mpegopts format=xvcd
SVCD:
-of mpeg -mpegopts format=xsvcd
DVD (minden kockánál időbélyeggel, ha lehetséges):
-of mpeg -mpegopts format=dvd:tsaf
DVD NTSC Pullup-pal:
-of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001
Ez engedélyezi a 24000/1001 fps-es progresszív tartalom 30000/1001 fps-sel történő kódolását a DVD-előírások betartásával.
A -lavcopts aspect argumentuma használható a fájl képarányának elkódolásához. Lejátszás közben a képarányt a videó megfelelő méretűre állításához használják.
16:9 vagy "Widescreen"
-lavcopts aspect=16/9
4:3 vagy "Fullscreen"
-lavcopts aspect=4/3
2.35:1 vagy "Cinemascope" NTSC
-vf scale=720:368,expand=720:480 -lavcopts aspect=16/9
A helyes méretarány kiszámításához használd a 854/2.35 = 368-as kibővített NTSC szélességet.
2.35:1 vagy "Cinemascope" PAL
-vf scale=720:432,expand=720:576 -lavcopts aspect=16/9
A helyes méretarány kiszámításához használd a 1024/2.35 = 432-es kibővített PAL szélességet.
Az audió/videó szinkronizáció kódolás közbeni megtartásához a MEncodernek el kell dobni vagy meg kell duplázni képkockákat. Ez jobban működik ha AVI fájlba keversz, de majdnem biztosan sikertelen az A/V szinkron megtartása más muxer-ekkel, mint pl. az MPEG. Ezért van, hogy a harddup videó szűrőt hozzá kell csatolni a szűrőlánc végéhez ezen problémák elkerüléséhez. A harddup-ról további információkat a muxálás és az A/V szinkron megbízhatósága című fejezetben találsz vagy a man oldalon.
Ha az eredeti fájl audió mintavételi rátája nem ugyan olyan, mint ami a cél formátumban szükséges, mintavételi ráta konvertálást kell végrehajtani. Ez a -srate és -af lavcresample kapcsolók együttes használatával érhető el.
DVD:
-srate 48000 -af lavcresample=48000
VCD és SVCD:
-srate 44100 -af lavcresample=44100
A libavcodec
használható
VCD/SVCD/DVD kompatibilis videó készítéséhez a megfelelő opciókkal.
Következzék egy lista a -lavcopts-ban használható mezőkről, amiknek a megváltoztatására szükséged lehet a VCD, SVCD, vagy DVD kompatibilis film készítésekor:
acodec: mp2 a VCD-hez, SVCD-hez vagy PAL DVD-hez; ac3 a leggyakoribb DVD-hez. PCM audió is használható DVD-hez, de legtöbbször csak helypazarlás. Figyelj rá, hogy az MP3 audió ezen formátumok egyikével sem kompatibilis, de a lejátszóknak gyakran semmi gondot nem okoz a lejátszása.
abitrate: 224 VCD-nél; 384-ig SVCD-nél; 1536-ig DVD-nél, de általában a használt értékek a sztereónál 192 kbps-étől az 5.1 csatornás hang 384 kbps-éig változnak.
vcodec: mpeg1video VCD-hez; mpeg2video SVCD-hez; mpeg2video használatos általában a DVD-hez, de lehet mpeg1video is a CIF felbontásokhoz.
keyint: A GOP méret beállításához használható. 18 a 30fps-es anyagé vagy 15 a 25/24 fps-esé. A kereskedelmi előállítók a 12-es kulcskocka intervallumot preferálják. Lehetséges ezen érték nagyobbra állítása is a legtöbb lejátszóval való kompatibiliítás megtartása mellett. A 25-ös keyint soha nem okoz problémát.
vrc_buf_size: 327 VCD-nél, 917 SVCD-nél és 1835 DVD-nél.
vrc_minrate: 1152 VCD-nél. Elhagyható SVCD és DVD esetében.
vrc_maxrate: 1152 VCD-nél; 2500 SVCD-nél; 9800 DVD-nél. SVCD-hez és DVD-hez az egyéni kívánalmaidnak és igényeidnek megfelelően használhatsz magasabb értékeket is.
vbitrate: 1152 VCD-nél; legfeljebb 2500 SVCD-nél; legfeljebb 9800 DVD-nél. Az utóbbi két formátumnál a vbitrate egyéni igények szerint állítható be. Például szeretnéd, hogy 20 óra vagy akörüli anyag felférjen egy DVD-re, használhatod a vbitrate=400-at. Az eredmény videó minősége valószínűleg elég rossz lesz. Ha megpróbálod kisakkozni a lehető legjobb minőséget a DVD-n, használd a vbitrate=9800-at, de emlékezz rá, hogy emiatt kevesebb, mint egy órányi videód lehet egy egyrétegű DVD-n.
vstrict: vstrict=0 ajánlott DVD-k készítéséhez. Ezen opció nélkül a MEncoder egy olyan folyamot készít, amit néhány asztali lejátszó nem tud helyesen dekódolni.
Általában ez a minimum -lavcopts egy videó elkódolásához:
VCD:
-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\ vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2
SVCD:
-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\ keyint=15:acodec=mp2
DVD:
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ keyint=15:vstrict=0:acodec=ac3
Jobb minőségű kódoláshoz valószínűleg használni szeretnéd a lavcopts minőség-javító opcióit is, mint például a trell, mbd=2, vagy mások. Figyelj rá, hogy a qpel és a v4mv bár gyakran hasznosak MPEG-4 esetén, nem használhatóak MPEG-1 vagy MPEG-2-vel. Ha nagyon jó minőségű DVD kódolást akarsz készíteni, hasznos lehet a dc=10 opció hozzáadása a lavcopts-hoz. Ez segíti csökkenteni a blokkosodást a színtelen részeknél. Mindezt összerakva, itt egy példa jó minőségű DVD készítéséhez szükséges lavcopts-ra:
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\ keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\ vqmin=1:lmin=1:dc=10:vstrict=0
A VCD és az SVCD támogatja az MPEG-1 layer II audiót, a
toolame
,
twolame
,
vagy a libavcodec
MP2
kódolójának felhasználásával.
A libavcodec MP2 messze nincs olyan jó, mint a másik két könyvtár,
azonban az mindig elérhető és használható.
A VCD csak konstans bitrátájú audiót (CBR) támogat, míg az SVCD
tudja a változó bitrátát (VBR) is.
De vigyázz a VBR-rel, mert néhány hibás asztali lejátszó sem támogatja.
A DVD audióhoz a libavcodec
AC-3 codec-je használható.
Ez a rész néhány teljes parancsot mutat a VCD/SVCD/DVD kompatibilis videók készítéséhez.
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \ -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 \ -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 25 \ -omovie.mpg
movie.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \ -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 \ -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 \ -omovie.mpg
movie.avi
Ha a forrás már AC-3 audióval rendelkezik, használd a -oac copy kapcsolót az újrakódolása helyett.
mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \ -vf scale=720:576,harddup -ofps 25 \ -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ keyint=15:vstrict=0:aspect=16/9 -omovie.mpg
movie.avi
Ha a forrás már AC-3 audiót tartalmaz és NTSC @ 24000/1001 fps:
mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \ -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\ vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:aspect=16/9 -ofps 24000/1001 \ -omovie.mpg
movie.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \ scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\ vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224:aspect=16/9 -ofps 25 \ -omovie.mpg
movie.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \ scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\ vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224:aspect=16/9 -ofps 30000/1001 \ -omovie.mpg
movie.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \ scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:\ vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224:aspect=16/9 -ofps 25 \ -omovie.mpg
movie.avi
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \ scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:\ vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224:aspect=16/9 -ofps 30000/1001 \ -omovie.mpg
movie.avi
[1] Azonban légy óvatos: A DVD felbontású MPEG-4 AVC videó dekódolása gyors gépet igényel (pl. egy 1,5 GHz feletti Pentium 4 vagy egy 1 GHz feletti Pentium M).
[2] Ugyan az a kódolás nem biztos, hogy ugyan úgy néz ki valaki másnak a monitorán vagy ha más dekódolóval játszák le, ezért ellenőrizd a kódolásaidat különböző beállítások mellett történő lejátszással!
10.1. Fejlesztés | |
K: | Hogyan készítsek egy megfelelő patchet az MPlayerhez? |
V: | Készítettünk egy rövid leírást, melyben minden fontos dolgot megtalálsz. Kérünk kövesd az utasításait! |
K: | Hogyan fordíthatom le az MPlayert egy új nyelvre? |
V: | Olvasd el a fordítás HOGYAN-t, az elmagyaráz mindent. További segítséget kaphatsz az MPlayer-translations levelezési listán. |
K: | Hogyan támogathatom az MPlayer fejlesztését? |
V: | Több mint örömmel fogadjuk a hardver és szoftver felajánlásokat. Ezek segítenek nekünk az MPlayer folyamatos fejlesztésében. |
K: | Hogyan lehetek én is MPlayer fejlesztő? |
V: | Mindig örömmel várjuk a programozókat és a dokumentáció készítőket. Olvasd el a technikai dokumentációt hogy egy kicsit megértsd a dolgokat. Majd fel kell iratkoznod az MPlayer-dev-eng levelezési listára és elkezdeni kódolni. Ha a dokumentáció készítésében szeretnél segíteni, csatlakozz az MPlayer-docs levelezési listához! |
K: | Miért nem használjátok az autoconf/automake párost? |
V: | Van egy saját, moduláris fordító rendszerünk. Meglehetősen jól teszi a dolgát, így hát miért váltsunk? Ezonkívül nem szeretjük az auto* eszközöket, mint ahogy mások sem. |
10.2. Fordítás és telepítés | |
| |
K: |
A fordítás leáll hibaüzenettel és a gcc valami
titokzatos üzenetet ad ki magából, ami a
|
V: | Belebotlottál egy gcc hibába. Kérjük jelentsd a gcc csapatnak és ne nekünk. Valamiért úgy tűnik az MPlayer folyamatosan fordító hibákat idéz elő. Azonban mi ezeket nem tudjuk javítani és nem teszünk "kerülőutakat" a kódba a fordító hibái miatt. Hogy elkerüld ezt a problémát, vagy használj ismert és megbízható, stabil verziót a fordítóból vagy frissítsd rendszeresen. |
K: | Vannak bináris (RPM/Debian) csomagok az MPlayerből? |
V: | |
K: | Hogyan fordíthatok 32 bites MPlayert egy 64 bites Athlon-on? |
V: | Próbáld meg a következő configure kapcsolókkal: ./configure --target=i386-linux --cc="gcc -m32" --as="as --32" --with-extralibdir=/usr/lib
|
K: | A konfiguráció ezzel a szöveggel ér véget és az MPlayer nem fordul le! Your gcc does not support even i386 for '-march' and '-mcpu'
|
V: | A gcc-d nincs megfelelően installálva, ellenőrizd a config.log fájlt a részletekért! |
K: |
Van egy Matrox G200/G400/G450/G550 kártyám, hogyan tudom lefordítani/használni
az |
V: | Olvasd el az mga_vid részt. |
K: | A 'make' közben az MPlayer hiányzó X11 könyvtárak miatt panaszkodik. Nem értem, van telepítve X11-em!? |
V: | ... de nincsenek telepítve az X11 fejlesztői csomagjai. Vagy rosszul vannak fent. XFree86-devel* a nevük Red Hat alatt, xlibs-dev Debian Woody és libx11-dev Debian Sarge alatt. Nézd meg azt is, hogy a /usr/X11 és a /usr/include/X11 szimbolikus linkek léteznek-e. |
K: | A Mac OS 10.3 alatti fordítás számos szerkesztési hibát okoz. |
V: | A szerkesztési hiba, amit tapasztalhatsz, valószínűleg így néz ki: ld: Undefined symbols: _LLCStyleInfoCheckForOpenTypeTables referenced from QuartzCore expected to be defined in ApplicationServices _LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be defined in ApplicationServices A probléma, hogy az Apple fejlesztői 10.4-et használnak a szoftvereik fordításához és a 10.3 felhasználók felé történő terjesztéshez a Software Update-n keresztül. A nem definiált szimbólumok jelen vannak a Mac OS 10.4-ben, de nincsenek ott a 10.3-ban. Az egyik megoldás a QuickTime 7.0.1-re történő downgrade lehet. De van egy jobb is. Szerezd be a framework-ök régebbi másolatát. Ez egy tömörített fájl, ami tartalmazza a QuickTime 7.0.1 Framework-öt és a 10.3.9 QuartzCore Framework-öt. Csomagold ki a fájlokat valahova a System könyvtáradon kívülre. (vagyis ne telepítsd ezen framework-öket a /System/Library/Frameworks könyvtáradba! A régebbi másolat csak a szerkesztési hibák ellen kell!) gunzip < CompatFrameworks.tgz | tar xvf -
A config.mak fájlba írd be
A keletkező MPlayer bináris a rendszeredbe
telepített framework-öt fogja használni dinamikus link-ek segítségével,
melyek futási időben kerülnek feloldásra.
(Ezt leellenőrizheted a |
10.3. Általános kérdések | |
| |
K: | Van MPlayerrel foglalkozó levelezési lista? |
V: | Igen. Lásd a weboldal levelezési lista részét! |
K: | Találtam egy csúnya hibát, amikor megpróbáltam lejátszani a kedvenc videómat! Kit értesítsek? |
V: | Kérünk olvasd el a hiba jelentési útmutatót és kövesd az utasításait. |
K: | Egy core dump-ot kapok, amikor folyamokat dump-olok, mi a baj? |
V: | Ne pánikolj. Keresd meg a zsepidet. Na komolyan, vedd már észre a smiley-t és keresd meg a .dump-ra végződő fájlokat! |
K: | Ha elindítom a lejátszást, ezt az üzenetet kapom, de látszólag minden rendben van: Linux RTC init: ioctl (rtc_pie_on): Permission denied
|
V: | Speciálisan beállított kernel kell az új időzítő kód használatához. A részletekért lásd az RTC részt a dokumentációban. |
K: | Hogyan készíthetek mentést a képernyőről? |
V: | Olyan videó kimeneti vezérlőt kell használnod, ami nem átlapolva dolgozik, csak így tudod elmenteni a képet. X11 alatt a -vo x11 megteszi, Windows alatt a -vo directx:noaccel működik.
Alternatívaként futtathatod az MPlayert a
|
K: | Mit jelentenek a számok a státusz sorban? |
V: | Például: A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x
Ezek legtöbbje hibakeresési céllal szerepel, a -quiet kapcsoló használatával eltüntethetőek. Észreveheted, hogy a video_out CPU használata nulla (0%) néhány fájlnál. Ez azért van, mert közvetlenül a codec-ből kerül meghívásra, így nem mérhető külön. Ha tudni akarod a video_out sebességét, hasonlítsd össze a -vo null-lal és a hagyományos videó kimeneti vezérlővel történő lejátszás értékeit. |
K: | Üzeneteket kapok a /usr/local/lib/codecs/ könyvtárban nem található fájlokról... |
V: | Töltsd le a bináris codeceket a letöltési oldalunkról és telepítsd. |
K: | Hogyan emlékeztethetem az MPlayert egy bizonyos fájlnál használt opciókra, pl. a movie.avi-nál? |
V: | Hozz létre egy movie.avi.conf nevű fájl a fájl-specifikus opciókkal és tedd a ~/.mplayer könyvtárba vagy a fájl mellé. |
K: | A feliratok gyönyörűek, a legszebbek, amit valaha láttam, de lelassítják a lejátszást! Tudom, hogy hihetetlen ... |
V: |
Miután lefuttattad a ./configure-t,
írd át a config.h fájlt és
cseréld ki az |
K: | Hogy tudom az MPlayer a háttérben futtatni? |
V: | Így: mplayer
|
10.4. Lejátszási problémák | |
| |
K: | Nem találom néhány érdekes lejátszási probléma okát. |
V: | Nem maradt valahol egy codecs.conf fájlod a ~/.mplayer/, /etc/, /usr/local/etc/ vagy hasonló helyen? Töröld le, egy régi codecs.conf fájl ismeretlen problémákat okozhat és csak a fejlesztőknek lett szánva a codec támogatások elkészítéséhez. Felülbírálja az MPlayer belső codec beállításait, ami megbosszulja magát, ha az újabb verziókban inkompatibilis változások jelennek meg. Hacsak nem vagy hozzáértő, ez a tuti recept a láthatóan véletlenszerű és nehezen azonosítható fagyások és lejátszási problémák esetén. Ha még valahol megtalálható a rendszereden, most azonnal töröld le! |
K: | Hogyan jeleníthetem meg a feliratot a film körül lévő fekete sávon? |
V: |
Használd az mplayer -vf expand=0:-100:0:0 -slang de dvd://1
|
K: | Hogyan tudok audió/felirat sávot választani a DVD, OGM, Matroska vagy NUT fájlban? |
V: | A -aid (audio ID) vagy -alang (audió nyelv), -sid(felirat ID) vagy -slang (felirat nyelv) kapcsolókkal, például: mplayer -alang eng -slang eng Ha kiváncsi vagy, hogy melyek elérhetőek: mplayer -vo null -ao null -frames 0 -v
|
K: | Egy véletlen stream-et szeretnék lejátszani az Internetről, de nem sikerül. |
V: | Próbáld meg lejátszani a stream-et a -playlist kapcsolóval. |
K: | Letöltöttem egy videót egy P2P hálózatról és nem megy! |
V: | A fájlod valószínűleg sérült vagy fake. Ha egy ismerőstől kaptad és ő azt mondja, hogy működik, hasonlítsd össze az md5sum hash-eket. |
K: | Gondjaim vannak a feliratok megjelenítésével, segítsetek!! |
V: |
Győződj meg róla, hogy helyesen telepítetted a betűtípusokat. Fuss át a lépésein újra
a OSD és felirat részben a telepítési fejezetben.
Ha TrueType betűtípusokat használsz, ellenőrizd, hogy van
|
K: | Miért nem működik az MPlayer Fedora Core-on? |
V: | Rossz az együttműködés a Fedora-n az exec-shield, prelink és néhány Windows DLL-eket használó alkalmazás (mint például az MPlayer) között. A probléma az, hogy az exec-shield véletlenszerűsíti az összes rendszer függvény könyvtár betöltési helyét. Ez a véletlenszerűsítés prelink időben történik meg (kéthetente egyszer). Amikor az MPlayer megpróbálja betölteni egy Windows DLL-t, egy speciális címre akarja tenni (0x400000). Ha egy fontos rendszer függvény könyvtár már épp ott van, az MPlayer összeomlik. (Tipikus jele ennek a Windows Media 9 fájlok lejátszásakor bekövetkező szegmentálási hiba.) Ha egy ilyenbe belefutsz, két lehetőséged van:
|
K: | Az MPlayer meghal ezzel: MPlayer interrupted by signal 4 in module: decode_video
|
V: | Ne használd az MPlayert más CPU-n, mint amin fordítva lett, vagy fordítsd újra futásidejű CPU felismeréssel (./configure --enable-runtime-cpudetection). |
K: | Ha menteni próbálok a tuneremről, működik, de a színek érdekesek lesznek. Más alkalmazásokkal minden rendben van. |
V: | A kártyád valószínűleg támogatottként jelöl meg bizonyos színtereketet, miközben nem támogatja őket. Próbáld meg YUY2-vel az alapértelmezett YV12 helyett (lásd a TV fejezetet). |
K: | Furcsa százalékos értékeket kapok (nagyon magasak), miközben a notebook-omon játszok le fájlokat. |
V: | A notebookod energia menedzselő / energia takarékoskodó rendszerének (BIOS, nem kernel) hatása. Dugd be a külső áramkábelt mielőtt bekapcsolod a notebookodat. Megnézheted, hogy a cpufreq (SpeedStep interfész Linuxra) segít-e neked. |
K: | Az audió/videó teljesen elveszti a szinkront ha az MPlayert root-ként futtatom a notebookon. Normálisan működik, ha felhasználóként futtatom. |
V: | Ez megint csak az energia menedzsment hatása (lásd feljebb). Dugd be a külső áramkábelt mielőtt bekapcsolod a notebookodat vagy bizonyosodj meg róla, hogy nem használod a -rtc kapcsolót. |
K: | Film lejátszása közben hirtelen szaggatottá válik és a következő üzenetet kapom: Badly interleaved AVI file detected - switching to -ni mode...
|
V: | Rossz a fájl interleave-je és a -cache sem működik jól. Próbáld meg a -nocache kapcsolót. |
10.5. Videó/audió vezérlő problémák (vo/ao) | |
| |
K: | Ha átváltok teljes képernyős módba, csak fekete széleket kapok a kép körül és nincs igazi méretezés teljes képernyős módra. |
V: |
A videó kimeneti eszközöd nem támogatja a hardveres méretezést és a
szoftveres hihetetlenül lassú tud lenni, az MPlayer
alapértelmezésként nem engedélyezi. Legvalószínűbb, hogy az
|
K: | Most telepítettem az MPlayert. Amikor meg akarok nyitni vele egy videó fájlt, végzetes hibával elszáll: Error opening/initializing the selected video_out (-vo) device. Hogyan oldhatom meg ezt a problémát? |
V: | Csak változtass a videó kimeneti eszközön. Írd be a következő parancsot a használható videó kimeneti vezérlők listájához: mplayer -vo help Miután kiválasztottad a megfelelő videó kimeneti vezérlőt, írd be a konfigurációs fájlodba. Ezt egy
vo = sor ~/.mplayer/config fájlhoz adásával és/vagy
vo_driver = ~/.mplayer/gui.conf fájlba írásával teheted meg. |
K: |
Problémám van a |
V: | Olvasd el a hiba jelentési leírást és küldj egy megfelelő hiba jelentést. Vagy próbaként kísérletezhetsz a -fstype kapcsolóval. |
K: | AVI fájl lejátszásakor elveszik az audió szinkronizáció. |
V: | Próbáld meg a -bps vagy a -nobps kapcsolót. Ha nem javul, olvasd el a hibajelentési útmutatót és töltsd fel a fájlt az FTP-re. |
K: | Hogy tudom használni a dmix-et az MPlayerrel? |
V: | Miután beállítottad az asoundrc-t használd a -ao alsa:device=dmix kapcsolót. |
K: | Nincs hang videó lejátszása közben, és egy ehhez hasonló üzenetet kapok: AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) [AO OSS] audio_setup: Can't open audio device /dev/dsp: Device or resource busy Could not open/initialize audio device -> no sound. Audio: no sound Starting playback...
|
V: | KDE-t vagy GNOME-ot futtatsz aRts vagy ESD hang démonnal? Próbáld meg kikapcsolni a hang démont vagy használd a -ao arts vagy -ao esd kapcsolót, hogy az MPlayer aRts-ot vagy ESD-t használjon. Talán az ALSA-t OSS emuláció nélkül futtatod, próbáld meg betölteni az ALSA OSS kernel modulját vagy megadni a -ao alsa kapcsolót a parancssorban a közvetlen ALSA audió kimeneti vezérlő használatához. |
K: | Ha elindítom az MPlayert KDE alatt, csak egy üres képet kapok és semmi sem történik. Majd kb. egy perc után elindul a videó lejátszás. |
V: | A KDE aRts zene démonja blokkolja a hang eszközt. Vagy megvárod, amíg a videó elindul vagy kikapcsolod az arts-démont a vezérlőpanelben. Ha arts-ot akarsz használni, add meg az audió kimenetnek a mi saját, natív aRts audió vezérlőnket (-ao arts). Ha nem működik vagy nincs beforgatva, próbáld meg az SDL-t (-ao sdl) és győződj meg róla, hogy az SDL tudja kezelni az aRts-ot. Másik lehetőség, hogy az MPlayert artsdsp-vel indítod. |
K: | A/V szinkronizálási problémáim vannak. Néhány AVI fájlom rendesen lejátszódik, de néhány dupla sebességgel megy! |
V: |
Hibás hang kártyád/vezérlőd van. Legvalószínűbb, hogy rögzítve van 44100Hz-en,
és olyan fájlt akarsz lejátszani, amiben 22050Hz-es audió van. Próbáld ki a
|
K: | Amikor filmet játszok le, szétesik a videó-audió szinkron és/vagy az MPlayer összeomlik ezzel az üzenettel: Too many (945 in 8390980 bytes) video packets in the buffer!
|
V: | Ennek több oka lehet.
|
K: | Hogyan szabadulhatok meg az A/V deszinkronizációtól a RealMedia folyamokban történő léptetésnél? |
V: | A -mc 0.1 segíthet. |
10.6. DVD lejátszás | |
| |
K: | Mi van a DVD navigációval/menükkel? |
V: | Az MPlayer ma már támogatja a DVD menüket. A használhatóság mértéke viszont változhat. |
K: | Mi van a feliratokkal? Meg tudja őket jeleníteni az MPlayer? |
V: | Igen. Lásd a DVD fejezetet. |
K: | Hogy tudom beállítani a DVD meghajtóm régió kódját? Nincs Windows-om! |
V: | Használd a regionset eszközt. |
K: | Nem tudok lejátszani DVD-t, az MPlayer lefagy vagy "Titkosított VOB fájl!" / "Encrypted VOB file!" hibát ír. |
V: | A CSS dekódolás nem működik néhány DVD meghajtóval, amíg nem állítod be a régiókódot megfelelően. Lásd a választ az előző kérdésre. |
K: | Muszáj (setuid) root-nak lennem, hogy DVD-t nézhessek? |
V: | Nem. De megfelelő jogokkal kell rendelkezned a DVD eszköz bejegyzésére (a /dev/ könyvtárban). |
K: | Lehetséges, hogy csak a kijelölt fejezeteket játszam le/kódoljam? |
V: | Igen, próbáld ki a -chapter kapcsolót. |
K: | A DVD lejátszásom lassú! |
V: | Használd a -cache kapcsolót (ahogy le van írva a man oldalon) és próbáld meg engedélyezni a DMA-t a DVD meghajtóra a hdparm eszközzel. |
K: | Másoltam egy DVD-t vobcopy-val. Hogyan tudom lejátszani/elkódolni a merevlemezemről? |
V: | Használd a -dvd-device kapcsolót, amivel megadhatod a könyvtárat, ahol a fájlok vannak:
mplayer dvd://1 -dvd-device
|
10.7. Speciális kérések | |
K: | Ha az MPlayert megállítom és megpróbálok ugrani vagy megnyomok bármilyen gombot, az MPlayer felfüggeszti a megállítást. Szeretnék keresni a megállított filmben. |
V: | Ezt megvalósítani nagyon nehéz lenne az A/V szinkronizáció elveszítése nélkül. Az összes kísérlet eddig kudarcba fulladt, de örömmel fogadjuk a javításokat. |
K: | Szeretnék +/- 1 képkockát ugrani a 10 másodperc helyett. |
V: | Egy képkockával előre léphetsz a . gombbal. Ha a film nem volt megállítva, akkor ezután megáll (lásd a man oldalt a részletekért). A visszafelé lépés valószínűleg nem lesz mostanában megvalósítva. |
10.8. Elkódolás | |
| |
K: | Hogy tudok kódolni? |
V: | Olvasd el a MEncoder részt. |
K: | Hogyan tudok egy teljes DVD részt átteni egy fájlba? |
V: | Ha kiválasztottad a részt és meggyőződtél róla, hogy az MPlayer jól játsza le, használhatod a -dumpstream kapcsolót. Például:
mplayer dvd://5 -dumpstream -dumpfile
kimenti a DVD 5. részét a |
K: | Hogy tudok automatikusan (S)VCD-t készíteni? |
V: | Használd a mencvcd.sh szkriptet a TOOLS alkönyvtárból. Ezzel DVD-ket és más filmeket tudsz VCD vagy SVCD formátumba kódolni és még közvetlenül CD-re is írhatod őket. |
K: | Hogyan tudok (S)VCD-t készíteni? |
V: | A MEncoder újabb verziói direktben tudnak MPEG-2-es fájlokat készíteni, amiket fel lehet használni VCD vagy SVCD készítéshez és valószínűleg minden platformon lejátszhatóak (például videó megosztása egy digitális camcorderről a számítógép-tudatlan barátaiddal). Kérlek olvasd el a MEncoder használata VCD/SVCD/DVD-kompatibilis fájlok készítéséhez című fejezetet a bővebb információkért. |
K: | Hogy tudok összefűzni két videó fájlt? |
V: | Az MPEG fájlok csak szerencsés esetben fűzhetőek össze egy fájlba. AVI fájlokhoz használhatod a MEncoder több fájl támogatását így: mencoder -ovc copy -oac copy -o Ez csak akkor működik, ha a fájlok ugyan felbontásúak és ugyan azt a codec-et használják. Megpróbálhatod az avidemux-ot és az avimerge-t (a transcode eszközcsomag részei). |
K: | Hogyan tudom megjavítani a hibás indexű vagy átlapolt AVI fájlokat? |
V: | Ha el akarod kerülni az -idx kapcsoló állandó használatát azért, hogy képes legyél keresni a hibás indexű AVI fájlban vagy az -ni kapcsolót a rossz átlapoláshoz, használd a mencoder parancsot a videó és az audió folyamok új AVI fájlba másolásához, az index újragenerálásával és az átlapolási adatok kijavításával. Természetesen ez nem tudja kijavítani az esetleges hibákat a videó és/vagy audió folyamban. |
K: | Hogyan tudom kijavítani egy AVI fájl képének méretarányát? |
V: | Ilyet is tudsz csinálni hála a MEncoder -force-avi-aspect kapcsolójának, ami felülbírálja az AVI OpenDML vprp fejlécébe beírt értéket. Például: mencoder
|
K: | Hogyan tudom lementeni és elkódolni a hibás kezdetű VOB fájlt? |
V: | A fő probléma az sérült VOB fájl elkódolásával, hogy [3] nagyon nehéz lesz tökéletes A/V szinkronú kódolást készíteni. Az egyik megkerülő módszer a hibás rész egyszerű kivágása és csak a hibátlan rész kódolása. Először meg kell találnod, hogy hol kezdődik a hibátlan rész: mplayer Ezután elkészítheted az új fájlt, ami csak a hibátlan részt tartalmazza: dd if=
|
K: | Nem tudok DVD feliratot kódolni az AVI fájlba! |
V: | Helyesen kell megadnod a -sid kapcsolót! |
K: | Csak a kiválasztott fejezeteket tudom elkódolni a DVD-ről? |
V: | Használd a -chapter kapcsolót pontosan, például: -chapter 5-7. |
K: | 2GB+ méretű fájlokkal próbálok dolgozni VFAT fájlrendszeren. Működni fog? |
V: | Nem, a VFAT nem támogatja a 2GB+ fájlokat. |
K: | Mit jelentenek a státusz sorban lévő számok a kódolási folyamat közben? |
V: | Példa: Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2126:192]
|
K: | Miért negatív a MEncoder által kiírt javasolt bitráta? |
V: | Mert a bitráta, amivel kódoltad az audiót túl nagy ahhoz, hogy a film ráférjen bármilyen CD-re. Ellenőrizd, hogy a libmp3lame megfelelően van-e telepítve. |
K: | Nem tudok elkódolni ASF fájlokat AVI/MPEG-4 (DivX)-be, mert 1000 fps-t használ? |
V: | Mivel az ASF változó bitrátát használ, az AVI pedig fix értéket, kézzel kell megadnod a -ofps kapcsoló segítségével. |
K: | Hogy tudok feliratot tenni a kimeneti fájlba? |
V: | Csak add meg a -sub <fájlnév> (vagy -sid, megfelelően) kapcsolót a MEncodernek. |
K: | Hogyan tudom csak a zenét elkódolni egy zenés videóból? |
V: | Közvetlenül nem lehetséges, de megpróbálhatod a következőt (figyelj a & jelre az mplayer parancs végén):
mkfifo encode
mplayer -ao pcm -aofile encode dvd://1 &
lame Így bármilyen kódolót használhatsz, nem csak a LAME-t, csak cseréld ki a lame-t a kedvenc audió kódolóddal a fenti parancsban. |
K: | Miért nem tudom lejátszani más programmal a MEncoder 1.0pre7 és későbbi verzióival kódolt MPEG-4 filmeket? |
V: |
A mencoder
Figyelj rá, hogy ez XVID-re állítja a FourCC-t a DIVX helyett.
Ez a javasolt eljárás, mivel a DIVX FourCC DivX4-et jelent, ami egy
nagyon alap MPEG-4 codec, míg a DX50 és XVID mindkettő teljes MPEG-4
(ASP) támogatást jelent.
Ezért ha DIVX-re változtatod a FourCC-t, néhány rossz program vagy
hardveres lejátszó agyoncsaphatja a |
K: | Hogyan tudok elkódolni egy csak audiót tartalmazó fájlt? |
V: | Használd az aconvert.sh-et a TOOLS alkönyvtárból az MPlayer forrás fájában. |
K: | Hogyan tudom lejátszani az AVI-ba ágyazott feliratokat? |
V: | Használd az avisubdump.c fájlt a TOOLS alkönyvtárból vagy olvasd el ezt a dokumentumot az OpenDML AVI fájlokba ágyazott feliratok kicsomagolásáról/demultiplex-álásáról. |
K: | A MEncoder nem... |
V: | Nézz bele a TOOLS alkönyvtárba, mindenféle scriptek és hack-ok gyűjteményét találod ott. A TOOLS/README tartalmazza a dokumentációt. |
[3] Bizonyos mértékig a DVD-ken használt másolásvédelem egyes fajtái is tekinthetőek a tartalom sérülésének.
A jó hiba jelentések nagyon értékes hozzájárulások bármilyen szoftver fejlesztéséhez. De, akárcsak jó programot írni, jó probléma jelentést készíteni is némi munkába kerül. Kérlek vedd figyelembe, hogy a fejlesztők többsége roppant elfoglalt és valami hihetetlen mennyiségű levelet kap. Tehát miközben a visszajelzések kritikus és nagyon megbecsült az MPlayer fejlődése szempontjából, kérlek értsd meg, hogy minden általunk kért információt meg kell adnod és követned kell az ebben a dokumentumban leírt lépéseket.
Ha egy kihasználható hibát találsz és a helyesen akarsz cselekedni, vagyis előbb a mi tudomásunkra akarod hozni, mielőtt publikálnád, szívesen vesszük a biztonsági figyelmeztetésedet a security@mplayerhq.hu címen. Kérjük írd bele a tárgy mezőbe a [SECURITY] vagy [ADVISORY] szót. Figyelj rá, hogy a jelentésed a hiba teljes és részletes analízisét tartalmazza. Nagyon hálásak leszünk, ha javítást is küldesz. Kérjük ne késlekedj a jelentéseddel egy proof-of-concept exploit írása miatt, azt később is elküldheted egy másik levélben.
Ha úgy érzed, hogy képes vagy rá, bátran állj neki és javítsd ki a hibát magad. Vagy talán már meg is tetted? Kérlek olvasd el ezt a rövid dokumentumot, hogy megtudd, hogyan kerülhet be a kódod az MPlayerbe. Az MPlayer-dev-eng levelezési listán lévő emberkék segítenek neked, ha kérdésed van.
Egy néha előforduló probléma, hogy "régen még működött, de most már nem...". Következzék hát egy lépésenkénti leírás, mely segít a probléma megtalálásában. Ez nem az átlagos felhasználóknak szól.
Először is, be kell szerezned az MPlayer forrás fáját a Subversionből. Az utasításokat megtalálod a letöltési oldal Subversion részében.
Ezután lesz az mplayer/ könyvtárban a Subversion fáról egy pillanatképed, a kliens oldalon. Ezután frissítsd ezt a kívánt dátumúra:
cd mplayer/ svn update -r {"2004-08-23"}
A dátum formátum YYYY-MM-DD HH:MM:SS. Ezen dátum formátum használata biztosítja, hogy benne legyen minden olyan javítás, ami az adott dátumig commit-olva lett és bekerült az MPlayer-cvslog archívumába.
Majd folytasd, mint egy normális frissítést:
./configure make
Ha olyan olvassa ezt, aki nem programozó, annak gyorsabb megkeresni a probléma forrását bináris keresés használatával — ekkor a hiba helyét a keresési intervallum ismételt felezéseivel határozza meg. Például a probléma előfordult 2003 közepén, akkor kérdezd meg, hogy "Már ott volt a hiba?". Ha igen, akkor menj vissza április elsejére; ha nem, menj október elsejére, és így tovább.
Ha nagyon sok hely van a merevlemezeden (egy teljes fordítás jelenleg 100 MB és 300-350 MB körül van a hibakereső szimbólumokkal), másold át a legrégebbi tudvalevőleg működő verziót, mielőtt frissítenél; ezzel időt spórolsz, ha vissza kell lépned. (Általában le kell futtatni a 'make distclean'-t egy régi verzió újrafordítása előtt, így ha nem készítesz mentést az eredeti forrás fádról, újra kell fordítanod mindent, ha visszajössz a jelenbe.) Alternatívaként használhatod a ccache-t a fordítás felgyorsítására.
Ha megvan a nap, amikor a probléma megjelent, folytasd a keresést az mplayer-cvslog archívum segítségével (dátum szerint rendezve) és egy sokkal precízebb svn update-tel, melybe órát, percet és másodpercet is írsz:
svn update -r {"2004-08-23 15:17:25"}
Így könnyen megtalálod azt a javítást, ami okozta.
Ha megvan a javítás, ami a problémát okozta, majdnem győztél is; jelentsd az MPlayer Bugzilla-n vagy iratkozz fel az MPlayer-users listára és küldd el oda. Valószínűleg a szerző jelentkezni fog javítási ötlettel. Addig azonban a javításra is gyanakodva tekint, amíg nem tiszta, hogy hol is van a hiba :-).
Mindenek előtt kérlek, hogy mindig próbáld ki az MPlayer legújabb Subversion verzióját, hátha az általad felfedezett hibát már kijavították benne. A fejlesztés borzasztó gyorsan halad, a legtöbb, hivatalos kiadásban meglévő problémát napokon vagy akár órákon belül jelentik, így csak a Subversion felhasználásával küldj hibajelentést. Ebbe beleértendőek az MPlayer bináris csomagjai is. A Subversion utasításokat megtalálod ennek az oldalnak az alján vagy a README fájlban. Ha ez sem segít, olvasd el a dokumentáció többi részét. Ha problémád még nem ismert vagy nem oldódott meg a leírásunk által, akkor kérjük jelentsd.
Kérlek ne küljd hibajelentést személyesen egy fejlesztőnek. Ez csapatmunka és így számos embert érdekelhet. Néha más felhasználók is belefutnak a te problémáidba, és esetleg tudják, hogy hogyan lehet megkerülni, még akkor is, ha hiba van az MPlayer kódjában.
Kérlek olyan részletesen írd le a problémádat, amilyen részletesen csak lehet. Végezz egy kis felderítő munkát, szűkítsd le azon körülmények körét, amelyek között a hiba előfordul. A hiba csak adott szituációban jön elő? Bizonyos fájlokra vagy fájl típusokra vonatkozóan? Csak egy codec esetén vagy független a használt codec-től? Mindegyik kimeneti vezérlővel elő tudod hozni? Minél több információt adsz meg, annál nagyobb az esély a hiba kijavítására. Kérlek ne felejtsd el mellékelni azon értékes információkat, amit lejjebb írunk, különben képtelenek vagyunk megfelelően megkeresni a problémádat.
Egy kitűnő és jól megírt útmutató kérdések publikus fórumokban történő feltevéséhez a How To Ask Questions The Smart Way (magyarul) Eric S. Raymond-tól. Van egy másik is, a How to Report Bugs Effectively című Simon Tatham-tól. Ha követed ezeket a leírásokat, kapsz segítséget. De kérlek értsd meg, hogy a levelezési listákat önként, a szabad időnkben nézzük. Van más dolgunk is, és nem tudjuk garantálni, hogy kapsz megoldást vagy egyáltalán választ a problémádra.
Iratkozz fel az MPlayer-users levelezési listára: http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users (vagy a magyar nyelvűre itt: http://mplayerhq.hu/mailman/listinfo/mplayer-felhasznalok) és küldd el a hibajelentéseidet a mailto:mplayer-users@mplayerhq.hu (illetve mailto:mplayer-felhasznalok@mplayerhq.hu) címre, ahol meg lehet vitatni.
Ha inkább azt szeretnéd, használhatod a vadi új Bugzillánkat is.
Ezen lista nyelve az angol (a -felhasználóké magyar). Kövesd a szabványos Netiquette Irányelveket és ne küldj HTML levelet egyik levelezési listánkra se. Ha nem így teszel, akkor vagy egyszerűen figyelmen kívül hagynak vagy kitiltanak. Ha nem tudod mi az a HTML levél vagy hogy miért rossz az, olvasd el ezt a frankó leírást. Mindent részletesen megmagyaráz és tanácsokat ad a HTML kikapcsolásához. Szintén tartsd észben, hogy nem CC-zünk (carbon-copy) egyéneknek, így jól teszed, ha feliratkozol, hogy megkapd te is a választ.
A hibajelentésedhez csatolnod kell a log-ot, konfigurációs vagy minta fájlokat. Ha ezek közül valamelyik nagy, jobb ha feltöltöd az HTTP szerverünkre tömörített formátumban (gzip és bzip2 a javasolt) és csak az elérési utat és a fájl nevet írod bele a hiba jelentésedbe. A levelezési listáinkon az üzenet mérete maximum 80k lehet, ha ennél nagyobb fájlod van, tömörítened kell, vagy feltöltened.
A Linux disztribúciód vagy operációs rendszered verziója, pl.:
Red Hat 7.1
Slackware 7.0 + 7.1-es fejlesztői csomagjai ...
kernel verziója:
uname -a
libc verziója:
ls -l /lib/libc[.-]*
gcc és ld verziója:
gcc -v ld -v
binutils verziója:
as --version
Ha a teljes képernyős lejátszással van gondod:
Ablakezelő tíusa és verziója
Ha az XVIDIX-szel van problémád:
X szín mélység:
xdpyinfo | grep "depth of root"
Ha csak a GUI a hibás:
GTK verziója
GLIB verziója
GUI szituáció, ahol a hiba előjön
CPU infó (csak Linuxon működik):
cat /proc/cpuinfo
Videó kártya gyártója és modellje, pl.:
ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM
Matrox G400 DH 32MB SGRAM
Videó vezérlő típusa & verziója, pl.:
X built-in driver
nVidia 0.9.623
Utah-GLX CVS 2001-02-17
DRI from X 4.0.3
Hangkártya típusa & vezérlője, pl.:
Creative SBLive! Gold with OSS driver from oss.creative.com
Creative SB16 with kernel OSS drivers
GUS PnP with ALSA OSS emulation
Ha nem vagy biztos benne, csatold az lspci -vv kimenetét (Linux alatt).
Ha a ./configure futtatása közben fordult elő valami hiba, vagy valaminek az automatikus detektálása nem sikerült, olvasd el a config.log fájlt. Ott megtalálod a választ, például ugyanazon függvénykönyvtár több verziója elszórva a rendszerben, vagy elfelejtetted telepíteni a fejlesztői csomagokat (amiknek -dev utótagjuk van). Ha úgy hiszed, hogy hibát találtál, csatold a config.log fájlt a hibajelentésedhez.
Írd meg az MPlayer kimenetét az 1. szintű beszédességgel, de figyelj rá, hogy ne szerkeszd át a kimenetet, amikor beilleszted a levélbe. A fejlesztőknek szükségük van azokra az üzenetekre, hogy pontosan diagnosztizálják a problémát. A kimenetet átirányíthatod fájlba így:
mplayer -voptions
filename
> mplayer.log 2>&1
Ha a probléma egy vagy több fájl esetén specifikus, kérlek töltsd fel ide: http://streams.videolan.org/upload/
Tölts fel egy apró, a fájloddal megegyező nevű, de .txt kiterjesztésű szöveges fájlt is. Írd le a problémát, ami az adott fájllal jelentkezik és írd bele az e-mail címed valamint az MPlayer kimenetét 1. szintű beszédességgel. Általában a fájl első 1-5 MB-ja elég a hiba reprodukálásához, de a biztonság kedvéért:
dd if=yourfile
of=smallfile
bs=1024k count=5
Ez az első 5 megabájtot a 'your-file'-ból átírja a 'small-file'-ba. Ezután próbáld ki ezt a kicsi fájlt is és ha a hiba még mindig jelentkezik, akkor ez elegendő lesz nekünk. Kérlek soha ne küldj fájlokat mail-en keresztül! Töltsd fel és csak az FTP szerveren élő elérési utat/fájlnevet írd meg. Ha a fájl elérhető a neten, akkor a pontos URL beküldése is elegendő.
Az MPlayert a gdb-n belül kell futtatnod, és elküldeni a teljes kimenetet vagy ha van core dump-od az összeomlásról, abból is kiszedheted a hasznos információkat. Íme így:
Fordítsd újra az MPlayert a debug-oló kód engedélyezésével:
./configure --enable-debug=3 make
majd futtasd az MPlayert a gdb-ben az alábbi paranccsal:
gdb ./mplayer
Most a gdb-ben vagy. Írd be:
run -vkapcsolok-az-mplayernek
fajlnev
és reprodukáld az összeomlást. Amint megtörtént, a gdb visszaadja a parancssort, ahol be kell írnod:
bt disass $pc-32,$pc+32 info all-registers
Ha készítettél egy megfelelő hibajelentést a fenti utasítások betartásával és biztos vagy benne, hogy az MPlayerben van a hiba és nem a fordítóban vagy hibás fájl miatt, már elolvastad a dokumentációt és nem tudtad javítani a problémát, a hang vezérlőid rendben vannak, akkor iratkozz fel az MPlayer-advusers listára és küldd el a hibajelentésedet oda a jobb és gyorsabb válaszért.
Fontold meg, ha kezdő kérdéseket vagy a leírásban megválaszolt kérdéseket küldesz be, vagy figyelmen kívül hagynak vagy elkezdenek flame-elni válaszolás helyett. Tehát ne flame-elj és csak akkor iratkozz fel az -advusers listára, ha tényleg tudod, hogy mit csinálsz és gyakorlott MPlayer felhasználónak vagy fejlesztőnek érzed magad. Ha megfelesz ezen kritériának, nem fog nehezedre esni, hogy kitaláld, hogy iratkozhatsz fel...
A Skin-ek eléggé szabad formátumúak (nem mint például a Winamp/XMMS, fix formátumú skin-jei), tehát csak rajtad múlik, hogy valami igazán nagyot alkoss.
Jelenleg négy ablak van, amit dekorálni kell: a fő ablak, az alablak, a playbar és a skin menü (ami jobb kattintással aktiválható).
A fő ablak és/vagy a playbar az, ahol vezérelheted az MPlayert. Az ablak háttere egy kép. Ebbe az ablakba különböző elemeket lehet (és kell) tenni: gombok, potméterek (csúszkák) és címkék. Minden egyes elemnek meg kell adnod a pozícióját és a méretét.
Egy gombnak három állása van (lenyomott, felengedett, letiltott), így a képe függőlegesen három részre van osztva. Lásd a gomb elemet a részletekért.
Egy potmeternek (főként a kereső sáv és a hangerő/balansz állító) bármennyi fázisa lehet a képének egymás alatti tetszőleges feldarabolásával. Lásd a hpotmetert a részletekért.
A címkék egy kicsit különlegesek: A megrajzolásukhoz szükséges karaktereket egy kép fájlból nyerjük és a képen lévő karaktereket egy betű leíró fájl írja le. Ez utóbbi egy sima szöveges fájl, ami megadja minden egyes betű x, y pozícióját és méretét a képen (a kép fájl és a hozzátartozó betű leíró fájl együtt alkot egy betűtípust). Lásd a dlabelt és az slabelt a részletekért.
Az összes kép lehet teljes transzparens is, amint az a kép formátumokról szóló részben le van írva. Ha az X szerver nem támogatja az XShape kiterjesztést, a transzparensként megjelölt részek feketék lesznek. Ha használni akarod ezt a tulajdonságot, a fő ablak háttérképének 8-cal oszthatónak kell lennie.
Az alablak az, ahol a film megjelenik. Egy megadott képet tud megjeleníteni, ha nincs film betöltve (elég unalmas egy üres ablak :-)) Megjegyzés: a transzparens kép nem megengedett itt.
A skin menü csak az MPlayer vezérlésének egy módja menüpontok segítségével. Két kép kell a menühöz: az egyik a legjobb kép, ami a menüt mutatja normál állapotában, a másik a kiválasztott pont megjelenítésére lesz felhasználva. Ha kinyitod a menüt, az első kép látszódik. Ha az egeret az egyik menüpont fölé viszed, az aktuálisan kiválasztott pont bemásolódik a második képről az egér mutató alatti területre (a második képet soha sem lehet látni egészében).
Egy menüpontot a képen lévő poziciója és a mérete határoz meg (lásd a skin menü részt).
Van egy fontos dolog, amiről eddig nem beszéltünk: a gombokhoz, potméterekhez és menüpontokhoz tartozóan az MPlayer tudnia kell, hogy mit csináljon, ha rákattintanak. Ez üzenetekkel (eseményekkel) van megvalósítva. Minden elemhez meg kell adnod, hogy milyen üzenetet generál, amikor kattintanak rá.
A képeknek truecolor-os (24 vagy 32 bpp) PNG-knek kell lenniük.
A fő ablakban és a playbar-on (lásd lejjebb) használhatsz transzparens képeket: Az #FF00FF (bíborvörös) színnel feltöltött területek teljesen transzparensek lesznek, ha az MPlayer-rel nézed. Ez azt jelenti, hogy formázott ablakjaid is lehetnek, ha az X szerverednek van XShape kiterjesztése.
A következő fájlokra lesz szükséges, hogy el tudj készíteni egy skin-t:
A konfigurációs fájl, aminek skin a neve, megmondja az MPlayernek, hogyan rakja össze a skin különböző részeit és hogy mit tegyen ha valahol kattintanak az ablakban.
A fő ablak háttérképe.
A fő ablakban lévő elemek képe (beleértve egy vagy több betű leíró fájlt, ami a címkék megrajzolásához kell).
Az alablakban megjelenítendő kép (opcionális).
Két kép a skin menünek (csak akkor szükséges, ha menüt akarsz csinálni).
A skin konfigurációs fájl kivételével a többi fájlt úgy nevezed el, ahogy csak akarod (de jegyezd meg, hogy a betű leíró fájlnak .fnt kiterjesztéssel kell rendelkeznie).
Amint fentebb már említettem, ez a skin konfigurációs fájl. Sor-orientált;
a megjegyzést tartalmazó sorok egy ';
' karakterrel kezdődnek
(csak szóközök és tab-ok lehetnek a ';
' előtt).
A fájl szekciókból áll. Minden szekció a skin egy alkalmazását írja le a következő formában:
section = szekció neve
.
.
.
end
Jelenleg csak egy alkalmazás van, vagyis csak egy szekciót kell készítened: a neve movieplayer.
Ebben a szekcióban minden ablakot egy blokk ír le a következő formában:
window = ablak neve
.
.
.
end
Ahol az ablak neve
ezen karakterláncok valamelyike lehet:
main - a főablak esetében
sub - az alablak esetében
menu - a skin menü esetében
playbar - a playbar esetében
(Az alablak és menü blokkok opcionálisak - nem kötelező menüt készítened vagy kidekorálni az alablakot.)
Egy ablak blokkon belül az ablak minden elemét definiálhatod, egyet egy sorban, ebbe a formában:
item = parameter
Ahol az item
egy karakterlánc, ami azonosítja az adott
típusú GUI elemet, a parameter
pedig egy numerikus vagy
szöveges érték (vagy értékek listája vesszővel elválasztva).
A fentieket összerakva a teljes fájl valahogy így néz ki:
section = movieplayer window = main ; ... főablak elemei ... end window = sub ; ... alablak elemei ... end window = menu ; ... menü elemei ... end window = playbar ; ... playbar elemei ... end end
Egy kép fájl nevét a hozzá vezető útvonal nélkül kell megadni - a képeknek
a skins könyvtárban kell lenniük.
A fájl kiterjesztését megadhatod (de nem kötelező). Ha a fájl nem létezik,
az MPlayer megpróbálja betölteni a
<filename>.<ext> fájlt, ahol png
és PNG
kerül az <ext> helyére
(ebben a sorrendben). Az első megtalált fájlt fogja használni.
Egy példa a tisztánlátáshoz. Tegyük fel, hogy van egy main.png nevű fájlod, amit a fő ablakhoz használsz:
base = main, -1, -1
Az MPlayer megpróbálja betölteni a main, main.png, main.PNG fájlokat.
Végül pár szó a pozícionálásról. A fő ablak és az alablak a képernyő különböző
sarkaiba helyezhető az X
és Y
koordináták
megadásával. A 0
fent vagy bal oldalt van, a
-1
középen és a -2
jobb oldalt vagy lent,
ahogy az itt is látható:
(0, 0)----(-1, 0)----(-2, 0) | | | | | | (0,-1)----(-1,-1)----(-2,-1) | | | | | | (0,-2)----(-1,-2)----(-2,-2)
A következő bejegyzések használhatóak a
'window = main
' ... 'end
',
és a 'window = playbar
' ... 'end
'
blokkokban.
decoration = enable|disable
Engedélyezi vagy letiltja a főablakban az ablakkezelő dekorációját. Alapértelmezetten disable.
Ez nem működik a megjelenítő ablakban, nincs rá szükség.
base = image, X, Y
Megadhatod vele a fő ablakban használt háttérképet.
Az ablak a megadott X, Y
pozícióban fog megjelenni
a képernyőn. Az ablak mérete a kép méretével lesz azonos.
Ezek a koordináták jelenleg nem működnek a megjelenítő ablak esetében.
A kép transzparens részei (#FF00FF színű) feketeként jelenik meg az XShape kiterjesztés nélküli X szerverek esetében. A kép szélességének 8-cal oszthatónak kell lennie.
button = image, X, Y, width, height, message
Egy width
* height
méretű gomb
megjelenítése az X, Y
pozícióban. A megadott
message
üzenet akkor generálódik, amikor a gombot
megnyomják. Az image
által megadott képnek három
részt kell tartalmaznia egymás alatt (a gomb állapotainak megfelelően), így:
+-------------+ | benyomott | +-------------+ | felengedett | +-------------+ | letiltott | +-------------+
hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
Egy vízszintes (hpotmeter) vagy függőleges (vpotmeter) potméter megjelenítése
width
* height
méretben az
X, Y
pozícióban. A kép több különböző részre osztható a
potméter különböző fázisainak megfelelően (például lehet egy pot-od a hangerő
szabályozásához, ami zöldből pirosba vált, ahogy az értéke változik a minimumtól
a maximumig). A hpotmeter
-nek lehet egy gombja is, amit
vízszintesen lehet húzni. A paraméterek:
button
- a gombként használt kép
(három részt kell tartalmaznia egymás alatt, mint a
gomb esetében)
bwidth
, bheight
- a gomb
mérete
phases
- a hpotmeter különböző fázisaiban
használt kép neve. Speciális értékként a NULL
is
használható, ha nem akarsz ilyen képet. A képet függőlegesen
numphases
részre kell felosztani így:
+------------+ | 1. fázis | +------------+ | 2. fázis | +------------+ ... +------------+ | n. fázis | +------------+
numphases
- a phases
képen
lévő fázisok száma
default
- a hpotmeter alapértelmezett értéke
(0
és 100
között)
X
, Y
- a hpotmeter pozíciója
width
, height
- a
hpotmeter
szélessége és magassága
message
- az üzenet, ami a
hpotmeter
értékének megváltozásakor generálódik
font = fontfile, fontid
Egy betűt definiál. A fontfile
a betű leíró fájl neve egy
.fnt kiterjesztéssel (a kiterjesztést ne add meg itt).
A fontid
-t a betűre történő hivatkozásokhoz lehet használni
(lásd dlabel és
slabel). 25 betűt lehet definiálni.
slabel = X, Y, fontid, "text"
Egy statikus címkét tesz ki az X, Y
pozícióba. A
text
szöveget jeleníti meg a fontid
-vel
azonosított betűtípussal. A szöveg egyszerű karakterlánc (az $x
változók nem működnek) amit dupla idézőjelek közé kell írni (de a " karakter
nem lehet a szöveg része). A címke a fontid
-vel
azonosított betűtípussal jelenik meg.
dlabel = X, Y, width, align, fontid, "text"
Egy dinamikus címkét tesz ki az X, Y
pozícióba. A
címke azért dinamikus, mert a szövege periódikusan frissül. A címke
maximum hosszát a width
szabályozza (a magassága
egy karakter magasságával egyezik meg). Ha a megjelenítendő szöveg
szélesebb ennél, scrollozva lesz,
különben az align
paraméter által megadott módon
pozícionálódik: 0
balra, 1
középre, 2
jobbra igazítva.
A megjelenítendő szöveget a text
adja meg: dupla
idézőjelek közé kell írni (de a " karakter nem lehet része a
szövegnek). A címke a fontid
által meghatározott
betűtípussal jelenik meg. A szövegben a következő változókat használhatod:
Változó | Jelentés |
---|---|
$1 | lejátszási idő hh:mm:ss formátumban |
$2 | lejátszási idő mmmm:ss formátumban |
$3 | lejátszási idő hh formátumban (órák) |
$4 | lejátszási idő mm formátumban (percek) |
$5 | lejátszási idő ss formátumban (másodpercek) |
$6 | film hossza hh:mm:ss formátumban |
$7 | film hossza mmmm:ss formátumban |
$8 | film hossza h:mm:ss formátumban |
$v | hangerő xxx.xx% formátumban |
$V | hangerő xxx.x formátumban |
$U | hangerő xxx formátumban |
$b | balansz xxx.xx% formátumban |
$B | balansz xxx.x formátumban |
$D | balansz xxx formátumban |
$$ | az $ karakter |
$a | egy karakter az audió típusnak megfelelően (nincs: n ,
mono: m , sztereo: t ) |
$t | sáv száma (a lejátszási listában) |
$o | fájlnév |
$f | fájlnév kisbetűsen |
$F | fájlnév nagybetűsen |
$T |
egy karakter a folyam típusnak megfelelően (file: f ,
Video CD: v , DVD: d ,
URL: u )
|
$p | a p karakter (ha a film lejátszás alatt van és a betűtípusban van p karakter) |
$s | az s karakter (ha a film meg van állítva movie és a betűtípusban van s karakter) |
$e | az e karakter (ha a lejátszás szünetel és a betűtípusban van e karakter) |
$x | film szélessége |
$y | film magassága |
$C | használt codec neve |
Az $a, $T, $p, $s
és $e
változók mind karakterekkel térnek vissza, amiket speciális szimbólumként kell
megjeleníteni (például az e a pillanatállj szimbóluma, ami
általában valami ilyesmi: ||). Szükséged lesz egy normál karaktereket
tartalmazó betűtípusra és egy másikra a szimbólumokhoz. Lásd a
szimbólumokról szóló részt a
további információkért.
A következő bejegyzések használhatóak a
'window = sub
' . . . 'end
' blokkban.
base = image, X, Y, width, height
Az ablakban megjelenítendő kép. Az ablak a megadott X, Y
pozícióban jelenik meg a képernyőn (0,0
a bal felső
sarok). A -1
a középre, a -2
a jobbra (X
) és le (Y
) igazítást
jelenti. Az ablak akkora lesz, amekkora a kép. A width
és a height
az ablak méretét írják elő, opcionálisak
(ha hiányoznak, az ablak ugyan akkora méretű lesz, mint a kép).
background = R, G, B
Beállíthatod vele a háttér színét. Hasznos, ha a kép kisebb, mint az
ablak mérete. Az R
, G
és
B
a szín vörös, zöld és kék komponensét adja meg
(mindegyik decimális szám 0-tól 255-ig).
Amint korábban már említettem, a menü két kép segítségével kerül megjelenítésre.
A normál menü bejegyzések a base
elemmel megadott képen
láthatóak, míg az épp aktuálisan kiválasztott elem megjelenítése a
selected
elemről történik. Meg kell adnod minden egyes
menüpont pozícióját és méretét.
A következő bejegyzések használhatóak a
'window = menu
'. . .'end
' blokkban.
Amint azt már a skin elemeiről szóló részben is említettem, egy betűtípust egy kép és egy leíró fájl alkot. A karaktereket bárhová teheted a képen, de győződj meg róla, hogy a pozíciójuk és a méretük pontosan meg van adva a leíró fájlban.
A betű leíró fájl (az .fnt kiterjesztéssel) tartalmazhat
megjegyzéseket, melyek ';
'-vel kezdődő sorokban kapnak helyet.
A fájlban kell, hogy szerepeljenek az alábbi sorok:
image = image
Ahol az
a betűhöz használt
kép fájl neve (nem kell megadnod a kiterjesztést).
image
"char" = X, Y, width, height
Itt az X
és az Y
a
char
karakter pozícióját adja meg a képen (0,0
a bal felső sarok). A width
és a height
a karakter méretei pixelben.
Ez a példa az A, B, C karaktereket definiálja a font.png felhasználásával.
; Lehet "font" is a "font.png" helyett. image = font.png ; Három karakter elég a bemutatáshoz :-) "A" = 0,0, 7,13 "B" = 7,0, 7,13 "C" = 14,0, 7,13
Néhány karakternek speciális jelentése van, ha dlabel-ben
használva valamelyik változó tér vissza vele. Ezeket a karaktereket
szimbólumokként kell megjeleníteni, így például egy szép DVD logó jelenhet
meg a 'd
' karakter helyett egy DVD folyam esetén.
Az alábbi táblázat a szimbólumként megjeleníthető (és így külön betűtípust igénylő) karaktereket tartalmazza.
Karakter | Szimbólum |
---|---|
p | lejátszás |
s | stop |
e | pillanatállj |
n | nincs hang |
m | mono hang |
t | sztereó hang |
f | a folyam egy fájl |
v | a folyam egy Video CD |
d | a folyam egy DVD |
u | a folyam egy URL |
Az alábbi üzeneteket generálják a gombok, potméterek és menüpontok.
Üres üzenet, nincs hatása (kivéve talán a Subversion verziót :-)).
Lejátszás vezérlése:
Lejátszás elindítása.
Lejátszás megállítása.
Az előző sávra ugrik a lejátszási listában.
ugrás a következő sávra a lejátszási listában.
Fájl betöltése (a fájl böngésző ablak megnyitásával, ahol kiválaszthatod a fájlt).
Ugyan azt csinálja, mint az evLoad
, de automatikusan elkezdi
lejátszani a fájlt, miután betöltötte.
Audió fájl betöltése (a fájl választóval)
Felirat fájl betöltése (a fájl választóval)
Aktuálisan használt felirat letiltása.
Lejátszási lista ablak megnyitása/becsukása.
Megpróbálja megnyitni az adott CD-ROM meghajtóban lévő lemezt.
Megpróbálja megnyitni az adott DVD-ROM meghajtóban lévő lemezt.
Megjeleníti az URL dialógus ablakot.
Az evPauseSwitchToPlay
ellentéte. Ez az üzenet elkezdi a
lejátszást és megjelenteti az evPauseSwitchToPlay
gomb
képét (jelezve ezzel, hogy a gombot meg lehet nyomni a lejátszás megállításához).
Párt alkot az evPlaySwitchToPause
-val. Egy általános
lejátszás/szünet gomb készítéséhez használhatóak fel. Mind a két üzenetet
egy olyan gombhoz kell hozzárendelni, ami teljesen ugyan ott jelenik meg az
ablakban. Ez az üzenet megállítja a lejátszást és megjelenteti az
evPlaySwitchToPause
gombhoz tartozó képet (jelezve
ezzel, hogy a gombot meg lehet nyomni a lejátszás folytatásához).
Seeking:
Visszalépés 10 másodperccel.
Visszalépés 1 perccel.
Visszalépés 10 perccel.
Előrelépés 10 másodperccel.
Előrelépés 1 perccel.
Előrelépés 10 perccel.
Ugrás a pozícióhoz (potméter tudja használni; a potméter relatív értékét (0-100%) használja).
Videó vezérlés:
Film ablak méretének felezése.
Film ablak méretének duplázása.
Teljes képernyős mód be-/kikapcsolása.
Film ablak normál méretének beállítása.
Audió vezérlés:
Hangerő csökkentése.
Hangerő növelése.
Hangerő beállítása (potméter tudja használni; a potméter relatív értékét (0-100%) használja).
Hang ki-/bekapcsolása.
Balansz beállítása (potméter tudja használni; a potméter relatív értékét (0-100%) használja).
Equalizer be-/kikapcsolása.
Vegyes:
Programinformációs ablak megnyitása.
Megnyitja a beállítások ablakot.
Megnyitja a skin böngésző ablakot.
Ablak összecsukása kis méretűvé.
Kilépés a programból.
Tehát végigolvastad az MPlayer GUI-jához történő skin készítés leírását, megtettél minden tőled telhetőt a Gimppel és el szeretnéd küldeni nekünk a skin-ed? Olvass még egy kicsit tovább, hogy elkerüld a gyakori hibákat és minőségi skin-t tudj készíteni.
Szeretnénk, ha a skin-ek, amit beveszünk a listánkba, megfelelnének bizonyos minőségi elvárásoknak. Ezen kívül van még pár dolog, amivel a mi életünket könnyítheted meg.
Példaként nézd meg a a Blue
skin-t,
az teljesíti az összes lent felsorolt kritériumot az 1.5-ös verzió óta.
Minden skin-nek tartalmaznia kell egy README fájlt, ami tartalmazza az információkat rólad, a szerzőről, a szerzői jogi és licensz figyelmeztetéseket és bármi mást, amit még bele akarsz írni. Ha szeretnél changelog-ot, ez a fájl jó hely neki.
Kell lennie egy VERSION fájlnak, melyben semmi más nincs, csak a skin verziószáma egyetlen egy sorban (pl. 1.0).
A vízszintes és függőleges irányítókon (csúszkák a hangerőnek és a pozíciónak) a gombjuk középpontjának pontosan középen kell lennie, a csúszka felénél. A gombot mindkét irányban ki kell tudni húzni a csúszka végéig, de azon túl nem.
A skin elemeit megfelelő méretűnek kell deklarálni a skin fájlban. Ha nem így van, akkor kattintani tudsz pl. a gombon kívül és mégis megnyomod vagy egy területen belül kattintasz és nem lesz hatása.
A skin fájlnak jól formázottnak kell lennie és nem tartalmazhat tab-okat. A jól formázottság azt jelenti, hogy a számoknak szépen oszlopokban kell lenniük.