Kódolás a <application>MEncoder</application>rel 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 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. 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). 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 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 movie.avi mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi audió sáv kódolása Egy DVD két menetes kódolása MPEG-4 ("DivX") AVI-ba az audió sáv MP3-ba alakításával. mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac mp3lame -lameopts vbr=3 -o movie.avi mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac mp3lame -lameopts vbr=3 -o movie.avi Kódolás MPEG formátumba A MEncoder létre készíteni MPEG (MPEG-PS) formátumú kimeneti fájlokat. Valószínűleg csak a libavcodec mpeg1video codec-jével hasznos ez, mert a lejátszók - az MPlayer kivételével - MPEG-1 videó és MPEG-1 layer 2 (MP2) audió folyamokra számítanak az MPEG fájlokban. Ez a tulajdonság jelenleg nem túl hasznos, emellett valószínűleg tele van hibával, de fontos, mert a MEncoder jelenleg nem tud MPEG-1 layer 2 (MP2) audióba kódolni, amit minden más lejátszó vár az MPEG fájlokban. A MEncoder kimeneti fájl formátumának megváltoztatásához használd a kapcsolót. Példa: mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy egyéb_kapcsolók media.avi -o output.mpg 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: . A minősége beállítható a kapcsolóval. Ha ez nincs megadva, akkor a MEncoder a 2: bicubic-et használja. Használat: mencoder input.mpg -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480 -o output.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 ( 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 ( kapcsoló): őszintén szólva... Bele lehet mixelni egy külső audió fájlt (MP3, WAV) a kimeneti stream-be. Használd a kapcsolót ehhez. Kódolás a <systemitem class="library">libavcodec</systemitem> 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): Codec neveLeírás mjpeg Motion JPEG ljpeg Veszteségmentes JPEG h263 H.263 h263p H.263+ mpeg4 ISO szabvány MPEG-4 (DivX 5, XVID kompatibilis) msmpeg4 Szabvány előtti MPEG-4 variáns az MS-től, v3 (AKA DivX3) msmpeg4v2 Szabvány előtti MPEG-4 az MS-től, v2 (régi asf fájlokban használják) wmv1 Windows Media Video, 1-es verzió (AKA WMV7) wmv2 Windows Media Video, 2-es verzió (AKA WMV8) rv10 egy régi RealVideo codec mpeg1video MPEG-1 videó mpeg2video MPEG-2 videó huffyuv veszteségmentes tömörítés asv1 ASUS Video v1 asv2 ASUS Video v2 ffv1 az FFmpeg veszteségmentes videó codec-je Az első oszlop a codec neveket tartalmazza, amit a vcodec opció után kell megadni, például: Egy példa MJPEG tömörítéssel: mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copy Kódolás több bemeneti képfájlból (JPEG, PNG, TGA, SGI) A MEncoder képes egy vagy több JPEG, PNG vagy TGA fá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: A MEncoder dekódolja a bemeneti képe(ke)t a libjpeg-gel (ha PNG-ket dekódol, akkor a libpng-vel). 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 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 -oac copy -o output.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 -oac copy -o output.avi 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 output.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:// -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o output.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 output.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 output.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 és a kapcsolókkal. Meg kell adnod a kimeneti fájlok fájlnevét (az .idx vagy .sub kiterjesztés nélkül) a kapcsolóval és az ezen felirathoz tartozó indexet a kimeneti fájlokban a -szel. Ha a bemenet nem DVD, akkor a 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 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: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 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 nincs olyan videó lejátszó, mely az MPEG-4 ezen attribútumát támogatná, kivéve az MPlayert. 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ó 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 -ovc lavc -lavcopts vcodec=mpeg4:autoaspect -vf crop=714:548:0:14 -oac copy -o output.avi 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 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? A másik kérdés: "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. Konstant kvantálás vs. két menet Három féle megközelítése van egy videó kódolásának: konstans bitráta (CBR), konstans kvantálás, és két lépéses kódolás (ABR vagy átlagos bitráta). Ezen módok mindegyikében 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 libavcodec á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 libavcodec 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 libavcodec a lehető legalacsonyabb kvantálást fogja használni minden egyes macroblock-hoz (amint ez a -ben meg van adva, ami alapértelmezésként 2). Amint előírsz egy megfelelően alacsony bitrátát, ami a libavcodecet 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 libavcodec ugyan azt a kvantálót használja, amit a kapcsolóval megadtál, 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 kapcsolót. Ez ugyan azt a bitrátát és PSNR-t (peak signal-to-noise ratio) szolgáltatja, mint a CBR a =végtelen kapcsolóval és a alapértelmezett 2-es -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 kis részletességű jeleneteknél magasabb kvantálót használ, lassú mozgásnál vagy nagy részletességű jeleneteknél alacsonyabbat. Ha használod a kapcsolót, akkor biteket pazarolsz. Ha a kapcsolót adod meg, akkor nem a legjobb minőségű rip-et kapod. Tegyük fel, hogy egy DVD-t rip-elsz -mal, és az eredmény 1800Kbit. Ha két lépéses kódolást csinálsz 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. 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ájlmé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 ronthatják a minőséget. Az MPEG-típusú tömörítés szintén 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: 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. 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. 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. 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! L L L L L L L L C C C C L L L L L L L L L L L L L L L L C C C C L L L L L L L L 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: Felső mező Alsó mező L L L L L L L L C C C C L L L L L L L L L L L L L L L L C C C C L L L L L L L L L L L L L L L L C C C C L L L L L L L L L L L L L L L L C C C C L L L L L L L L 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 (). Futtasd az MPlayert a 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 rétékeket az MPlayerrel, felhasználva a által kiírt parancssort és állíts a téglalapon, ha szükséges. A 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 szűrőnek, hogy ezt az egészet megcsinálja helyetted, mivel van egy opcionális 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 -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. 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 mind a bitrátától mind 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. Egy 0,18 alatti CQ általában nagyon kockás képet eredményez, mert nincs elég bit minden egyes macroblokk 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. 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 pazarlni fogod a biteket észrevehető minőségi nyereség nélkül. 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 AC3 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 AC3 áteresztéshez, nem jelenti azt, hogy holnap sem lesz. Készíts a jövőben is használható DVD rip-eket az AC3 stream megtartásával. Megtarthatod az AC3 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 AC3 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. 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. 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 frame rá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 szűrőt a kapcsolóval. Szűrés Á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. . 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 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, rontod a kép láthatóságát. A fent javasolt értékek () eléggé konzervatívak; kísérletezz szabadon nagyobb értékekkel és ellenőrizd az eredményeket magad. 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 , és . 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 a libavcodec még nem támogatja a zárt GOP-ot (a opció még nem igazán működik), így a DivX5 nem fog tudni visszakódolni semmit sem, ami B-kockákkal lett elkódolva. vb_strategy=1: segít a gyors mozgású jeleneteknél. vmax_b_frames >= 2 szükséges. 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 (+20% 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. 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 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 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 vagy a . 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), 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 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 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 -vf crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \ -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 \ -o Harry_Potter_2.avi A második lépés ugyan ez, csak megadjuk a -t: mencoder dvd://1 -ofps 24000/1001 -oac copy -vf crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \ -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=2 \ -o Harry_Potter_2.avi A 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 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 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 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 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 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, Matroska vagy a NUT. A MEncoder jelenleg csak MPEG és AVI konténer formátumokba tud 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). 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 index-re. 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: 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. 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 AC3. 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. 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 grafiksu 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. Kódolás az <systemitem class="library">x264</systemitem> 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. Milyen opciókat kell használhom a legjobb eredményhez? 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. Három fő szempontot kell megfontolni, amikor kódolási opciókat választasz: A kódolási idő vs. minőség kérdés Képkocka típusra vonatkozó döntések Ráta és kvantálási tulajdonságokkal kapcsolatos döntések Ez a leírás leginkább az első kérdéssel foglalkozik. A másik két típus gyakran a személyes beállítottságtól és egyéni igényektől függ. Mielőtt folytatnád, kérlek vedd figyelembe, 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 , ha megadod neki a 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 pluszba, 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 bizonytalan, mert 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ég változás a megváltozott opciók miatt következett-e be vagy az elért bitráta különbségből adódik. Azon opciók, amik segítségével a sebesség kárára javíthatod a minőséget, a és a 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 és a opciók elég erőteljes kölcsönhatásban vannak. A tapasztalatok szerint egy referencia kockával a kb. 35%-kal több időt kíván, mint a . 6 referencia kockával az igény 60% fölé megy. A hatása a PSNR-re elég egyenletes, a referencia kockák számától függetlenül. Általában a 0.2-0.5 dB hasznot hoz a globális PSNR szempontjából a -hez képest. Ez már látható különbség. Az x264 kódolási opciói frameref: A alapértéke 1, de ez nem jelenti azt, hogy jó dolog 1-re állítani. Pusztán a 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 0.25dB PSNR-t hoz a -hez képest, ami látható különbség. A kb. 15%-kal lassabb a -nél. Ezután sajnos gyorsan jön a csökkenés. A valószínűleg csak 0.05-0.1 dB pluszt jelent a -hoz képest, további 15% sebességveszteség mellett. 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 a globális PSNR-t csekély 0.02dB-vel javítja a -hoz képest, 15%-20% sebességveszteség árán. Az ilyen magas értékeknél az egyedüli igazán jó dolog, amit mondhatunk, hogy a további növelés majdnem biztosan soha sem árt a PSNR-nek, de a minőségi javulás szinte alig mérhető és nem is észrevehető. Megjegyzés: A 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 "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 és é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 különböző értékei alkalmanként befolyásolhatják a frametype 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 -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 -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. bframes: A B-kockák haszna megkérdőjelezhető a legtöbb, eddig használt codec esetében. 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 megemlíteni, hogy ha kikapcsolod az adaptív B-kocka döntést (), a -szel történő kódolás általában valamivel gyorsít a kódolási folyamaton. Az adaptív B-kocka döntés kikapcsolásával ( opciója), ezen beállítás optimális értéke általában a és tartományba esik. Ha az adaptív B-kocka döntés be van kapcsolva (alapértelmezett tulajdonság), akkor nyugodtan használhatsz magasabb értékeket is; a kódoló megpróbálja csökkenteni a B-kockák használatát azokban a jelenetekben, ahol ronthatják a tömörítést. Ha használni akarod a -t, gondolkodj el a B-kockák maximális számának 2-re vagy nagyobbra állításán, hogy kihasználd a súlyozott jóslás előnyét. b_adapt: Megjegyzés: Ez alapértelmezetten be van kapcsolva. Ezzel az opcióval a kódoló egy egyszerű heurisztikát 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 -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 -nak és a -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 ésszerűbben-méretezett B-kockákkal történő lecserélése. A kódolási időben jelentkező plusz ráfordítás minimálisnak tűnik, ha van egyáltalán. 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 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. deblockalpha, deblockbeta: 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 és a paraméterekkel 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 kapcsolóval. A -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. Mit kezdjünk a telecine-nel és az átlapolással NTSC DVD-ken Bevezetés Mi az a telecine? Gondolom azért kerested meg ezt a részt, mert nem sok mindent értesz abból, ami ebben a dokumentumban le van írva: http://www.divx.com/support/guides/guide.php?gid=10 Ez az URL 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 belinkeltet 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 verziói é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. helytelen. használandó helyette. Hogyan használják a telecine-t. 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 az 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 dokumentum célkitűzései közé. Sok megjegyzés vonatkozik erre a leírásra, melyek így vannak jelölve: [1] Hogyan állapítható meg egy videó típusa 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 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. 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: mplayer dvd://1 Menj egy mozgást ábrázoló részhez. Használd a . gombot az egy képkockával történő előreléptetéshez. 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"-nak 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. Á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. 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. 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. 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. 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 . Egyébként a MEncoder 30000/1001 fps-sel és duplikált képkockákkal próbál kódolni. mencoder dvd://1 -nosound -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]. 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 le van írva a kevert progresszív és telecine részben. Á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). 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: és . Az 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 NEM kell. mencoder dvd://1 -nosound -ovc lavc -lavcopts ildct:ilme:mbd=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 kimenetét, hogy megtudd, mit használhatsz (grep-pelj a "deint"-re), é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 deinterlacing-et a vágás után [1] és a méretezés előtt kell elvégezni. mencoder dvd://1 -nosound -vf pp=lb -ovc lavc Sajnos ez a kapcsoló hibás a MEncoderben; talán a MEncoder G2-vel működni fog, de itt most még nem. Belefuthatsz fagyásokba. Egyébként a 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 -eket használsz, mind a -nek, mind a -nek az eredeti forrásod framerátájának kétszeresét kell megadnod. mencoder dvd://1 -nosound -vf tfields=2 -ovc lavc -fps 60000/1001 -ofps 60000/1001 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. Az helyes eljárás a 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 -nosound -vf field=0 -ovc lavc 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 kell ide, mert a kimeneti videó 24000/1001 képkocka per másodperc sebességű lesz. A 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 -ot a szűrőnek kell követnie, különben a MEncoder összeomlik. Ennek ellenére a 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 -nosound -vf pullup,softskip -ovc lavc -ofps 24000/1001 A másik 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 vagy követi, a végső eredmény teljesen progresszív lesz. A kapcsolót meg kell adni. mencoder dvd://1 -nosound -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001 Én magam nem használtam a -et, de álljon itt D Richard Felker III hozzászólása:
Rendben, de IMO inkább deinterlace-t próbálj a túl gyakori inverz telecine helyett (inkább settop DVD lejátszók & progresszív TV-k) ami csúnya vibrálást és egyéb jelenségeket okoz. Ha használni akarod, el kell töltened egy kis időt az opciók próbálgatásával és az eredmény megfigyelésével, hogy biztos légy benne, nem rontja el az egészet.
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 kattanó "visszaugrás az időben" egy olyan effektud, ami nagyon rosszul néz ki. Ha mégis kísérletezel ezzel, használnod kell egy deinterlacing szűrőt, mint pl. az vagy az . 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.
Lábjegyzet 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 jó de a 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 átlapolt) videónál mindig négy többszörösével kell vágnod, hacsak nem használod a -et a vágás előtt. A kódolási paraméterekről és a minőségről: Csak mert itt javasoltam az -t, nem jelenti azt, hogy máshol ne lehetne használni. A -lel együtt az 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. A pullup teljesítményéről: Bátran használhatod a -ot (a pel 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ényveszteség kicsi az esetek többségében. Nagyon ritka kódolási esetekben a a MEncoder 50%-os lassulását okozhatja. A zenefeldolgozás hozzáadása és a fejlett háttérbe szorítja ezt a különbséget, a miatti teljesítményromlást 2%-ra csökkentve.