2.4. Enkódolás a MEncoderrel

2.4.1. Bevezető

A MEncoder (MPlayer's Movie Encoder) egy egyszerű film enkóder, az MPlayer által lejátszható formátumok (AVI/ASF/OGG/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.

2.4.2. Fordítás

Kész. Mint minden bizonnyal tudod, más enkódolóknak szükségük van az avifile könyvtárra. A MEncoder-nek egyáltalán nincs.

2.4.3. MEncoder funkciók

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

2, vagy 3 menetes enkódolás a libavcodec 2 menetes kódjával: Használata esetén elképzelhető, hogy az átlagos bitráta jobban fog közelíteni a megadotthoz, mint a DivX4-es módszer esetén.

2.4.3.2. Átméretezés

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.

Az átméretezést a 'scale' nevű video filter végzi: -vop scale=X:Y. A minőségét pedig az -sws opcióval lehet megadni (lásd a manpage-t). Alapértelmezett a 0 : gyors bilinear.

Használata :
    mencoder sample-svcd.mpg -divx4opts br=1300 -vop scale=640:480 -sws 2 -o output.avi

2.4.3.3. Stream másolása

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.

2.4.3.4. Hibás index-szel rendelkező AVI-k rendbehozása

A 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 -idx 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

Egy példa, MJPEG tömörítéssel:
    mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg

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

DivX4 film létrehozása néhány JPEG fileból :
  mencoder frame001.jpg,frame002.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

2.4.3.7 DVD feliratok VOBsub formátumúvá alakítása

A MEncoder képes DVD-ről kivonni a feliratot, és átalakítani Vobsub formátumú felirattá. Ezek egy .idx és egy .sub kiterjesztésű file-ból állnak, gyakran egyetlen .rar archívba tömörítve. Az MPlayer képes az ilyen feliratok megjelenítésére a -vobsub és -vobsubid opciókkal.

Az alap filenevet (tehát kiterjesztés nélkül) a -vobsubout opcióval adhatod meg. Az index számot amin el lesz tárolva a felirat, pedig a -vobsuboutindex opcióval.

Ha a bemeneti file nem DVD, használd az -ifo opciót, amivel megadhatod hogy melyik file legyen .idx-é alakítva.

Ha a bemeneti file nem DVD, de nincs meg hozzá az .ifo file, használd a -vobsubid opciót a használandó nyelv azonosítójának kiválasztásához.

Minden egyes futás hozzáfűzi a kimenetet az esetlegesen már létező kimeneti file-hoz, így ajánlott körülnézni indítás előtt.

Példák

Két felirat másolása DVD-ről, 3 menetes enkódolás közben
  rm subtitles.idx subtitles.sub
  mencoder -dvd 1 -vobsubout subtitles -vobsuboutindex 0 -sid 2 -o frameno.avi -ovc frameno
  mencoder -dvd 1 -oac copy -ovc divx4 -pass 1
  mencoder -dvd 1 -oac copy -ovc divx4 -pass 2 -vobsubout subtitles -vobsuboutindex 1 -sid 5

Francia nyelvű felirat másolása MPEG-ből
  rm subtitles.idx subtitles.sub
  mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles -vobsuboutindex 0 -vobsuboutid fr -sid 1

2.4.4 Opciók

A rendelkezésre álló összes opció listája példákkal együtt a manpage-ben található.