MPlayer - The Movie Player

http://www.mplayerhq.hu

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.


Hogyan olvasd ezt a dokumentációt
1. Bevezetés
2. Telepítés
2.1. Szoftver követelmények
2.2. Jellemzők
2.3. Mi a helyzet a GUI-val?
2.4. Betűtípusok és OSD
2.4.1. TrueType betűk
2.4.2. bittérképes betűk
2.4.3. OSD menü
2.5. Codec telepítés
2.5.1. Xvid
2.5.2. x264
2.5.3. AMR
2.5.4. XMMS
2.6. RTC
3. Használat
3.1. Parancssor
3.2. Feliratok és OSD
3.3. Vezérlés
3.3.1. Vezérlés beállítása
3.3.2. Irányítás LIRC-ből
3.3.3. Szolga mód
3.4. Hálózati és pipe-os stream-elés
3.4.1. Stream-elt tartalom lementése
3.5. DVD lejátszás
3.5.1. Régió kód
3.6. VCD lejátszás
3.7. Edit Decision Lists (EDL)
3.7.1. EDL fájl használata
3.7.2. EDL fájl készítése
3.8. Szinkronizált lejátszás hálózaton
3.9. Térhatású/többcsatornás lejátszás
3.9.1. DVD-k
3.9.2. Sztereó fájlok lejátszása négy hangszórón
3.9.3. AC-3/DTS áteresztés
3.9.4. MPEG audió áteresztés
3.9.5. Mátrix-kódolású audió
3.9.6. Térhatás emulálása fülhallgatóval
3.9.7. Hibajavítás
3.10. Csatorna többszörözés
3.10.1. Általános információk
3.10.2. Mono lejátszása két hangszóróval
3.10.3. Csatorna másolás/mozgatás
3.10.4. Csatorna keverés
3.11. Szoftveres hangerő állítás
4. TV bemenet
4.1. Használati tippek
4.2. Példák
5. Teletext
5.1. Megjegyzések az implementációhoz
5.2. A teletext használata
5.3. Rádió
5.3.1. Használati tippek
5.3.2. Példák
6. Videó kimeneti eszközök
6.1. Xv
6.2. DGA
6.3. SVGAlib
6.4. Framebuffer kimenet (FBdev)
6.5. Matrox framebuffer (mga_vid)
6.6. 3Dfx YUV támogatás
6.7. tdfx_vid
6.8. OpenGL kimenet
6.9. AAlib – szöveges módú megjelenítés
6.10. libcaca - Színes ASCII Art függvénykönyvtár
6.11. VESA - kimenet a VESA BIOS-hoz
6.12. X11
6.13. VIDIX
6.13.1. svgalib_helper
6.13.2. ATI kártyák
6.13.3. Matrox kártyák
6.13.4. Trident kártyák
6.13.5. 3DLabs kártyák
6.13.6. nVidia kártya
6.13.7. SiS kártyák
6.14. DirectFB
6.15. DirectFB/Matrox (dfbmga)
6.16. MPEG dekóderek
6.16.1. DVB kimenet és bemenet
6.16.2. DXR2
6.16.3. DXR3/Hollywood+
6.17. Zr
6.18. Blinkenlights
6.19. TV-kimenet támogatás
6.19.1. Matrox G400 kártyák
6.19.2. Matrox G450/G550 kártyák
6.19.3. Matrox TV-kimeneti kábel készítése
6.19.4. ATI kártyák
6.19.5. nVidia
6.19.6. NeoMagic
7. Portok
7.1. Linux
7.1.1. Debian csomagolás
7.1.2. RedHat csomagolás
7.1.3. ARM Linux
7.2. *BSD
7.2.1. FreeBSD
7.2.2. OpenBSD
7.2.3. Darwin
7.3. Kereskedelmi Unix
7.3.1. Solaris
7.3.2. HP-UX
7.3.3. AIX
7.3.4. QNX
7.4. Windows
7.4.1. Cygwin
7.4.2. MinGW
7.5. Mac OS
7.5.1. MPlayer OS X GUI
8. A MEncoder használatának alapjai
8.1. Codec és konténer formátum kiválasztása
8.2. Bemeneti fájl vagy eszköz kiválasztása
8.3. Két menetes MPEG-4 ("DivX") kódolás
8.4. Kódolás Sony PSP videó formátumba
8.5. Kódolás MPEG formátumba
8.6. Filmek átméretezése
8.7. Stream másolás
8.8. Kódolás több bemeneti képfájlból (JPEG, PNG, TGA, stb.)
8.9. DVD felirat elmentése VOBsub fájlba
8.10. Képarány megtartása
9. Kódolás a MEncoderrel
9.1. Nagyon jó minőségű MPEG-4 ("DivX") rip készítése DVD filmből
9.1.1. Felkészülés a kódolásra: A forrás anyag és frameráta azonosítása
9.1.1.1. A forrás framerátájának azonosítása
9.1.1.2. A forrásanyag beazonosítása
9.1.2. Konstans kvantálás vs. többmenetes kódolás
9.1.3. Megszorítások a hatékony kódoláshoz
9.1.4. Vágás és méretezés
9.1.5. Felbontás és bitráta kiválasztása
9.1.5.1. Felbontás kiszámítása
9.1.6. Szűrés
9.1.7. Interlacing és Telecine
9.1.8. Átlapolt videó elkódolása
9.1.9. Megjegyzések az Audió/Videó szinkronizáláshoz
9.1.10. A videó codec kiválasztása
9.1.11. Audió
9.1.12. Keverés
9.1.12.1. A keverés és az A/V szinkron megbízhatóságának növelése
9.1.12.2. Az AVI konténer korlátai
9.1.12.3. Keverés a Matroska konténerbe
9.2. Mit kezdjünk a telecine-nel és az átlapolással NTSC DVD-ken
9.2.1. Bevezetés
9.2.2. Hogyan állapítható meg egy videó típusa
9.2.2.1. Progresszív
9.2.2.2. Telecine-lt
9.2.2.3. Átlapolt
9.2.2.4. Kevert progresszív és telecine
9.2.2.5. Kevert progresszív és átlapolt
9.2.3. Hogyan lehet elkódolni ezen kategóriákat
9.2.3.1. Progresszív
9.2.3.2. Telecine-lt
9.2.3.3. Átlapolt
9.2.3.4. Kevert progresszív és telecine
9.2.3.5. Kevert progresszív és átlapolt
9.2.4. Lábjegyzet
9.3. Kódolás a libavcodec codec családdal
9.3.1. A libavcodec videó codec-jei
9.3.2. A libavcodec audió codec-jei
9.3.2.1. PCM/ADPCM formátum kiegészítő táblázat
9.3.3. A libavcodec kódolási opciói
9.3.4. Kódolás beállítási példák
9.3.5. Egyedi inter/intra matricák
9.3.6. Példa
9.4. Kódolás az Xvid codec-kal
9.4.1. Milyen opciókat kell használnom, ha a legjobb eredményt akarom?
9.4.2. Az Xvid kódolási opciói
9.4.3. Kódolási profilok
9.4.4. Kódolás beállítási példák
9.5. Kódolás az x264 codec-kel
9.5.1. Az x264 kódolási opciói
9.5.1.1. Bevezetés
9.5.1.2. Elsősorban a sebességet és a minőséget érintő opciók
9.5.1.3. Különböző igényekhez tartozó opciók
9.5.2. Kódolás beállítási példák
9.6. Kódolás a Video For Windows codec családdal
9.6.1. Video for Windows által támogatott codec-ek
9.6.2. A vfw2menc használata a codec beállításokat tartalmazó fájl elkészítéséhez.
9.7. QuickTime-kompatibilis fájlok készítése a MEncoder használatával
9.7.1. Miért akarna bárki is QuickTime-kompatibilis fájlokat készíteni?
9.7.2. QuickTime 7 korlátok
9.7.3. Vágás
9.7.4. Méretezés
9.7.5. A/V szinkron
9.7.6. Bitráta
9.7.7. Kódolási példa
9.7.8. Újrakeverés MP4-ként
9.7.9. Metadata tag-ek hozzáadása
9.8. A MEncoder használata VCD/SVCD/DVD-kompatibilis fájlok készítéséhez.
9.8.1. Formátum korlátok
9.8.1.1. Formátum korlátok
9.8.1.2. GOP méret határok
9.8.1.3. Bitráta korlátok
9.8.2. Kimeneti opciók
9.8.2.1. Képarány
9.8.2.2. A/V szinkron megtartása
9.8.2.3. Mintavételi ráta konvertálás
9.8.3. A libavcodec használata VCD/SVCD/DVD kódoláshoz
9.8.3.1. Bevezetés
9.8.3.2. lavcopts
9.8.3.3. Példák
9.8.3.4. Haladó opciók
9.8.4. Audió kódolása
9.8.4.1. toolame
9.8.4.2. twolame
9.8.4.3. libavcodec
9.8.5. Mindent összevetve
9.8.5.1. PAL DVD
9.8.5.2. NTSC DVD
9.8.5.3. AC-3 Audiót tartalmazó PAL AVI DVD-re
9.8.5.4. AC-3 Audiót tartalmazó NTSC AVI DVD-re
9.8.5.5. PAL SVCD
9.8.5.6. NTSC SVCD
9.8.5.7. PAL VCD
9.8.5.8. NTSC VCD
10. Gyakran ismételt kérdések
A. Hogyan jelentsd a hibákat
A.1. Biztonsági hibák jelentése
A.2. Hogyan javíts hibákat
A.3. Hogyan tesztelj a Subversion segítségével
A.4. Hogyan jelentsd a hibákat
A.5. Hol kell jelezni a hibákat
A.6. Mit jelents
A.6.1. Rendszer információk
A.6.2. Hardver és vezérlők
A.6.3. Konfigurációs problémák
A.6.4. Fordítási problémák
A.6.5. Lejátszási problémák
A.6.6. Összeomlások
A.6.6.1. Hogyan tárolhatóak a reprodukálható összeomlás információi
A.6.6.2. Hogyan szedd ki a hasznos információkat a core dump-ból
A.7. Tudom hogy mit csinálok...
B. MPlayer skin formátum
B.1. Áttekintés
B.1.1. Skin komponensek
B.1.2. Képformátumok
B.1.3. Fájlok
B.2. A skin fájl
B.2.1. Fő ablak és a playbar
B.2.2. Alablak
B.2.3. Skin menü
B.3. Betűk
B.3.1. Szimbólumok
B.4. GUI üzenetek
B.5. Minőségi skin-ek készítése

