A MEncoder (MPlayer's Movie Encoder) egy egyszerű film enkóder, az MPlayer által lejátszható formátumok (AVI/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET) más - MPlayerrel lejátszható - formátumokba kódolására. Sokféle codec-kel tud enkódolni, például DivX4-gyel (1 vagy 2 menetes), a libavcodec-et alkotó codec-ekkel, audiot tekintve pedig PCM/MP3/VBR MP3 a választék. Rendelkezik továbbá stream másoló, és video átméretező képességgel.
lame
bináris nem elég. Mégvalami: minél kevesebb
optimalizációt használsz a lame fordításánál, annál jobb lesz a minősége.
A minőséget a fordítás utáni make test
paranccsal
ellenőrizheted. A kiírt számnak 30-nál kevesebbnek kell lennie.
Azért ne ess pánikba ha pl 400 fölötti értéket kapsz, nem
valószínű hogy hallod a különbséget. Jaigen, ha a fordítód nem tudja
a tesztet lefuttatni.. Nos, töröld már le azt a nyavajás GCC 2.96-ot.libjpeg
és libpng
-
lásd az Installálás
fejezetetKész. Mint minden bizonnyal tudod, más enkódolóknak szüksége van az avifile könyvtárra. A MEncoder-nek egyáltalán nincs.
-ofps
opcióval (hasznos ha 29.97fps-es
VOB-ot kódolsz 24fps-es AVI-ba)Tervezett funkciók :
2.4.3.1. 2, 3 menetes DivX4 enkódolása
2 menetes enkódolás : az elnevezés onnan jön, hogy ezzel a módszerrel a file kétszer lesz enkódolva. Az első menet néhány pár Mb-os ideiglenes (*.log) file-t hoz létre, amiket egyelőre nem szabad törölni (az AVI törölhető, ugyanolyan mintha -pass opciók nélkül keletkezett volna). A második menetben keletkezik a tényleges 2 menetes DivX, az ideiglenes file-ok adataiből. A keletkező file az egy menetesekhez képest sokkal jobb minőséggel és kisebb mérettel bír. Ha most hallassz erről először, jobb ha keresel a neten egy útmutatót.
A következő példa egy DVD 2 menetes DivX4 AVI-ba történő enkódolását
mutatja be. Csak két parancs szükséges :
rm frameno.avi
- töröld ezt a file-t,
ami egy esetleges előző 3 menetes enkódolásból származhat
mencoder -dvd 2 -divx4opts br=1100
-o movie.avi -pass 1
mencoder -dvd 2 -divx4opts br=1100
-o movie.avi -pass 2
3 menetes enkódolás : ez egyfajta bővített kétmenetes enkódolás. A különbség abban áll hogy itt az audio enkódolása külön menetben történik, ezáltal lehetővé válik annak megbecslése hogy az adott filmet milyen bitrátával kell tömöríteni hogy ráférjen egy 650, 700 vagy 800Mb-os CD-re, és ezt a MEncoder ki is számolja. Továbbá, ilyenkor az audio csak egyszer kerül enkódolásra, ellentétben a 2 menetes móddal. A használata a következő :
rm frameno.avi |
egy esetleges előző 3 menetes enkódolásból származó file törlése, mely konfliktolhat a most következővel |
mencoder <file/DVD> -ovc frameno -o
frameno.avi |
Első menet : egy csak audiot tartalmazó AVI file jön létre,
ami a kért formátumban tartalmazza az audio streamet. Ha akarod
használhatod a -lameopts opciót. Ha ez egy hosszabb film,
e menet végén a MEncoder kiírja hogy mekkora bitrate-tel tömöríts
a következő menetekben hogy a film ráférjen egy 650, 700 vagy 800Mb-os
CD-re. |
mencoder <file/DVD> -oac copy -pass 1
-divx4opts br=<bitrate> |
Második menet : alias a DivX4 video enkódolás első menete. Opcionálisan megadhatod azt a bitrate-et amit a MEncoder az előző menet végén kiírt, lásd feljebb. |
mencoder <file/DVD> -oac copy -pass 2
-divx4opts br=<bitrate> |
Harmadik menet : alias a DivX4 video enkódolás második menete.
Opcionálisan megadhatod azt a bitrate-et amit a MEncoder az előző
menet végén kiírt, lásd feljebb. Ebben a menetben a
frameno.avi -ban levő audio belekerül a célfileba..
és kész is az egész! |
Példa a 3 menetes enkódolásra :
rm frameno.avi
- esetlegesen egy előző
enkódolásbol származó file törlése (bezavar a most következőnek)
mencoder -dvd 2 -ovc frameno
-o frameno.avi
mencoder -dvd 2
-divx4opts br=1100 -oac copy -o movie.avi -pass 1
mencoder -dvd 2 -divx4opts
br=1100 -oac copy -o movie.avi -pass 2
Gyakran előjön a filmek átméretezésének igénye. Ennek oka sokféle lehet, például a fileméret csökkentése, vagy SVCD-ből DivX-be kódolás. A rippelt DVD-ket legtöbbször átméretezik (például egy 4:3-as DVD-t 640x480-ra), különösen akkor ha a cél az 1 CD-s méret és ezzel együtt a jó minőség is. Az SVCD-k képmérete 480x480, és a lejátszóprogramok az ezen fileok fejlécében található aspektusinformáció alapján számítják ki a megjelenítendő kép méretét (pl.: 480x480 + 4:3 = 640x480). Ezért AVI (DivX) file-okba történő kódolásnál figyelembe kell venni azt is, hogy az AVI file-ok ezen információ eltárolására nem képesek. Így az egyetlen megoldás az átméretezés.
A MEncoder képes nagyításra, ha a képeket YV12 formátumban kapja
(azaz például az ffdivx, odivx meghajtókkal, vagy mpeg1/2-t). A kimeneti file
képméretét az -x
és -y
opciókkal lehet megadni.
Ezenkívül 3 féle átméretezőszűrő közül is lehet választani, 0 : gyors
bilinear, 1 : bilinear, 2 : bicubic (ennek van a legjobb
minősége). Ezt az -sws
opcióval lehet megadni. Alapértelmezett
a 0 : gyors bilinear.
Az átméretezés egyszerű :
mencoder sample-svcd.mpg -divx4opts br=1300 -x 640 -y 480 -sws 2 -o output.avi
A MEncoder kétféleképpen tudja a bemeneti stream-eket kezelni : enkódolja vagy csak átmásolja őket. Ez a rész a másolásról szól.
-ovc copy
opció) : érdekes dolgokat
lehet vele csinálni :)-oac copy
opció) : egyértelmű.
Lehetséges az audio streamet egy külső fileból (MP3, AC3, Vorbis) is venni,
ehhez az -audiofile <filenév>
opciót kell használni.2.4.3.4. Hibás index-szel rendelkező AVI-k rendbehozása
Legkönnyebb dolog a világon. Egyszerűen átmásoljuk a video és audio streameket, és közben a MEncoder létrehozza a megfelelő indexet is. Ez persze nem tudja kijavítani az esetleges hibákat a video és/vagy audio stream-ekben, viszont a hibásan interleave-elt fileokat igen.
A parancs : mencoder input.avi -ovc copy -oac copy -o output.avi
2.4.3.5. Enkódolás a libavcodec codec-ekkel
A libavcodec-kel egyszerűen lehet kódolni jónéhány érdekes video és audio formátumba (jelenleg az audio codec-ek nem támogatottak). A következő codec-ekkel lehet enkódolni :
Az első oszlopban felsorolt codec-eket kell átadni a
vcodec
opciónak, pl : -lavcopts vcodec=msmpeg4
2.4.3.6. Enkódolás több bemeneti file-ból (JPEG, PNG)
A MEncoder képes több JPEG vagy PNG file-ból filmet létrehozni. Egyszerű framecopy használatával pedig MJPEG (Motion JPEG) vagy MPNG (Motion PNG) filmek hozhatók létre.
A folyamat magyarázata
Először a MEncoder dekódolja a bemeneti fileokat a
libjpeg
segítségével (PNG-k dekódolását a libpngvel végzi).
A MEncoder ezután a kiválasztott kimeneti codecnek adja a dekódolt képet (pl DivX4, Xvid, ffmpeg msmpeg4, stb). Vigyázat: a PNG dekóder jelenleg csak RGB formátumú képek kiadására képes, így nem használható olyan codecekkel amelyek YUV formátumot várnak. Ilyen például a DivX4, vagy az ffmpeg-beli msmpeg4.
Példák
Az -mf
opció magyarázata a lenti összefoglaló
Opciók fejezetben, illetve a manpage-ben található.
DivX4 film létrehozása az aktuális könyvtárban található összes JPEG fileból :
mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o
kimenet.avi
MJPEG (Motion JPEG) film létrehozása az aktuális könyvtárban található összes JPEG fileból :
mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc copy
-o kimenet.avi
Tömörítetlen film létrehozása az aktuális könyvtárban található összes PNG fileból :
mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc raw -o
kimenet.avi
MPNG (Motion PNG) film létrehozása az aktuális könyvtárban található összes PNG fileból :
mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc copy
-o kimenet.avi
mencoder [opciók] [bemeneti file] [opciók] ...
Megj.: az összes rendelkezésre álló opcióhoz olvasd el a manpage-t !
Tekintve hogy a MEncoder alapjában véve ugyanarra a kódra épül amire
az MPlayer, sok olyan MPlayer opció van ami enkódolásnál is
használható. Például a -sid
itt arra használható hogy a DVD
feliratokat bekódold a keletkező AVI-ba. Vagy a -noidx
opcióval
itt is figyelmen kívül hagyható az esetleges hibás index a bemeneti AVI-ban.
-ss időpont | enkódolás indítása a megadott időponttól (csak keyframe-től indulhat !) |
-endpos időpont/időtartam | enkódolás megállítása a megadott idő letelte után, vagy adott időpont elérésekor. Lásd a manpage-t ! |
-o filenév | kimeneti filenév megadása |
-x szélesség pixelben | kimeneti video átméretezése megadott szélességre |
-y magasság pixelben | kimeneti video átméretezése megadott magasságúra |
-sws 0-2 |
átmérezetési módszer meghatározása 0 - fast bilinear 1 - bilinear 2 - bicubic (legjobb minőség) |
-ovc codecnév |
Enkódolás a megadott codec-kel (a codec nevek a codecs.conf-ból származnak). Példák : help - codecek listája null - a kimeneti AVI-ban nem lesz video stream raw - tömörítetlen video létrehozása rawrgb - ? copy - nincs enkódolás, csak stream másolás (most csak AVI/ASF-ből) divx4 - enkódolás DivX4-be lavc - enkódolás egy libavcodec-ben lévő codec-kel vfw - enkódolás egy Windows-os DLL-lel |
-oac codecnév |
Enkódolás a megadott codec-kel (a codec nevek a codecs.conf-ból származnak). Példák : help - codecek listája copy - nincs enkódolás, csak stream másolás (most csak AVI/ASF-ből, és csak CBR audiot) pcm - tömörítetlen PCM mp3lame - MP3 enkódolás |
-divx4opts |
Ha DivX4-be enkódolsz, itt megadhatod a paramétereket, pl :-divx4opts br=1800:deinterlace:key=250 Leghasznosabb opciók: (a teljes lista a manpage-ban található !) help - segíccség br=XXX - bitráta megadása kbit-ben <4-16000> vagy bitben <16001-24000000> q=XXXX - minőség (1-leggyorsabb, 5-legjobb - alapértelmezett) key=XXXX - keyframe-k közötti időintervallum |
-lavcopts |
Ha egy libavcodec-es codec-kel enkódolsz, itt megadhatod a paramétereket, pl :-lavcopts vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250 Leghasznosabb opciók: (a teljes lista a manpage-ban található !) help - segíccség vcodec=XXX - video codec kiválasztása (a teljes lista a fenti libavcodec bekezdésben megtalálható) vbitrate=XXX - bitráta megadása kbit-ben <4-16000> vagy bitben <16001-24000000> vhq - legjobb minőség (?) keyint=XXX - keyframe-k közötti időintervallum |
-lameopts |
Ha MP3-ba kódolsz, itt adhatod meg a paramétereket, pl :-lameopts q=3 -lameopts br=192:cbr Leghasznosabb opciók: (a teljes lista a manpage-ban található !) help - törpítség cbr - CBR-es MP3 kiválasztása (az alapértelmezett a VBR) br=XXX - bitráta megadása kbit-ben <0-1024> (csak CBR-nél!) q=XXXX - minőség (0-legjobb, 9-leggyorsabb) (csak VBR-nél!) |
A MEncoder használata a legkönnyebb dolog a Földön.
A DVD 2-es fejezetének enkódolása :
mencoder -dvd 2 -o title2.avi
Ugyanez libavcodec-kel, MJPEG tömörítéssel :
mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg
A DVD 2-es fejezetének enkódolása, átméretezéssel :
mencoder -dvd 2 -x 640 -y 480 -sws 2 -o title2.avi
Enkódolás HTTP-ről :
mencoder http://mplayer.hq/example.avi -o example.avi
Enkódolás standard bemenetről :
rar p test-SVCD.rar | mencoder -divx4opts br=800 -ofps 24 -pass 1 -- -
Több VOB file enkódolása :
cat *.vob | mencoder <options> -
Enkódolás tuner-ről (a tuner opciók a TV input fejezetben találhatóak) :
mencoder -tv on:driver=v4l:width=640:height=480 <options>
Az összes opció listájához lásd a MEncoder manpage-t !