7 Enkódolás a MEncoderrel

A rendelkezésre álló opciók és példák teljes listáját lásd a man page-ben. Számos példa áll rendelkezésre a különböző opciókról a tech/encoding-tips.txt file-ban. Ezek a példák az mplayer-users levelezési listáról lettek kigyűjtve, így érdemes lehet ezen lista archívumát böngészgetni infóért.

7.1 2, 3 menetes MPEG4 ("DivX") 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 MPEG4 ("DivX") 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 -ovc lavc -lavcopts vcodec=mpeg4:opciók -oac copy -o film.avi -pass 1
    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:opciók -oac copy -o film.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ő:

  1. egy esetleges előző 3 menetes enkódolásból származó file törlése, mely konfliktolhat a most következővel

    rm frameno.avi

  2. Első menet:

    mencoder <file/DVD> -ovc frameno -oac mp3lame -lameopts vbr=3:opciók -o frameno.avi

    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.

  3. Második menet:

    mencoder <file/DVD> -oac copy -pass 1 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=<bitráta>

    Alias az MPEG4 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.

  4. Harmadik menet:

    mencoder <file/DVD> -oac copy -pass 2 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=<bitráta>

    Alias az MPEG4 video enkódolás második menete. Add meg 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 -oac mp3lame -lameopts vbr=3:opciók
    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1100 -oac copy -o movie.avi -pass 1
    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1100 -oac copy -o movie.avi -pass 2

7.2 Enkódolás MPEG formátumba

A MEncoder képes MPEG (MPEG-PS) formátumú kimeneti file-t generálni. Ez persze valószínűleg csak a libavcodec mpeg1video codec-ével hasznos, mert (az MPlayer-t kivéve) minden lejátszó MPEG1 video, és MPEG1 layer2 (MP2) audio stream-re számít az MPEG file-okban.

A MEncoder ezen képessége jelenleg nem túl hasznos, mert - attól eltekintve hogy még eléggé bugos is -, még nem lehet MPEG 1 layer 2 (MP2) audio-ba enkódolni MEncoderen belül, márpedig az MPEG file-okba az esetek 99%-ában ez kell.

A MEncoder kimeneti formátumának megváltoztatására az -of mpeg opció szolgál.

Példa:
  mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy <other options> media.avi -o output.mpg

7.3 Filmek átméretezése

Gyakran előjön a filmek átméretezésének igénye. Ennek sok oka lehet, például a fileméret csökkentése, illetve a szükséges hálózati sávszélesség csökkentése. A legtöbb ember átméretezést hajt végre DVD-k vagy SVCD-k DivX AVI-ba történő konvertálása során. Ez helytelen. Mielőtt te is ilyen megoldásra vetemednél, olvasd el az Aspect ratio megőrzése fejezetet.

Az átméretezést a 'scale' nevű video filter végzi: -vf 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 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1300 -vf scale=640:480 -oac copy -o output.avi

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

7.5 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

7.5.1 Több AVI file összefűzése

Az index javító funkció mellékhatásként megoldást jelent AVI-k összefűzésére is:

Parancs: cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o kimenet.avi -

Megjegyzés: Az 1.avi és 2.avi file-ok azonos codec-kel, felbontással, frame rate-tel kell rendelkeznie, és az 1.avi-nak nem szabad hibásnak lennie. A hibás file-ok javításának folyamata a 7.5-ös fejezetben van leírva.

7.6 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 -oac copy

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

Példák

Az -mf opció magyarázata a manpage-ben található.

DivX4 film létrehozása az aktuális könyvtárban található összes JPEG fileból:
  mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o kimenet.avi \*.jpg

DivX4 film létrehozása néhány JPEG fileból:
  mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o kimenet.avi frame001.jpg,frame002.jpg

MJPEG (Motion JPEG) film létrehozása az aktuális könyvtárban található összes JPEG fileból:
  mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o kimenet.avi \*.jpg

Tömörítetlen film létrehozása az aktuális könyvtárban található összes PNG fileból:
  mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb -o kimenet.avi \*.png

Megjegyzés: a szélességnek 4-gyel oszthatónak kell lennie, ez a RAW RGB AVI formátum egyik megkötése.

MPNG (Motion PNG) film létrehozása az aktuális könyvtárban található összes PNG fileból:
  mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy -o kimenet.avi \*.png

7.8 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 -oac mp3lame -lameopts vbr=3
  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

7.9 Aspect ratio megőrzése

A DVD-k és az SVCD-k (tehát az MPEG1/2 file-ok) tartalmazzák azt az értéket amiből a lejátszó tudni fogja merre és mennyire kell a képet széthúzni, hogy ne tojásfejű emberek ugráljanak a képen (például: 480x480 + 4:3 = 640x480). Viszont amikor az ilyen file-okat AVI-ba (DivX) konvertáljuk, szembe találjuk magunkat a problémával miszerint az AVI formátum nem képes ezt az értéket (aspect ratio) eltárolni. A filmek felbontásának átméretezése undorító, és időigényes feladat, kell hát legyen egy jobb megoldás!

Van is.

Az MPEG4 formátumnak egyik egyedülálló tulajdonsága, hogy beleírható az aspect ratio értéke (csakúgy mint az MPEG1/2, illetve H263 file-oknál). Ennek egyetlen hátulütője, hogy jelenleg az MPlayer az egyetlen lejátszó amelynek megvan ez a képessége.

A használata csakis a libavcodec mpeg4 codec-ével lehetséges.

Semmiképpen ne felejtsd el levágni a film tetejéről és aljáról a fekete sávokat. Olvasd el a manpage-ben, hogy hogyan kell használni a cropdetect és a crop filtereket.

Használata:

$ mencoder sample-svcd.mpg -ovc lavc -lavcopts vcodec=mpeg4:autoaspect -vf crop=714:548:0:14 -oac copy -o output.avi

7.10 Saját inter/intra mátrixok

A libavcodec ezen képességének kihasználásával be lehet állítani saját inter (I, azaz kulcs képkockák), és intra (P képkockák) mátrixok használatát. Sok codec támogatja, amik közül az mpeg1video és az mpeg2video bizonyosan működik.

A funkció tipikusan a KVCD specifikációhoz illeszkedő mátrixok beállítására használható.

A KVCD "Notch" Quantization Matrix:

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álata:

$ mencoder bemenet.avi -o kimenet.avi -oac copy -ovc lavc -lavcopts inter_matrix=...:intra_matrix=...

$ mencoder bemenet.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