Hogyan olvasd ezt a dokumentációt

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.

1. fejezet - Bevezetés

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ó

    Fontos

    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ő.

2. fejezet - Telepítés

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.

2.1. Szoftver követelmények

  • 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

2.2. Jellemzők

  • 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.

2.3. Mi a helyzet a GUI-val?

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.

2.4. Betűtípusok és OSD

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.

2.4.1. TrueType betűk

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.

2.4.2. bittérképes betűk

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.

2.4.3. OSD menü

Az MPlayernek az OSD Menüje teljesen igényre szabható.

Megjegyzés

a Tulajdonságok menü még NINCS KIFEJLESZTVE!

Telepítés

  1. fordítsd le az MPlayert a ./configure-nak az --enable-menu kapcsoló megadásával

  2. bizonyosodj meg róla, hogy van telepített OSD betűkészleted

  3. másold át az etc/menu.conf fájlt a .mplayer könyvtárba

  4. 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)

  5. 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).

  6. indítsd el az MPlayert az alábbi példa alapján:

    mplayer -menu file.avi

  7. nyomd meg valamelyik menü gombot, amit megadtál

2.5. Codec telepítés

2.5.1. Xvid

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:

  1. cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login

  2. cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore

  3. cd xvidcore/build/generic

  4. ./bootstrap.sh && ./configure

    Meg kell adnod pár kapcsolót (tanulmányozd a ./configure --help kimenetét).

  5. make && make install

  6. Fordítsd újra az MPlayert.

2.5.2. x264

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.

2.5.3. AMR

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.

2.5.4. XMMS

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.

2.6. RTC

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.

3. fejezet - Használat

3.1. Parancssor

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 ffmpeg movie1.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

3.2. Feliratok és OSD

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

  • JACOsub

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:

-subdelay 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á.

-subfps RÁTA

Megadhatod a felirat fájl képkocka/mp rátáját (lebegőpontos szám).

-subpos 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 -fps subtitles_fps -subfps avi_fps \
    -sub subtitle_filename dummy.avi

A DVD feliratokról a DVD fejezetben olvashatsz bővebben.

3.3. Vezérlés

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.

3.3.1. Vezérlés beállítása

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

3.3.2. Irányítás LIRC-ből

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.

3.3.3. Szolga mód

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.

3.4. Hálózati és pipe-os stream-elés

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 -

Megjegyzés

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 -

3.4.1. Stream-elt tartalom lementése

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:

mplayer http://217.71.208.37:8006 -dumpstream -dumpfile stream.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.

3.5. DVD lejátszás

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.

Megjegyzés

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.

3.5.1. Régió kód

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.

3.6. VCD lejátszás

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.

Megjegyzés

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.

3.7. Edit Decision Lists (EDL)

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).

3.7.1. EDL fájl használata

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.

3.7.2. EDL fájl készítése

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.

3.8. Szinkronizált lejátszás hálózaton

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.

3.9. Térhatású/többcsatornás lejátszás

3.9.1. DVD-k

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ő.

3.9.2. Sztereó fájlok lejátszása négy hangszórón

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.

3.9.3. AC-3/DTS áteresztés

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.

3.9.4. MPEG audió áteresztés

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 

3.9.5. Mátrix-kódolású audió

***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:

3.9.6. Térhatás emulálása fülhallgatóval

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

3.9.7. Hibajavítás

Ha nem hallasz semmilyen hangot a térhatású csatornáidból, ellenőrizd a mixer beállításait egy mixer programmal, mint pl. az alsamixer; az audió kimenetek gyakran le vannak némítva és nulla hangerőre vannak állítva alapértelmezésben.

3.10. Csatorna többszörözés

3.10.1. Általános információk

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

  1. középső

sztereó

  1. bal

  2. jobb

kvadrafónikus

  1. bal első

  2. jobb első

  3. bal hátsó

  4. jobb hátsó

surround 4.0

  1. bal első

  2. jobb első

  3. közép hátsó

  4. közép első

surround 5.0

  1. bal első

  2. jobb első

  3. bal hátsó

  4. jobb hátsó

  5. közép első

surround 5.1

  1. bal első

  2. jobb első

  3. bal hátsó

  4. jobb hátsó

  5. közép első

  6. 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.

3.10.2. Mono lejátszása két hangszóróval

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

3.10.3. Csatorna másolás/mozgatás

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.

  1. Döntsd el, hány kimeneti csatornára van szükséged. Ez az első alopció.

  2. 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

  3. Í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.

Példa: egy csatorna két hangszóróra

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:

  1. Ahhoz, hogy egy-egy kimeneti csatorna legyen mindkét hangszóróhoz, az első alopciónak "2"-nek kell lennie.

  2. 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".

  3. 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.

Példa: bal csatorna két hangszóróra rövidítve

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.

Példa: az elülső csatornák duplázása hátra

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.

  1. Négy kimeneti csatorna kell. Az első alopció "4".

  2. 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".

  3. 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

3.10.4. Csatorna keverés

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.

  1. 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.

  2. 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.

  3. 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.

Példa: egy csatorna két hangszóróra

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:

  1. A pannek két kimeneti csatornája lesz, így az első alopció "2".

  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.

Példa: bal csatorna két hangszóróra rövidítve

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.

Példa: 6 csatornás PCM lekeverése

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:

  1. A kimeneti csatornák száma 2, így az első alopció "2".

  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!

Példa: 5.1-es audió lejátszása nagy hangszórókon, mélynyomó nélkül

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:

  1. Mivel a pan-nak mind a hat csatornával kell foglalkoznia, add meg a -channels 6 kapcsolót, hogy a liba52 dekódolja őket.

  2. A pan csak öt csatornára küld kimenetet, az első alopció 5.

  3. 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

3.11. Szoftveres hangerő állítás

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.

4. fejezet - TV bemenet

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.

4.1. Használati tippek

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.

4.2. Példák

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.

5. fejezet - Teletext

A teletext jelenleg csak a v4l és v4l2 vezérlőkkel használható az MPlayerben.

5.1. Megjegyzések az implementációhoz

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.

5.2. A teletext használata

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

5.3. Rádió

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.

5.3.1. Használati tippek

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).

5.3.2. Példák

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

Megjegyzés

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.

6. fejezet - Videó kimeneti eszközök

6.1. Xv

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:

  1. XFree86 4.0.2 vagy újabbat kell használnod (korábbi verziókban nincs XVideo)

  2. A kártyádnak támogatnia kell a hardveres gyorsítást (a modern kártyák tudják)

  3. 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.

    Megjegyzés

    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!

  4. 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.

  5. É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

6.2. DGA

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 rootké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.

Biztonsági kockázat

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).

6.3. SVGAlib

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.

Megjegyzés

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

Megjegyzés

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.

6.4. Framebuffer kimenet (FBdev)

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:

-fb

megadhatod a használni kívánt framebuffer eszközt (alapértelmezett: /dev/fb0)

-fbmode

használni kívánt mód neve (a /etc/fb.modes fájlnak megfelelően)

-fbmodeconfig

módokat tartalmazó konfigurációs fájl (alapértelmezett: /etc/fb.modes)

-monitor-hfreq, -monitor-vfreq, -monitor-dotclock

fontos értékek, lásd example.conf

Ha egy különleges módra akarsz váltani, akkor így használd:

mplayer -vm -fbmode mod_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

Megjegyzés

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.

6.5. Matrox framebuffer (mga_vid)

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:

  1. A használatához először le kell fordítanod a drivers/mga_vid.o fájt:

    make drivers

  2. 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

  3. 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

  4. 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

  5. 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.

6.6. 3Dfx YUV támogatás

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.

6.7. tdfx_vid

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:

  1. Fordítsd le a drivers/tdfx_vid.o fájlt:

    make drivers

  2. 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

  3. 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.

6.8. OpenGL kimenet

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

6.9. AAlib – szöveges módú megjelenítés

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:

GombMű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:

-aaosdcolor=V

OSD színének megváltoztatása

-aasubcolor=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:

-aadriver

Beállítja a javasolt aa vezérlőt (X11, curses, Linux).

-aaextended

Mind a 256 karakter használata.

-aaeight

Nyolc bites ASCII.

-aahelp

Kiírja az összes aalib kapcsolót.

Megjegyzés

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.

6.10. libcaca - Színes ASCII Art függvénykönyvtár

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:

GombMű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:

CACA_DRIVER

