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

## 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 neve | Leírás
--- | ---
mp3lame | kódol VBR, ABR vagy CBR MP3-at LAME-mel
lavc | a libavcodec egyik audió codec-jét használja
faac | FAAC AAC audió kódoló
toolame | MPEG Audio Layer 2 kódoló
twolame | tooLAME alapú MPEG Audio Layer 2 kódoló
pcm | tömörítetlen PCM audió
copy | nem kódol újra, csak másolja a tömörített kockákat

Videó codec-ek:

Videó codec neve | Leírás
--- | ---
lavc | a libavcodec egyik videó codec-jét használja
xvid | Xvid, MPEG-4 Advanced Simple Profile (ASP) codec
x264 | x264, MPEG-4 Advanced Video Coding (AVC), AKA H.264 codec
nuv | nuppel video, néhány realtime alkalmazás használja
raw | tömörítetlen videó képkockák
copy | nem kódol újra, csak másolja a tömörített kockákat
frameno | a 3-lépéses kódolásban használatos (nem javasolt)

A kimeneti konténer formátumokat a `-of` kapcsolóval választhatod ki. Írd be:

    mencoder -of help

a gépeden lévő MEncoder által támogatott konténerek kilistázásához. A következő választások érhetőek el:

Konténer formátumok:

Konténer formátum neve | Leírás
--- | ---
lavf | a libavformat által támogatott valamelyik konténer
avi | Audio-Video Interleaved
mpeg | MPEG-1 és MPEG-2 PS
rawvideo | nyers videó folyam (nincs keverés - csak egy videó folyam)
rawaudio | nyers audió folyam (nincs keverés - csak egy audió folyam)

Az AVI konténer a MEncoder natív konténer formátuma, ami azt jelenti, hogy ezt kezeli a legjobban és hogy a MEncoder ehhez lett tervezve. Amint fentebb megemlítettük, más konténer formátumok is használhatóak, de problémákba ütközhetsz a használatuk során.

libavformat konténerek:

Ha a libavformat-ot választottad a kimeneti fájl keveréséhez (a `-of lavf` használatával), a megfelelő konténer formátum a kimeneti fájl kiterjesztése alapján kerül megállapításra. Egy meghatározott konténer formátumot a libavformat `format` kapcsolójával írhatsz elő.

libavformat konténer neve | Leírás
--- | ---
mpg | MPEG-1 és MPEG-2 PS
asf | Advanced Streaming Format
avi | Audio-Video Interleaved
wav | Waveform Audio
swf | Macromedia Flash
flv | Macromedia Flash video
rm | RealMedia
au | SUN AU
nut | NUT nyílt konténer (kísérleti és még nem a specifikációnak megfelelő)
mov | QuickTime
mp4 | MPEG-4 formátum
dv | Sony Digital Video konténer
mkv | Matroska nyílt audió/videó konténer

Amint láthatod, a libavformat elég sok konténer formátumba engedélyezi a keverést a MEncoder-nek. Sajnos mivel a MEncoder nem úgy lett tervezve a kezdetektől, hogy az AVI-tól különböző konténer formátumokat is támogassa, izgulhatsz a kimeneti fájl miatt. Kérjük ellenőrizd, hogy az audió/videó szinkron rendben van-e és hogy a fájl lejátszható-e más lejátszókkal is az MPlayer-en kívül.

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

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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