Állítsd be a javasolt caca vezérlőt, pl. ncurses, slang, x11.

CACA_GEOMETRY (csak X11)

Megadja a sorok és oszlopok számát, pl. 128x50.

CACA_FONT (csak X11)

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.

6.11. VESA - kimenet a VESA BIOS-hoz

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

-vo vesa: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.

6.12. X11

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.

6.13. VIDIX

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.

6.13.1. svgalib_helper

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:

  1. Töltsd le az svgalib (pl. 1.9.x-es) fejlesztői verzióját.

  2. 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.

  3. 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.

  4. 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.

  5. Forgass újra.

6.13.2. ATI kártyák

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.

6.13.3. Matrox kártyák

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.

6.13.4. Trident kártyák

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.

6.13.5. 3DLabs kártyák

Habár van vezérlő a 3DLabs GLINT R3 és Permedia3 chip-ekhez, senki sem tesztelte le, így örömmel fogadjuk a jelentéseket.

6.13.6. nVidia kártya

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

6.13.7. SiS kártyák

Ez nagyon kísérleti kód, csakúgy mint az nvidia_vid.

Tesztelték SiS 650/651/740-en (a leggyakrabban használt SiS chipset verziók a "Shuttle XPC" dobozokban).

Várjuk a visszajelzéseket!

6.14. DirectFB

"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)

6.15. DirectFB/Matrox (dfbmga)

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.

Megjegyzés

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.

6.16. MPEG dekóderek

6.16.1. DVB kimenet és bemenet

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 mpegpes yourfile.ext
mplayer -ao mpegpes -vo mpegpes -vf expand yourfile.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 -dumpfile r1.ts -dumpstream dvb://R1

Ha inkább másik formátumban akarsz rögzíteni (újrakódolni), kiadhatsz egy ehhez hasonló parancsot:

mencoder -o r1.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.

6.16.2. DXR2

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

-vo dxr2

TV kimenet engedélyezése.

-vo dxr2:x11 vagy -vo dxr2:xv

Átlapolásos kimenet bekapcsolása X11-en.

-dxr2 <opció1:opció2:...>

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.

6.16.3. DXR3/Hollywood+

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

-vo dxr3:prebuf:sync:norm=x: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.

-ao oss:/dev/em8300_ma-X

Audió kimenethez, ahol az X az eszköz száma (0 ha egy kártya).

-af resample=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).

-vf lavc

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.

-vf expand=-1:-1:-1:-1:1

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).

-ac hwac3

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.

6.17. Zr

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.

6.18. Blinkenlights

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.

6.19. TV-kimenet támogatás

6.19.1. Matrox G400 kártyák

Linux alatt két módon bírhatod működésre a G400 TV kimenetét:

Fontos

a Matrox G450/G550 TV-kimenet utasításaiért lásd a következő részt!

XFree86

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).

Framebuffer

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.

  1. 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!).

  2. Ezután állítsd be a monitorod és a TV-t a kedvednek megfelelően a fenti eszközökkel.

  3. 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

  4. 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...

  5. Élvezd az ultra-gyors ultra-különleges Matrox TV kimenetet (jobb mint az Xv)!

6.19.2. Matrox G450/G550 kártyák

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/

6.19.3. Matrox TV-kimeneti kábel készítése

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)

6.19.4. ATI kártyák

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.

6.19.5. nVidia

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.

6.19.6. NeoMagic

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.

7. fejezet - Portok

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.

7.1. Linux

7.1.1. Debian csomagolás

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

7.1.2. RedHat csomagolás

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

7.1.3. ARM Linux

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.

7.2. *BSD

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).

7.2.1. FreeBSD

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).

7.2.2. OpenBSD

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.

7.2.3. Darwin

Lásd a Mac OS részt.

7.3. Kereskedelmi Unix

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.

7.3.1. Solaris

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.

7.3.2. HP-UX

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.)

7.3.3. AIX

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

7.3.4. QNX

Le kell töltened és telepítened kell az SDL-t a QNX-re. Majd futtasd az MPlayert a -vo sdl:driver=photon és -ao sdl:nto kapcsolókkal, így gyors lesz.

A -vo x11 kimenet még lassabb lesz, mint Linux-on, mivel a QNX-nek csak X emulációja van, ami nagyon lassú.

7.4. Windows

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-device d:

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-device d:

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.

Megjegyzés

Ha Pentium 4-ed van és fagyásokat tapasztalsz a RealPlayer codec-ekkel, le kell tiltanod a hyperthread támogatást.

7.4.1. Cygwin

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.

7.4.2. MinGW

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.

7.5. Mac OS

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

7.5.1. MPlayer OS X GUI

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.

8. fejezet - A MEncoder használatának alapjai

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.

8.1. Codec és konténer formátum kiválasztása

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 neveLeírás
mp3lamekódol VBR, ABR vagy CBR MP3-at LAME-mel
lavca libavcodec egyik audió codec-jét használja
faacFAAC AAC audió kódoló
toolameMPEG Audio Layer 2 kódoló
twolametooLAME alapú MPEG Audio Layer 2 kódoló
pcmtömörítetlen PCM audió
copynem kódol újra, csak másolja a tömörített kockákat

Videó codec-ek:

Videó codec neveLeírás
lavca libavcodec egyik videó codec-jét használja
xvidXvid, MPEG-4 Advanced Simple Profile (ASP) codec
x264x264, MPEG-4 Advanced Video Coding (AVC), AKA H.264 codec
nuvnuppel video, néhány realtime alkalmazás használja
rawtömörítetlen videó képkockák
copynem kódol újra, csak másolja a tömörített kockákat
framenoa 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 neveLeírás
lavfa libavformat által támogatott valamelyik konténer
aviAudio-Video Interleaved
mpegMPEG-1 és MPEG-2 PS
rawvideonyers videó folyam (nincs keverés - csak egy videó folyam)
rawaudionyers 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 neveLeírás
mpgMPEG-1 és MPEG-2 PS
asfAdvanced Streaming Format
aviAudio-Video Interleaved
wavWaveform Audio
swfMacromedia Flash
flvMacromedia Flash video
rmRealMedia
auSUN AU
nutNUT nyílt konténer (kísérleti és még nem a specifikációnak megfelelő)
movQuickTime
mp4MPEG-4 formátum
dvSony Digital Video konténer
mkvMatroska 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:

mencoder bemenet.avi -o kimenet.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


8.2. Bemeneti fájl vagy eszköz kiválasztása

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.

8.3. Két menetes MPEG-4 ("DivX") kódolás

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


8.4. Kódolás Sony PSP videó formátumba

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 -o kimenet.psp

Figyelj rá, hogy beállíthatod a videó címét a -info name=FilmCime kapcsolóval.


8.5. Kódolás MPEG formátumba

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:

mencoder bemenet.avi -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video \
  -oac copy egyéb_kapcsolók -o kimenet.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:

mencoder bemenet.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 \
  -o kimenet.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:

mencoder input.avi -o VCD.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

Tanács:

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.

8.6. Filmek átméretezése

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:

mencoder bemenet.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \
  -vf scale=640:480 -o kimenet.avi

8.7. Stream másolás

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:

mencoder bemenet.nsv -oac copy -fafmttag 0x706D \
  -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o kimenet.avi

8.8. Kódolás több bemeneti képfájlból (JPEG, PNG, TGA, stb.)

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:

  1. A MEncoder dekódolja a bemeneti képe(ke)t a libjpeg-gel (ha PNG-ket dekódol, akkor a libpng-vel).

  2. 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 -o kimenet.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 -o kimenet.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

Megjegyzés

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

8.9. DVD felirat elmentése VOBsub fájlba

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

rm subtitles.idx subtitles.sub
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
  -vobsubout subtitles -vobsuboutindex 0 -sid 2
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
  -vobsubout subtitles -vobsuboutindex 1 -sid 5

8.6. példa - Francia felirat másolása egy MPEG fájlból

rm subtitles.idx subtitles.sub
mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles -vobsuboutindex 0 \
  -vobsuboutid fr -sid 1 -nosound -ovc copy

8.10. Képarány megtartása

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

mencoder sample-svcd.mpg -vf crop=714:548:0:14 -oac copy -ovc lavc \
  -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -o kimenet.avi

9. fejezet - Kódolás a MEncoderrel

9.1. Nagyon jó minőségű MPEG-4 ("DivX") rip készítése DVD filmből
9.1.1. Felkészülés a kódolásra: A forrás anyag és frameráta azonosítása
9.1.1.1. A forrás framerátájának azonosítása
9.1.1.2. A forrásanyag beazonosítása
9.1.2. Konstans kvantálás vs. többmenetes kódolás
9.1.3. Megszorítások a hatékony kódoláshoz
9.1.4. Vágás és méretezés
9.1.5. Felbontás és bitráta kiválasztása
9.1.5.1. Felbontás kiszámítása
9.1.6. Szűrés
9.1.7. Interlacing és Telecine
9.1.8. Átlapolt videó elkódolása
9.1.9. Megjegyzések az Audió/Videó szinkronizáláshoz
9.1.10. A videó codec kiválasztása
9.1.11. Audió
9.1.12. Keverés
9.1.12.1. A keverés és az A/V szinkron megbízhatóságának növelése
9.1.12.2. Az AVI konténer korlátai
9.1.12.3. Keverés a Matroska konténerbe
9.2. Mit kezdjünk a telecine-nel és az átlapolással NTSC DVD-ken
9.2.1. Bevezetés
9.2.2. Hogyan állapítható meg egy videó típusa
9.2.2.1. Progresszív
9.2.2.2. Telecine-lt
9.2.2.3. Átlapolt
9.2.2.4. Kevert progresszív és telecine
9.2.2.5. Kevert progresszív és átlapolt
9.2.3. Hogyan lehet elkódolni ezen kategóriákat
9.2.3.1. Progresszív
9.2.3.2. Telecine-lt
9.2.3.3. Átlapolt
9.2.3.4. Kevert progresszív és telecine
9.2.3.5. Kevert progresszív és átlapolt
9.2.4. Lábjegyzet
9.3. Kódolás a libavcodec codec családdal
9.3.1. A libavcodec videó codec-jei
9.3.2. A libavcodec audió codec-jei
9.3.2.1. PCM/ADPCM formátum kiegészítő táblázat
9.3.3. A libavcodec kódolási opciói
9.3.4. Kódolás beállítási példák
9.3.5. Egyedi inter/intra matricák
9.3.6. Példa
9.4. Kódolás az Xvid codec-kal
9.4.1. Milyen opciókat kell használnom, ha a legjobb eredményt akarom?
9.4.2. Az Xvid kódolási opciói
9.4.3. Kódolási profilok
9.4.4. Kódolás beállítási példák
9.5. Kódolás az x264 codec-kel
9.5.1. Az x264 kódolási opciói
9.5.1.1. Bevezetés
9.5.1.2. Elsősorban a sebességet és a minőséget érintő opciók
9.5.1.3. Különböző igényekhez tartozó opciók
9.5.2. Kódolás beállítási példák
9.6. Kódolás a Video For Windows codec családdal
9.6.1. Video for Windows által támogatott codec-ek
9.6.2. A vfw2menc használata a codec beállításokat tartalmazó fájl elkészítéséhez.
9.7. QuickTime-kompatibilis fájlok készítése a MEncoder használatával
9.7.1. Miért akarna bárki is QuickTime-kompatibilis fájlokat készíteni?
9.7.2. QuickTime 7 korlátok
9.7.3. Vágás
9.7.4. Méretezés
9.7.5. A/V szinkron
9.7.6. Bitráta
9.7.7. Kódolási példa
9.7.8. Újrakeverés MP4-ként
9.7.9. Metadata tag-ek hozzáadása
9.8. A MEncoder használata VCD/SVCD/DVD-kompatibilis fájlok készítéséhez.
9.8.1. Formátum korlátok
9.8.1.1. Formátum korlátok
9.8.1.2. GOP méret határok
9.8.1.3. Bitráta korlátok
9.8.2. Kimeneti opciók
9.8.2.1. Képarány
9.8.2.2. A/V szinkron megtartása
9.8.2.3. Mintavételi ráta konvertálás
9.8.3. A libavcodec használata VCD/SVCD/DVD kódoláshoz
9.8.3.1. Bevezetés
9.8.3.2. lavcopts
9.8.3.3. Példák
9.8.3.4. Haladó opciók
9.8.4. Audió kódolása
9.8.4.1. toolame
9.8.4.2. twolame
9.8.4.3. libavcodec
9.8.5. Mindent összevetve
9.8.5.1. PAL DVD
9.8.5.2. NTSC DVD
9.8.5.3. AC-3 Audiót tartalmazó PAL AVI DVD-re
9.8.5.4. AC-3 Audiót tartalmazó NTSC AVI DVD-re
9.8.5.5. PAL SVCD
9.8.5.6. NTSC SVCD
9.8.5.7. PAL VCD
9.8.5.8. NTSC VCD

9.1. Nagyon jó minőségű MPEG-4 ("DivX") rip készítése DVD filmből

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.

9.1.1. Felkészülés a kódolásra: A forrás anyag és frameráta azonosítása

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.

9.1.1.1. A forrás framerátájának azonosítása

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.

9.1.1.2. A forrásanyag beazonosítása

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.

Tanács:

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.

9.1.2. Konstans kvantálás vs. többmenetes kódolás

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.

Megjegyzés:

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 libavcodecné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 libavcodecnek), 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.

9.1.3. Megszorítások a hatékony kódoláshoz

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.

  1. 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:

  1. 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.

  2. 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.

  3. 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.

9.1.4. Vágás és méretezé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!

LLLLLLLL
CCCC
LLLLLLLL
LLLLLLLL
CCCC
LLLLLLLL

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 fieldBottom field
LLLLLLLL        
CCCC        
        LLLLLLLL
LLLLLLLL        
        CCCC
        LLLLLLLL
LLLLLLLL        
CCCC        
        LLLLLLLL
LLLLLLLL        
        CCCC
        LLLLLLLL

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 libavcodechez, 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.

9.1.5. Felbontás és bitráta kiválasztása

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:

  1. É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).

  2. 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.

9.1.5.1. Felbontás kiszámítása

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.

9.1.6. Szűrés

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.

9.1.7. Interlacing és Telecine

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.

9.1.8. Átlapolt videó elkódolása

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:

  1. A vágási magasság és y-offszet 4 többszöröse kell, hogy legyen.

  2. Bármilyen függőleges átméretezést átlapolt módban kell elvégezni.

  3. 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.

9.1.9. Megjegyzések az Audió/Videó szinkronizáláshoz

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.

9.1.10. A videó codec kiválasztása

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.

9.1.11. Audió

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.

mplayer forras_fajl.vob -aid 129 -dumpaudio -dumpfile hang.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:

mplayer forras_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.

9.1.12. Keverés

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  -o kimenet_film.avi \
  -audiofile bemenet_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  -o kimenet_film.asf -audiofile bemenet_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).

9.1.12.1. A keverés és az A/V szinkron megbízhatóságának növelése

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.

9.1.12.2. Az AVI konténer korlátai

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:

  1. 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.

  2. 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.

9.1.12.3. Keverés a Matroska konténerbe

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 -o kimenet.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.

9.2. Mit kezdjünk a telecine-nel és az átlapolással NTSC DVD-ken

9.2.1. Bevezetés

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]

9.2.2. Hogyan állapítható meg egy videó típusa

9.2.2.1. Progresszív

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.

9.2.2.2. Telecine-lt

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:

  1. mplayer dvd://1
  2. Menj egy mozgást ábrázoló részhez.

  3. Használd a . gombot az egy képkockával történő előreléptetéshez.

  4. 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.

9.2.2.3. Átlapolt

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.

9.2.2.4. Kevert progresszív és telecine

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.

9.2.2.5. Kevert progresszív és átlapolt

"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.

9.2.3. Hogyan lehet elkódolni ezen kategóriákat

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.

9.2.3.1. Progresszív

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].

9.2.3.2. Telecine-lt

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.

9.2.3.3. Átlapolt

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).

  1. 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 libavcodecnek 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

  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

  3. 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

  4. 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

9.2.3.4. Kevert progresszív és telecine

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
      

9.2.3.5. Kevert progresszív és átlapolt

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.

9.2.4. Lábjegyzet

  1. 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.

  2. 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.

  3. 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.

9.3. Kódolás a libavcodec codec családdal

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):

9.3.1. A libavcodec videó codec-jei

Videó codec neveLeírás
mjpegMotion JPEG
ljpegveszteségmentes JPEG
jpeglsJPEG LS
targaTarga kép
gifGIF kép
bmpBMP kép
pngPNG kép
h261H.261
h263H.263
h263pH.263+
mpeg4ISO szabvány MPEG-4 (DivX, Xvid kompatibilis)
msmpeg4szabvány előtti MPEG-4 variáns az MS-től, v3 (AKA DivX3)
msmpeg4v2szabvány előtti MPEG-4 az MS-től, v2 (régi ASF fájlokban használják)
wmv1Windows Media Video, 1-es verzió (AKA WMV7)
wmv2Windows Media Video, 2-es verzió (AKA WMV8)
rv10RealVideo 1.0
rv20RealVideo 2.0
mpeg1videoMPEG-1 videó
mpeg2videoMPEG-2 videó
huffyuvveszteségmentes tömörítés
ffvhuffFFmpeg által módosított veszteségmentes huffyuv
asv1ASUS Video v1
asv2ASUS Video v2
ffv1az FFmpeg veszteségmentes videó codec-je
svq1Sorenson video 1
flvFlash Videókban használt Sorenson H.263
flashsvFlash Screen Video
dvvideoSony Digital Video
snowaz FFmpeg kísérleti wavelet-alapú codecja
zmbvZip Motion Blocks Video
dnxhdAVID 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

9.3.2. A libavcodec audió codec-jei

Audió codec neveLeírás
ac3Dolby Digital (AC-3)
adpcm_*Adaptív PCM formátumok - lásd a mellékelt táblázatot
flacFree Lossless Audio Codec (FLAC)
g726G.726 ADPCM
libfaacAdvanced Audio Coding (AAC) - FAAC használatával
libgsmETSI GSM 06.10 full rate
libgsm_msMicrosoft GSM
libmp3lameMPEG-1 audio layer 3 (MP3) - LAME használatával
mp2MPEG-1 audio layer 2 (MP2)
pcm_*PCM formats - lásd a mellékelt táblázatot
roq_dpcmId Software RoQ DPCM
sonickísérleti FFmpeg veszteséges codec
soniclskísérleti FFmpeg veszteségmentes codec
vorbisXiph Ogg Vorbis codec
wmav1Windows Media Audio v1
wmav2Windows 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.

9.3.2.1. PCM/ADPCM formátum kiegészítő táblázat

PCM/ADPCM codec neveLeírás
pcm_s32leelőjeles 32-bit-es little-endian
pcm_s32beelőjeles 32-bit-es big-endian
pcm_u32leelőjel nélküli 32-bit-es little-endian
pcm_u32beelőjel nélküli 32-bit-es big-endian
pcm_s24leelőjeles 24-bit-es little-endian
pcm_s24beelőjeles 24-bit-es big-endian
pcm_u24leelőjel nélküli 24-bit-es little-endian
pcm_u24beelőjel nélküli 24-bit-es big-endian
pcm_s16leelőjeles 16-bit-es little-endian
pcm_s16beelőjeles 16-bit-es big-endian
pcm_u16leelőjel nélküli 16-bit-es little-endian
pcm_u16beelőjel nélküli 16-bit-es big-endian
pcm_s8előjeles 8-bit-es
pcm_u8előjel nélküli 8-bit-es
pcm_alawG.711 A-LAW
pcm_mulawG.711 μ-LAW
pcm_s24daudelőjeles 24-bit-es D-Cinema Audio formátum
pcm_zorkActivision Zork Nemesis
adpcm_ima_qtApple QuickTime
adpcm_ima_wavMicrosoft/IBM WAVE
adpcm_ima_dk3Duck DK3
adpcm_ima_dk4Duck DK4
adpcm_ima_wsWestwood Studios
adpcm_ima_smjpegSDL Motion JPEG
adpcm_msMicrosoft
adpcm_4xm4X Technologies
adpcm_xaPhillips Yellow Book CD-ROM eXtended Architecture
adpcm_eaElectronic Arts
adpcm_ctCreative 16->4-bit
adpcm_swfAdobe Shockwave Flash
adpcm_yamahaYamaha
adpcm_sbpro_4Creative VOC SoundBlaster Pro 8->4-bit
adpcm_sbpro_3Creative VOC SoundBlaster Pro 8->2.6-bit
adpcm_sbpro_2Creative VOC SoundBlaster Pro 8->2-bit
adpcm_thpNintendo GameCube FMV THP
adpcm_adxSega/CRI ADX

9.3.3. A libavcodec kódolási opciói

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.

9.3.4. Kódolás beállítási példák

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ásKódolási opcióksebesség (fps-ben)Relatív PSNR veszteség (dB-ben)
Nagyon jó minőségvcodec=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=26fps0dB
Jó minőségvcodec=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:turbo15fps-0.5dB
Gyorsvcodec=mpeg4:mbd=2:trell:v4mv:turbo42fps-0.74dB
Valós idejűvcodec=mpeg4:mbd=2:turbo54fps-1.21dB

9.3.5. Egyedi inter/intra matricák

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:

mencoder input.avi -o output.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

9.3.6. Példa

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

9.4. Kódolás az Xvid codec-kal

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.

9.4.1. Milyen opciókat kell használnom, ha a legjobb eredményt akarom?

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.

9.4.2. Az Xvid kódolási opciói

  • 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.

9.4.3. Kódolási profilok

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.

 SzimplaFejlett szimplaDivX
Profil neve0123012345HandheldHordozható NTSCHordozható PALNTSC házimoziPAL házimoziHDTV
Szélesség [pixelben]1761763523521761763523523527201763523527207201280
Magasság [pixelben]144144288288144144288288576576144240288480576720
Frame ráta [fps]15151515303015303030153025302530
Max átlagos bitráta [kbps]646412838412812838476830008000537.648544854485448549708.4
Átlagos csúcs bitráta 3 mp-n keresztül [kbps]          800800080008000800016000
Max. B-frame0000      011112
MPEG kvantálás    XXXXXX      
Adaptív kvantálás    XXXXXXXXXXXX
Átlapolt kódolás    XXXXXX   XXX
Quarterpixel    XXXXXX      
Globális mozgás-kompenzáció    XXXXXX      

9.4.4. Kódolás beállítási példák

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ásKódolási opcióksebesség (fps-ben)Relatív PSNR veszteség (dB-ben)
Nagyon jó minőségchroma_opt:vhq=4:bvhq=1:quant_type=mpeg16fps0dB
Jó minőségvhq=2:bvhq=1:chroma_opt:quant_type=mpeg18fps-0.1dB
Gyorsturbo:vhq=028fps-0.69dB
Valós idejűturbo:nochroma_me:notrellis:max_bframes=0:vhq=038fps-1.48dB

9.5. Kódolás az x264 codec-kel

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.

9.5.1. Az x264 kódolási opciói

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.

9.5.1.1. Bevezetés

Ez a leírás a kódolási opciók két fő kategóriáját tárgyalja:

  1. Opciók, melyekkel a kódolási idő vs. minőség arány szabályozható

  2. 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.

9.5.1.2. Elsősorban a sebességet és a minőséget érintő opciók

  • 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ő.

    Megjegyzés:

    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).

9.5.1.3. Különböző igényekhez tartozó opciók

  • 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.

9.5.2. Kódolás beállítási példák

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ásKódolási opcióksebesség (fps-ben)relatív PSNR veszteség (dB-ben)
Nagyon jó minőségsubq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid=normal:weight_b6fps0dB
Jó minőségsubq=5:partitions=all:8x8dct:frameref=2:bframes=3:b_pyramid=normal:weight_b13fps-0.89dB
Gyorssubq=4:bframes=2:b_pyramid=normal:weight_b17fps-1.48dB

9.6. Kódolás a Video For Windows codec családdal

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.

9.6.1. Video for Windows által támogatott codec-ek

Videó codec fájl névLeírásmd5sumMegjegyzés
aslcodec_vfw.dllAlparysoft veszteségmentes codec vfw (ASLC)608af234a6ea4d90cdc7246af5f3f29a 
avimszh.dllAVImszh (MSZH)253118fe1eedea04a95ed6e5f4c28878-vf format kell hozzá
avizlib.dllAVIzlib (ZLIB)2f1cc76bbcf6d77d40d0e23392fa8eda 
divx.dllDivX4Windows-VFWacf35b2fc004a89c829531555d73f1e6 
huffyuv.dllHuffYUV (veszteségmentes) (HFYU)b74695b50230be4a6ef2c4293a58ac3b 
iccvid.dllCinepak Video (cvid)cb3b7ee47ba7dbb3d23d34e274895133 
icmw_32.dllMotion Wavelets (MWV1)c9618a8fc73ce219ba918e3e09e227f2 
jp2avi.dllImagePower MJPEG2000 (IPJ2)d860a11766da0d0ea064672c6833768b-vf flip
m3jp2k32.dllMorgan MJPEG2000 (MJ2C)f3c174edcbaef7cb947d6357cdfde7ff 
m3jpeg32.dllMorgan Motion JPEG Codec (MJPEG)1cd13fff5960aa2aae43790242c323b1 
mpg4c32.dllMicrosoft MPEG-4 v1/v2b5791ea23f33010d37ab8314681f1256 
tsccvid.dllTechSmith Camtasia Screen Codec (TSCC)8230d8560c41d444f249802a2700d1d5shareware hiba windows-on
vp31vfw.dllOn2 Open Source VP3 Codec (VP31)845f3590ea489e2e45e876ab107ee7d2 
vp4vfw.dllOn2 VP4 Personal Codec (VP40)fc5480a482ccc594c2898dcc4188b58f 
vp6vfw.dllOn2 VP6 Personal Codec (VP60)04d635a364243013898fd09484f913fb 
vp7vfw.dllOn2 VP7 Personal Codec (VP70)cb4cc3d4ea7c94a35f1d81c3d750bc8d-ffourcc VP70
ViVD2.dllSoftMedia ViVD V2 codec VfW (GXVE)a7b4bf5cac630bb9262c3f80d8a773a1 
msulvc06.DLLMSU Lossless codec (MSUD)294bf9288f2f127bb86f00bfcc9ccdda Dekódolható a Window Media Playerrel, de az MPlayerrel nem (még).
camcodec.dllCamStudio veszteségmentes videó codec (CSCD)0efe97ce08bb0e40162ab15ef3b45615sf.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-device zeiram.iso dvd://7 -o trailer.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

9.6.2. A vfw2menc használata a codec beállításokat tartalmazó fájl elkészítéséhez.

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.

9.7. QuickTime-kompatibilis fájlok készítése a MEncoder használatával

9.7.1. Miért akarna bárki is QuickTime-kompatibilis fájlokat készíteni?

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 …).

9.7.2. QuickTime 7 korlátok

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.

9.7.3. Vágá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.

9.7.4. Méretezés

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

9.7.5. A/V szinkron

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

9.7.6. Bitráta

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.

9.7.7. Kódolási példa

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.

9.7.8. Újrakeverés MP4-ként

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

9.7.9. Metadata tag-ek hozzáadása

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.

9.8. A MEncoder használata VCD/SVCD/DVD-kompatibilis fájlok készítéséhez.

9.8.1. Formátum korlátok

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.

9.8.1.1. Formátum korlátok

FormátumFelbontásV. CodecV. BitrátaMintavételi rátaA. CodecA. BitrátaFPSArány
NTSC DVD720x480, 704x480, 352x480, 352x240MPEG-29800 kbps48000 HzAC-3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9 (csak 720x480-nál)
NTSC DVD352x240[a]MPEG-11856 kbps48000 HzAC-3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9
NTSC SVCD480x480MPEG-22600 kbps44100 HzMP2384 kbps (max)30000/10014:3
NTSC VCD352x240MPEG-11150 kbps44100 HzMP2224 kbps24000/1001, 30000/10014:3
PAL DVD720x576, 704x576, 352x576, 352x288MPEG-29800 kbps48000 HzMP2,AC-3,PCM1536 kbps (max)254:3, 16:9 (csak 720x576-nál)
PAL DVD352x288[a]MPEG-11856 kbps48000 HzMP2,AC-3,PCM1536 kbps (max)254:3, 16:9
PAL SVCD480x576MPEG-22600 kbps44100 HzMP2384 kbps (max)254:3
PAL VCD352x288MPEG-11152 kbps44100 HzMP2224 kbps254: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.

9.8.1.2. GOP méret határok

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.

9.8.1.3. Bitráta korlátok

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.

9.8.2. Kimeneti opciók

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.

9.8.2.1. Képarány

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.

9.8.2.2. A/V szinkron megtartása

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.

9.8.2.3. Mintavételi ráta konvertálás

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

9.8.3. A libavcodec használata VCD/SVCD/DVD kódoláshoz

9.8.3.1. Bevezetés

A libavcodec használható VCD/SVCD/DVD kompatibilis videó készítéséhez a megfelelő opciókkal.

9.8.3.2. lavcopts

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.

9.8.3.3. Példák

Á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

9.8.3.4. Haladó opciók

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

9.8.4. Audió kódolása

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ó.

9.8.4.1. toolame

VCD-hez és SVCD-hez:

-oac toolame -toolameopts br=224

9.8.4.2. twolame

VCD-hez és SVCD-hez:

-oac twolame -twolameopts br=224

9.8.4.3. libavcodec

DVD-hez két csatornás hanggal:

-oac lavc -lavcopts acodec=ac3:abitrate=192

DVD-hez 5.1 csatornás hanggal:

-channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384

VCD-hez és SVCD-hez:

-oac lavc -lavcopts acodec=mp2:abitrate=224

9.8.5. Mindent összevetve

Ez a rész néhány teljes parancsot mutat a VCD/SVCD/DVD kompatibilis videók készítéséhez.

9.8.5.1. PAL DVD

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 \
  -o movie.mpg movie.avi

9.8.5.2. NTSC DVD

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 \
  -o movie.mpg movie.avi

9.8.5.3. AC-3 Audiót tartalmazó PAL AVI DVD-re

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 -o movie.mpg movie.avi

9.8.5.4. AC-3 Audiót tartalmazó NTSC AVI DVD-re

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 \
  -o movie.mpg movie.avi

9.8.5.5. PAL SVCD

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 \
    -o movie.mpg movie.avi
  

9.8.5.6. NTSC SVCD

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 \
    -o movie.mpg movie.avi

9.8.5.7. PAL VCD

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 \
    -o movie.mpg movie.avi

9.8.5.8. NTSC VCD

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 \
    -o movie.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. fejezet - Gyakran ismételt kérdések

10.1. Fejlesztés
K: Hogyan készítsek egy megfelelő patchet az MPlayerhez?
K: Hogyan fordíthatom le az MPlayert egy új nyelvre?
K: Hogyan támogathatom az MPlayer fejlesztését?
K: Hogyan lehetek én is MPlayer fejlesztő?
K: Miért nem használjátok az autoconf/automake párost?
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 internal compiler error vagy unable to find a register to spill vagy can't find a register in class `GENERAL_REGS' while reloading `asm' sorokat tartalmazza.
K: Vannak bináris (RPM/Debian) csomagok az MPlayerből?
K: Hogyan fordíthatok 32 bites MPlayert egy 64 bites Athlon-on?
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'
K: Van egy Matrox G200/G400/G450/G550 kártyám, hogyan tudom lefordítani/használni az mga_vid vezérlőt?
K: A 'make' közben az MPlayer hiányzó X11 könyvtárak miatt panaszkodik. Nem értem, van telepítve X11-em!?
K: A Mac OS 10.3 alatti fordítás számos szerkesztési hibát okoz.
10.3. Általános kérdések
K: Van MPlayerrel foglalkozó levelezési lista?
K: Találtam egy csúnya hibát, amikor megpróbáltam lejátszani a kedvenc videómat! Kit értesítsek?
K: Egy core dump-ot kapok, amikor folyamokat dump-olok, mi a baj?
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
K: Hogyan készíthetek mentést a képernyőről?
K: Mit jelentenek a számok a státusz sorban?
K: Üzeneteket kapok a /usr/local/lib/codecs/ könyvtárban nem található fájlokról...
K: Hogyan emlékeztethetem az MPlayert egy bizonyos fájlnál használt opciókra, pl. a movie.avi-nál?
K: A feliratok gyönyörűek, a legszebbek, amit valaha láttam, de lelassítják a lejátszást! Tudom, hogy hihetetlen ...
K: Hogy tudom az MPlayer a háttérben futtatni?
10.4. Lejátszási problémák
K: Nem találom néhány érdekes lejátszási probléma okát.
K: Hogyan jeleníthetem meg a feliratot a film körül lévő fekete sávon?
K: Hogyan tudok audió/felirat sávot választani a DVD, OGM, Matroska vagy NUT fájlban?
K: Egy véletlen stream-et szeretnék lejátszani az Internetről, de nem sikerül.
K: Letöltöttem egy videót egy P2P hálózatról és nem megy!
K: Gondjaim vannak a feliratok megjelenítésével, segítsetek!!
K: Miért nem működik az MPlayer Fedora Core-on?
K: Az MPlayer meghal ezzel: MPlayer interrupted by signal 4 in module: decode_video
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.
K: Furcsa százalékos értékeket kapok (nagyon magasak), miközben a notebook-omon játszok le fájlokat.
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.
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...
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.
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?
K: Problémám van a [ablakkezelőd] és a teljes képernyős xv/xmga/sdl/x11 módokkal ...
K: AVI fájl lejátszásakor elveszik az audió szinkronizáció.
K: Hogy tudom használni a dmix-et az MPlayerrel?
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...
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.
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!
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!
K: Hogyan szabadulhatok meg az A/V deszinkronizációtól a RealMedia folyamokban történő léptetésnél?
10.6. DVD lejátszás
K: Mi van a DVD navigációval/menükkel?
K: Mi van a feliratokkal? Meg tudja őket jeleníteni az MPlayer?
K: Hogy tudom beállítani a DVD meghajtóm régió kódját? Nincs Windows-om!
K: Nem tudok lejátszani DVD-t, az MPlayer lefagy vagy "Titkosított VOB fájl!" / "Encrypted VOB file!" hibát ír.
K: Muszáj (setuid) root-nak lennem, hogy DVD-t nézhessek?
K: Lehetséges, hogy csak a kijelölt fejezeteket játszam le/kódoljam?
K: A DVD lejátszásom lassú!
K: Másoltam egy DVD-t vobcopy-val. Hogyan tudom lejátszani/elkódolni a merevlemezemről?
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.
K: Szeretnék +/- 1 képkockát ugrani a 10 másodperc helyett.
10.8. Elkódolás
K: Hogy tudok kódolni?
K: Hogyan tudok egy teljes DVD részt átteni egy fájlba?
K: Hogy tudok automatikusan (S)VCD-t készíteni?
K: Hogyan tudok (S)VCD-t készíteni?
K: Hogy tudok összefűzni két videó fájlt?
K: Hogyan tudom megjavítani a hibás indexű vagy átlapolt AVI fájlokat?
K: Hogyan tudom kijavítani egy AVI fájl képének méretarányát?
K: Hogyan tudom lementeni és elkódolni a hibás kezdetű VOB fájlt?
K: Nem tudok DVD feliratot kódolni az AVI fájlba!
K: Csak a kiválasztott fejezeteket tudom elkódolni a DVD-ről?
K: 2GB+ méretű fájlokkal próbálok dolgozni VFAT fájlrendszeren. Működni fog?
K: Mit jelentenek a státusz sorban lévő számok a kódolási folyamat közben?
K: Miért negatív a MEncoder által kiírt javasolt bitráta?
K: Nem tudok elkódolni ASF fájlokat AVI/MPEG-4 (DivX)-be, mert 1000 fps-t használ?
K: Hogy tudok feliratot tenni a kimeneti fájlba?
K: Hogyan tudom csak a zenét elkódolni egy zenés videóból?
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?
K: Hogyan tudok elkódolni egy csak audiót tartalmazó fájlt?
K: Hogyan tudom lejátszani az AVI-ba ágyazott feliratokat?
K: A MEncoder nem...

10.1. Fejlesztés

K: Hogyan készítsek egy megfelelő patchet az MPlayerhez?
K: Hogyan fordíthatom le az MPlayert egy új nyelvre?
K: Hogyan támogathatom az MPlayer fejlesztését?
K: Hogyan lehetek én is MPlayer fejlesztő?
K: Miért nem használjátok az autoconf/automake párost?

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 internal compiler error vagy unable to find a register to spill vagy can't find a register in class `GENERAL_REGS' while reloading `asm' sorokat tartalmazza.
K: Vannak bináris (RPM/Debian) csomagok az MPlayerből?
K: Hogyan fordíthatok 32 bites MPlayert egy 64 bites Athlon-on?
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'
K: Van egy Matrox G200/G400/G450/G550 kártyám, hogyan tudom lefordítani/használni az mga_vid vezérlőt?
K: A 'make' közben az MPlayer hiányzó X11 könyvtárak miatt panaszkodik. Nem értem, van telepítve X11-em!?
K: A Mac OS 10.3 alatti fordítás számos szerkesztési hibát okoz.

K:

A fordítás leáll hibaüzenettel és a gcc valami titokzatos üzenetet ad ki magából, ami a internal compiler error vagy unable to find a register to spill vagy can't find a register in class `GENERAL_REGS' while reloading `asm' sorokat tartalmazza.

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:

Nézd meg a Debian és az RPM részt bővebb infókért!

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 mga_vid vezérlőt?

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 -F/eleresi/ut/ahova/kicsomagoltad az OPTFLAGS változóhoz. Ha X-Code-ot használsz, egyszerűen kiválaszthatod ezeket a framework-öket a rendszer sajátjai helyett.

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 otool -l használatával).

10.3. Általános kérdések

K: Van MPlayerrel foglalkozó levelezési lista?
K: Találtam egy csúnya hibát, amikor megpróbáltam lejátszani a kedvenc videómat! Kit értesítsek?
K: Egy core dump-ot kapok, amikor folyamokat dump-olok, mi a baj?
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
K: Hogyan készíthetek mentést a képernyőről?
K: Mit jelentenek a számok a státusz sorban?
K: Üzeneteket kapok a /usr/local/lib/codecs/ könyvtárban nem található fájlokról...
K: Hogyan emlékeztethetem az MPlayert egy bizonyos fájlnál használt opciókra, pl. a movie.avi-nál?
K: A feliratok gyönyörűek, a legszebbek, amit valaha láttam, de lelassítják a lejátszást! Tudom, hogy hihetetlen ...
K: Hogy tudom az MPlayer a háttérben futtatni?

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 screenshot videó szűrővel (-vf screenshot) és az s gomb megnyomásával képernyőmentést készíthetsz.

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

A: 2.1

audió pozíció másodpercekben

V: 2.2

videó pozíció másodpercekben

A-V: -0.167

audió-videó különbség másodpercekben (késleltetés)

ct: 0.042

teljes elvégzett A-V szinkron

57/57

lejátszott/dekódolt képkockák (az utolsó kereséstől számítva)

41%

videó codec CPU használata százalékban (a slice rendering-nél és a direkt rendering-nél ebben benne van a video_out is)

0%

video_out CPU használat

2.6%

audió codec CPU használat százalékban

0

az A-V szinkron fenntartása miatt eldobott képkockák száma

4

a kép utófeldolgozás aktuális szintje (-autoq használatakor)

49%

aktuálisan használt cache méret (50% körül a normális)

1.00x

lejátszási sebesség az eredeti sebesség faktorjaként

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 #undef FAST_OSD sort #define FAST_OSD-re. Aztán forgass újra.

K:

Hogy tudom az MPlayer a háttérben futtatni?

V:

Így:

mplayer kapcsolók fájlnév < /dev/null &

10.4. Lejátszási problémák

K: Nem találom néhány érdekes lejátszási probléma okát.
K: Hogyan jeleníthetem meg a feliratot a film körül lévő fekete sávon?
K: Hogyan tudok audió/felirat sávot választani a DVD, OGM, Matroska vagy NUT fájlban?
K: Egy véletlen stream-et szeretnék lejátszani az Internetről, de nem sikerül.
K: Letöltöttem egy videót egy P2P hálózatról és nem megy!
K: Gondjaim vannak a feliratok megjelenítésével, segítsetek!!
K: Miért nem működik az MPlayer Fedora Core-on?
K: Az MPlayer meghal ezzel: MPlayer interrupted by signal 4 in module: decode_video
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.
K: Furcsa százalékos értékeket kapok (nagyon magasak), miközben a notebook-omon játszok le fájlokat.
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.
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...

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 expand videó szűrőt a videó függőleges renderelési területének növeléséhez és igazítsd a filmet a felső határhoz, például:

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 example.mkv
mplayer -aid 1 -sid 1 example.mkv

Ha kiváncsi vagy, hogy melyek elérhetőek:

mplayer -vo null -ao null -frames 0 -v fájlenév | grep sid
mplayer -vo null -ao null -frames 0 -v fájlenév | grep aid

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 FreeType függvénykönyvtárad telepítve. Ellenőrizheted még a feliratodat egy szövegszerkesztőben vagy másik lejátszóval. Próbáld meg átkonvertálni másik formátumra.

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:

  • Várj két hetet. Akkor talán újra működni fog.

  • Szerkeszd újra a rendszer összes binárisát egy másik prelink opcióval. Itt van lépésről lépésre:

    1. Írd át a /etc/syconfig/prelink fájlt és változtasd meg a

      PRELINK_OPTS=-mR

      -t

      PRELINK_OPTS="-mR --no-exec-shield"

      -re

    2. touch /var/lib/misc/prelink.force

    3. /etc/cron.daily/prelink (Ez újraszerkeszti az összes alkalmazást, ami elég sokáig tart.)

    4. execstack -s /eleresi/ut/mplayer (Ez kikapcsolja az exec-shield-et az MPlayer binárisán.)

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.
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?
K: Problémám van a [ablakkezelőd] és a teljes képernyős xv/xmga/sdl/x11 módokkal ...
K: AVI fájl lejátszásakor elveszik az audió szinkronizáció.
K: Hogy tudom használni a dmix-et az MPlayerrel?
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...
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.
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!
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!
K: Hogyan szabadulhatok meg az A/V deszinkronizációtól a RealMedia folyamokban történő léptetésnél?

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 x11-et használod az xv videó kimeneti vezérlő helyett. Próbáld meg a -vo xv kapcsolót a parancssorban megadni vagy olvasd el a videó részt az alternatív videó kimeneti vezérlőkről szóló információkért. A -zoom opció explicit engedélyezi a szoftveres méretezést.

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 = selected_vo

sor ~/.mplayer/config fájlhoz adásával és/vagy

vo_driver = selected_vo

~/.mplayer/gui.conf fájlba írásával teheted meg.

K:

Problémám van a [ablakkezelőd] és a teljes képernyős xv/xmga/sdl/x11 módokkal ...

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 resample audió szűrőt.

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.

  • A CPU-d és/vagy videó kártyád és/vagy buszod túl lassú. Az MPlayer ebben az esetben írja ki ezt az üzenetet (és az eldobott képkockák száma gyorsan nő).

  • Ha ez egy AVI fájl, talán rossz az interleaving. Próbáld meg a -ni kapcsolót ennek elhárításához. Vagy talán hibás a fejléce, ebben az esetben a -nobps és/vagy a -mc 0 segíthet.

  • Sok FLV fájl lejátszása csak a -correct-pts opcióval jó. Sajnos a MEncoder nem rendelkezik ilyen opcióval, de megpróbálhatod kézzel beállítani az -fps opciót, ha tudod.

  • A hang vezérlőd hibás.

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?
K: Mi van a feliratokkal? Meg tudja őket jeleníteni az MPlayer?
K: Hogy tudom beállítani a DVD meghajtóm régió kódját? Nincs Windows-om!
K: Nem tudok lejátszani DVD-t, az MPlayer lefagy vagy "Titkosított VOB fájl!" / "Encrypted VOB file!" hibát ír.
K: Muszáj (setuid) root-nak lennem, hogy DVD-t nézhessek?
K: Lehetséges, hogy csak a kijelölt fejezeteket játszam le/kódoljam?
K: A DVD lejátszásom lassú!
K: Másoltam egy DVD-t vobcopy-val. Hogyan tudom lejátszani/elkódolni a merevlemezemről?

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 /eleresi/ut/a/konyvtarhoz

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.
K: Szeretnék +/- 1 képkockát ugrani a 10 másodperc helyett.

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?
K: Hogyan tudok egy teljes DVD részt átteni egy fájlba?
K: Hogy tudok automatikusan (S)VCD-t készíteni?
K: Hogyan tudok (S)VCD-t készíteni?
K: Hogy tudok összefűzni két videó fájlt?
K: Hogyan tudom megjavítani a hibás indexű vagy átlapolt AVI fájlokat?
K: Hogyan tudom kijavítani egy AVI fájl képének méretarányát?
K: Hogyan tudom lementeni és elkódolni a hibás kezdetű VOB fájlt?
K: Nem tudok DVD feliratot kódolni az AVI fájlba!
K: Csak a kiválasztott fejezeteket tudom elkódolni a DVD-ről?
K: 2GB+ méretű fájlokkal próbálok dolgozni VFAT fájlrendszeren. Működni fog?
K: Mit jelentenek a státusz sorban lévő számok a kódolási folyamat közben?
K: Miért negatív a MEncoder által kiírt javasolt bitráta?
K: Nem tudok elkódolni ASF fájlokat AVI/MPEG-4 (DivX)-be, mert 1000 fps-t használ?
K: Hogy tudok feliratot tenni a kimeneti fájlba?
K: Hogyan tudom csak a zenét elkódolni egy zenés videóból?
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?
K: Hogyan tudok elkódolni egy csak audiót tartalmazó fájlt?
K: Hogyan tudom lejátszani az AVI-ba ágyazott feliratokat?
K: A MEncoder nem...

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 dvd_dump.vob

kimenti a DVD 5. részét a dvd_dump.vob nevű fájlba.

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 out.avi file1.avi file2.avi

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 input.avi -idx -ovc copy -oac copy -o output.avi

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 input.avi -ovc copy -oac copy -o output.avi -force-avi-aspect 4/3

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 bemenet.vob -sb kihagyando_bajtok_szama

Ezután elkészítheted az új fájlt, ami csak a hibátlan részt tartalmazza:

dd if=bemenet.vob of=vagott_kimenet.vob skip=1 ibs=kihagyando_bajtok_szama

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]

Pos: 264.5s

időbeli pozíció a kódolt folyamban

6612f

az elkódolt videó kockák száma

( 2%)

a bemeneti folyam már elkódolt része

7.12fps

kódolási sebesség

Trem: 576min

becsült hátralévő kódolási idő

2856mb

a kódolt fájl becsült végső fájlmérete

A-V:0.065

aktuális késleltetés az audió és a videó folyam között

[2126:192]

átlagos videó bitráta (kb/s-ben) és átlagos audió bitráta (kb/s-ben)

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 kapcsoloid encode music.mp3
rm encode

Í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 libavcodec, a natív MPEG-4 kódoló függvény könyvtár, ami általában a MEncoderrel jön, eddig 'DIVX'-re állította be a FourCC-t MPEG-4 videók kódolásakor (a FourCC egy AVI tag a kódoláshoz használt program azonosítására és az ajánlott dekódoló program megnevezésére). Ez ahhoz vezetett, hogy sokan azt hitték, hogy a libavcodec egy DivX kódoló könyvtár, pedig közben egy teljesen különböző MPEG-4 kódoló könyvtár, ami sokkal jobban implementálja az MPEG-4 szabványt, mint a DivX. Ezért a libavcodec által használt új, alapértelmezett FourCC az 'FMP4', azonban te ezt felülbírálhatod a MEncoder -ffourcc kapcsolójával. Ugyanígy a már meglévő fájljaidban is megváltoztathatod a FourCC-t:

mencoder input.avi -o output.avi -ffourcc XVID

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 libavcodec pár fejlett tulajdonságát, amiket egyébként támogat, de a DivX nem; másrészt az Xvid közelebb áll a libavcodec-hez funkcionalitásában és minden illedelmes lejátszó támogatja.

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. függelék - Hogyan jelentsd a hibákat

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.

A.1. Biztonsági hibák jelentése

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.

A.2. Hogyan javíts hibákat

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.

A.3. Hogyan tesztelj a Subversion segítségével

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 :-).

A.4. Hogyan jelentsd a hibákat

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.

A.5. Hol kell jelezni a hibákat

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.6. Mit jelents

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 FTP 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.6.1. Rendszer információk

  • 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

A.6.2. Hardver és vezérlők

  • 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).

A.6.3. Konfigurációs problémák

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.

A.6.4. Fordítási problémák

Kérlek csatold a következő fájlokat:

  • config.h

  • config.mak

A.6.5. Lejátszási problémák

Í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 -v options filename > mplayer.log 2>&1

Ha a probléma egy vagy több fájl esetén specifikus, kérlek töltsd fel ide: ftp://upload.mplayerhq.hu/incoming/

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ő.

A.6.6. Összeomlások

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:

A.6.6.1. Hogyan tárolhatóak a reprodukálható összeomlás információi

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 -v kapcsolok-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

A.6.6.2. Hogyan szedd ki a hasznos információkat a core dump-ból

Hozd létre a következő parancs fájlt:

bt
disass $pc-32,$pc+32
info all-registers

Majd add ki ezt a parancsot:

gdb mplayer --core=core -batch --command=command_file > mplayer.bug

A.7. Tudom hogy mit csinálok...

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...

B. függelék - MPlayer skin formátum

B.1. Áttekintés

B.1.1. Skin komponensek

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 és potmetert 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.

    Megjegyzés

    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á.

B.1.2. Képformátumok

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.

B.1.3. Fájlok

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).

B.2. A skin fájl

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)

B.2.1. Fő ablak és a playbar

A következő bejegyzések használhatóak a 'window = main' ... 'end', és a 'window = playbar' ... 'end' blokkokban.

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.

Megjegyzés

Ezek a koordináták jelenleg nem működnek a megjelenítő ablak esetében.

Figyelem

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  |
+-------------+
decoration = enable|disable

Engedélyezi vagy letiltja a főablakban az ablakkezelő dekorációját. Alapértelmezetten disable.

Megjegyzés

Ez nem működik a megjelenítő ablakban, nincs rá szükség.

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

potmeter = phases, numphases, default, X, Y, width, height, message

Egy hpotmeter gomb nélkül. (Gondolom a megfordítása volt az eredeti cél, de csak a vízszintes vonszolásra reagál.) A paraméterek leírását lásd a hpotmeter-nél. A phases lehet NULL, de ez eléggé haszontalan, mivel akkor nem látod, hogy a potmeter hova van állítva.

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 jobbra, 1 középre, 2 balra 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
$1lejátszási idő hh:mm:ss formátumban
$2lejátszási idő mmmm:ss formátumban
$3lejátszási idő hh formátumban (órák)
$4lejátszási idő mm formátumban (percek)
$5lejátszási idő ss formátumban (másodpercek)
$6film hossza hh:mm:ss formátumban
$7film hossza mmmm:ss formátumban
$8film hossza h:mm:ss formátumban
$vhangerő xxx.xx% formátumban
$Vhangerő xxx.xx formátumban
$bbalansz xxx.xx% formátumban
$Bbalansz xxx.xx formátumban
$$az $ karakter
$aegy karakter az audió típusnak megfelelően (nincs: n, mono: m, sztereo: t)
$tsáv száma (a lejátszási listában)
$ofájlnév
$ffájlnév kisbetűsen
$Ffájlnév nagybetűsen
$T egy karakter a folyam típusnak megfelelően (file: f, Video CD: v, DVD: d, URL: u)
$pa p karakter (ha a film lejátszás alatt van és a betűtípusban van p karakter)
$saz s karakter (ha a film meg van állítva movie és a betűtípusban van s karakter)
$eaz e karakter (ha a lejátszás szünetel és a betűtípusban van e karakter)
$xfilm szélessége
$yfilm magassága
$Chasznált codec neve

Megjegyzés

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.

B.2.2. Alablak

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).

B.2.3. Skin menü

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.

base = image

A normál menüpontokat tartalmazó kép.

selected = image

Az összes menüpontot kiválasztva ábrázoló kép.

menu = X, Y, width, height, message

Megadja egy menüelem X, Y pozícióját és a méretét a képen. A message egy üzenet, ami az egérgomb menüponton történő felengedésekor generálódik.

B.3. Betűk

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 image a betűhöz használt kép fájl neve (nem kell megadnod a kiterjesztést).

"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

B.3.1. Szimbólumok

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.

KarakterSzimbólum
plejátszás
sstop
epillanatállj
nnincs hang
mmono hang
tsztereó hang
fa folyam egy fájl
va folyam egy Video CD
da folyam egy DVD
ua folyam egy URL

B.4. GUI üzenetek

Az alábbi üzeneteket generálják a gombok, potméterek és menüpontok.

evNone

Üres üzenet, nincs hatása (kivéve talán a Subversion verziót :-)).

Lejátszás vezérlése:

evPlay

Lejátszás elindítása.

evStop

Lejátszás megállítása.

evPause

evPrev

Az előző sávra ugrik a lejátszási listában.

evNext

ugrás a következő sávra a lejátszási listában.

evLoad

Fájl betöltése (a fájl böngésző ablak megnyitásával, ahol kiválaszthatod a fájlt).

evLoadPlay

Ugyan azt csinálja, mint az evLoad, de automatikusan elkezdi lejátszani a fájlt, miután betöltötte.

evLoadAudioFile

Audió fájl betöltése (a fájl választóval)

evLoadSubtitle

Felirat fájl betöltése (a fájl választóval)

evDropSubtitle

Aktuálisan használt felirat letiltása.

evPlaylist

Lejátszási lista ablak megnyitása/becsukása.

evPlayVCD

Megpróbálja megnyitni az adott CD-ROM meghajtóban lévő lemezt.

evPlayDVD

Megpróbálja megnyitni az adott DVD-ROM meghajtóban lévő lemezt.

evLoadURL

Megjeleníti az URL dialógus ablakot.

evPlaySwitchToPause

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).

evPauseSwitchToPlay

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:

evBackward10sec

Visszalépés 10 másodperccel.

evBackward1min

Visszalépés 1 perccel.

evBackward10min

Visszalépés 10 perccel.

evForward10sec

Előrelépés 10 másodperccel.

evForward1min

Előrelépés 1 perccel.

evForward10min

Előrelépés 10 perccel.

evSetMoviePosition

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:

evHalfSize

Film ablak méretének felezése.

evDoubleSize

Film ablak méretének duplázása.

evFullScreen

Teljes képernyős mód be-/kikapcsolása.

evNormalSize

Film ablak normál méretének beállítása.

evSetAspect

Audió vezérlés:

evDecVolume

Hangerő csökkentése.

evIncVolume

Hangerő növelése.

evSetVolume

Hangerő beállítása (potméter tudja használni; a potméter relatív értékét (0-100%) használja).

evMute

Hang ki-/bekapcsolása.

evSetBalance

Balansz beállítása (potméter tudja használni; a potméter relatív értékét (0-100%) használja).

evEqualizer

Equalizer be-/kikapcsolása.

Vegyes:

evAbout

Programinformációs ablak megnyitása.

evPreferences

Megnyitja a beállítások ablakot.

evSkinBrowser

Megnyitja a skin böngésző ablakot.

evIconify

Ablak összecsukása kis méretűvé.

evExit

Kilépés a programból.

B.5. Minőségi skin-ek készítése

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.