I. Szükséges eszközök (1-2 link csak pár napig fog élni): AviSynth 2.6, AviSynth külső pluginjaim, MeGUI csomag, Audacity 2.0.5, FFmpeg kiegészítő Audacityhez
II. Magyarázat
- AviSynth: Egy ingyenes videószerkesztő eszköz, ennek segítségével manipuláljuk a videókat. Nincs hozzá felhasználói felület, hanem szöveges fájlokat (scripteket) írunk hozzá, vagyis programozunk.
- AviSynth pluginok: Belső és külső pluginokból, függvényekből építjük fel a scripteket. Ezek szolgálnak a videó direkt kezelésére: betöltésére, átméretezésére, javítására stb… Ha egy általános programozási függvény ismeretlen számodra, akkor szólj, most nem térek ki rá. Ami a lényeg, hogy a beírt kódok beírási sorban hajtódnak végre, tehát nem mindegy milyen sorrendben írod őket.
- MeGUI: AviSynth és egyéb segédeszközök használatával próbálja a felhasználók dolgát leegyszerűsíteni, hogy ő maga is generál egy AviSynth scriptet egy videó betöltésénél, segíthet a videó vágásban (nem, nem használjuk). Sajnos elég limitált, a jelen esetben sem működne. Azonban előnye, hogy vizuálisan meg tudja jeleníteni az AviSynth scripteket és leegyszerűsíti a videók kódolásának elindítását. Tervezem lecserélni mondjuk az egész MeGUIt, de ahhoz a saját progimat kellene fejlesztenem xD
- Audacity: Azt hiszem mondhatom, hogy a legértelmesebb ingyenes hangszerkesztő szoftver. Hang konvertálásokra jó lesz.
III. Programok felkészítése
1. Telepítsd fel AviSynth-ot.
2. AviSynth telepítési főmappájában található a plugins mappa, abba másold bele a külső plugin fájlokat. Pár fájl már van ott, megkérdezi h felülírod-e őket. Mivel ugyanazok, ezért teljesen mindegy
3. MeGUI-t csomagold ki egy olyan helyre, ahol nem fog zavarni.
4. Telepítsd fel Audacity-t.
5. Csomagold ki az FFmpeg kiegészítőt egy olyan helyre, ahol nem fog zavarni.
6. Add hozzá az FFmpeg kiegészítőt az Audacityhez.
- Nyisd meg Audacity-t.
- Edit → Preferences menüpontra katt.
- A bejövő ablak bal oldalsó sávjában Libraries menüpontra katt.
- A jobb oldalon az FFmpeg résznél a Locate… gombra katt és tallózd be a kiegészítőben az avformat-52.dll fájlt.
- Ha már ott vagy: Bal sávon Import/Export-ra katt és a Show Metadata Editor szöveg elől vedd ki a pipát.
- OKézhatod az ablakot.
IV. AviSynth script megírása
1. Előkészületek
- Hozz létre egy .avs kiterjesztésű fájlt (elvileg van “AviSynth Script” a jobbkatt → új menüben, de ha nem, akkor txt-t nevezz át avs-re) és nyisd meg szövegszerkesztővel. Ezt fogod szerkeszteni végig.
- Nevezd át a ts videót, ne legyen benne japán karakter. Ékezetes betűk elfogadhatók, de nem javasoltak.
- Bár most nem fontos, de megjegyzem, hogy célszerű szóközök nélküli elérési útvonalat és fájlnevet adni, mert előfordulhatnak olyan scriptek, amik nem figyelnek a szóközre.
[spoiler]2. Betöltés: Természetesen a videófájl betöltésével kell kezdeni. Minden formátumnak megvan a maga betöltőpluginja, úgyhogy már itt bonyolódik a helyzetünk.
A TS-ed MPEG2-es (reméltem is), amihez az Mpeg2Source a legjobb betöltő. Azonban a betöltők nagy része indexfájlt használ (Aegisub is emiatt indexel), és jelen esetben azt manuálisan kell elkészíteni:
- Menj be a MeGUI mappájába, azon belül a tools/dgindex mappába.
- Indítsd el a DGIndex.exe-t.
- File → Open → Tallózd be a ts-t → katt az OK bombra.
- File → Save project → opcionális: Mentheted más mappába, más néven → Save gomb → Várj, míg végig ér (ki fogja írni, hogy Finished).
A hang AAC, amitől tartottam. Nyitott vagyok ötletekre, ha valaki tudja mivel lehet érdemes betölteni, mi most megkerüljük és Wav-ot készítünk belőle.
- Menj be a MeGUI mappájába, azon belül a tools/tsmuxer mappába.
- Indítsd el a tsMuxerGUI.exe-t.
- add gombra katt → tallózd be a ts-t → Tracks résznél csak a hangot pipáld be (vagyis vedd ki a pipát a képről) → Output résznél Demux-ra katt → adj neki egy mappát → Start demuxing gomb és vársz, amíg végez
- Ha végzett a tsMuxer, akkor bezárhatod. A keletkezett fájl neve lényeges, mert tartalmaz egy számot, amennyivel majd el kell tolni a hangot.
- Audacityben File → Open menü → tallózd be az előbb a tsMuxerrel kicsomagolt aac hangot.
- File → Export menü → Válaszd ki a Wav-ot (Save a type résznél) és mentsd el valamilyen néven.
Jöhet a script szerkesztése: Betöltjük a videót, betöltjük a hangot, összekapcsoljuk a kettőt, majd eltoljuk a hangot. Ezt írd bele a scriptbe:
video = Mpeg2Source("D:\a\a.d2v")
audio = WavSource("D:\a\a.wav")
AudioDub(video, audio)
DelayAudio(x)
- A “video” és az “audio” itt most változók, amiket az AudioDub során fel is használunk.
- Mpeg2Source függvény tölti be a kép részt, WavSource tölti be a hang részt.
- AudioDub a képet és a hangot kettőt egybekapcsolja, hogy egyként lehessen őket kezelni.
- DelayAudio felel a hang eltolásáért.
- A “D:\a\a.d2v”-t és a “D:\a\a.wav”-t értelemszerűen le kell cserélned a saját fájljaidra.
- DelayAudio “x”-éhez egy szám megy másodpercben. Most nézd meg a tsMuxer által kicsomagold aac fájlod nevét. A névben millisec az eltolás, tehát át kell váltanod a számot. -421ms esetén például -0.421-et kell az x helyére írnod.[/spoiler]
[spoiler]3. Deinterlacing: Egy váltottsoros (interlaced) videóval (tévéfelvételek, DVD-k) betöltés után az első dolgunk, hogy deinterlaceljük. Készült animéseknek egy animeivtc nevezetű plugin gyűjtemény, ami elég hasznos (csak egy része van meg, nem töltöttem le a teljeset).
Sajnos itt is lehetnek gondok, de nem találkoztam még olyan tvcap-el, amire az alábbi ne illett volna, úgyhogy remélem most is jó lesz (nem kevés idő megtalálni egy illeszkedő módot) Írd be a scriptbe a Delay alá:
animeivtc(mode=1, precision=5)
[spoiler]4. Vágás: Most érkeztünk el a kérdésed lényegéhez. A Trim(kezdokepkocka, vegkepkocka) függvénnyel lehet meghagyni a kívánt képkockákat. Például a
Trim(0,5)
beleteszi a 0,1,2,3,4,5 képkockákat a videódba.
Több Trim-et is lehet alkalmazni egyszerre: Trim(kezdo, veg) ++ Trim(kezdo,veg). Példa: Trim(0,2) ++ Trim(4,5)
beleteszi a 0,1,2,4,5 képkockákat, de a 3-at nem.
- Nyisd meg MeGUI-t.
- Töltsd be a szerkesztés alatt álló avs fájlt (AviSynth script sorában a … gomb), várj egy kicsit és megjelenik a videó képe.
- A vizuális vásznon elkalauzolhatsz a vágási képkockákhoz, amiket be kell írnod az avs fájlba a fenti módon.
- Egy epizódnak hozz létre egy scriptet. Első körben a videónak csak azon részét tartsd meg, ahol az első rész fut le. A második résszel ne törődj, menj tovább. Ha végig majd értél az írásomon, másold le az AVS fájlt és a másolatban a vágás sorát töröld ki, majd írd be újra a második részhez.
- Ha készen vagy, a “Reload” gombra katt, az aktualizálja a vizuális megjelenítést és megnézheted mit alkottál.[/spoiler]
[spoiler]5. Átméretezés:
- Crop: A videók szélén általában szokott lenni elszíneződés, ami nem néz ki jól. Ha nincs ilyen a tieden, akkor ugorj tovább, ellenkező esetben érdemes lehet levágni a kérdéses részt.
crop(bal, felül, -jobb, -alul): Egész számokat (0-t és 2-vel oszthatóakat) adhatunk meg az oldalakhoz, amik a pixel levágást jelölik.
crop(2,4,-2,-4)
2 pixelt vág le jobb és bal oldalakról, 4 pixelt a tetejéből és az aljából.
crop(2,0,-2,0)
2 pixelt vág le jobb és bal oldalt (egy mai tévéfelvételhez általában ez szokott kelleni, de csatorna-, minőség- és felvevőfüggő).
- Tényleges átméretezés (Resize): 2 féle függvényt szoktunk használni: “Lanczos4Resize” és “Spline36Resize” (Spline-nak vannak más, elvileg jobb változatai, de tévéhez teljesen mindegy). Átméretezésnél figyelni kell, hogy szabvány szerint 16-tal oszthatónak kell lennie a videó szélességének és 8-cal a magasságának.
16:9-es videó esetén 720-nál egyszerű a dolog, de 480-nál gyakran nem veszik figyelembe. Hogy a 2 függvény közül melyiket írod bele, azt már rád bízom. 720-ra:
Lanczos4Resize(1280,720)
Spline36Resize(1280,720)
[spoiler]6. Kép feljavítása:
Na itt aztán minden elképzelhető és akár órákat is igénybe vehet (mikor elkezdtem, napokat kísérleteztem egy videóval) egy megfelelőbb beállítás. Élesítés, homályosítás, zajszűrés, zajosítás, debanding (vki magyar nevet ismeri?), élsimítás, pixeleződés csökkentés, dehaloing… Célszerű még átméretezés elé (persze, ha méretet csökkentesz) írni őket, mert tapasztalatom szerint kevesebb kárt tesznek akkor a videóban (pl zajszűrésnél veszíthetsz fontos részletet), de mivel nagyon megnő a kódolási idő, ezért csak BD-knél szoktam átméretezés előtt alkalmazni őket.
Amit tudok javasolni, hogy a kettő közül valamelyiket nem árt rátenni (tekintve, hogy egy ts-en banding szokott jelentkezni):
gradfun3(thr=0.45, mask=0)
gradfun2dbmod(thr=1.4,str=0.6)
Bandingot szűntetik meg (debanding), de ahány videó, annyiféle beállítás, viszont valószínűleg nem lesz nagy probléma, ha valamelyiket így ráteszed.[/spoiler]
[spoiler]Ezzel kész van egy AVS script. Elég sok program felismeri. MeGUI-n kívül Xvid4PSP (de azzal vigyázz, mert a beépített hülyeségei bezavarnak), AvsPmod, VirtualDub, MPC-HC és Aegisub is. Kaptál egy ehhez hasonló kódot:
video = Mpeg2Source("D:\a\a.d2v")
audio = WavSource("D:\a\a.wav")
AudioDub(video, audio)
DelayAudio(-0.421)
animeivtc(mode=1, precision=5)
Trim(318,5500) ++ Trim(6821,20827) ++ Trim(23011,37402) ++ Trim(38935,39480)
crop(2,0,-2,0)
Spline36Resize(1280,720)
gradfun3(thr=0.45, mask=0)
GATE-hez ilyet készítettem:
video = Mpeg2Source("ep.d2v")
audio = WavSource("ep.wav")
clip = AudioDub(video,audio)
clip = clip.DelayAudio(-0.420)
clip = clip.animeivtc(mode=1, precision=5)
clip = clip.crop(2,0,-2,0).Lanczos4Resize(1280,720)
Intro = clip.Trim(681,2766)
OP = clip.Trim(2767,4923)
A = clip.Trim(6603,17296)
H = clip.Trim(17297,17415)
B = clip.Trim(18854,35564)
ED = clip.Trim(35565,37723)
PV = clip.Trim(39162,39281)
clip = Intro + OP + A + H + B + ED + PV
clip = clip.MSharpen(threshold = 5, strength=45, highq = true).xaa(ss = 3.5, csharp=1)
clip = clip.FineDehalo(rx=2.0, thmi=50, thma=70,darkstr=0.6,brightstr=0.8, showmask=0, contra=0.5)
clip = clip.gradfun3(thr=0.45, mask=0)
return clip
Ami leegyszerűsítve:
video = Mpeg2Source("ep.d2v")
audio = WavSource("ep.wav")
AudioDub(video,audio)
DelayAudio(-0.420)
animeivtc(mode=1, precision=5)
crop(2,0,-2,0)
Lanczos4Resize(1280,720)
Trim(681,2766) ++ Trim(2767,4923) ++ Trim(6603,17296) ++ Trim(17297,17415) ++ Trim(18854,35564) ++ Trim(35565,37723) ++ Trim(39162,39281)
MSharpen(threshold = 5, strength=45, highq = true)
xaa(ss = 3.5, csharp=1)
FineDehalo(rx=2.0, thmi=50, thma=70,darkstr=0.6,brightstr=0.8, showmask=0, contra=0.5)
gradfun3(thr=0.45, mask=0)
A felsőt jobban szeretem, mert változókkal egyszerűbb behatárolni mit csináltál, ha mondjuk lenne hiba vagy akár egy későbbi rész során egy korábban megírt scriptet szerkesztesz át. MSharpen élt emel ki, xaa élt simít, finedehalo élkiemelés után keletkezett haloingot szedi le.[/spoiler]
V. Encoding
Kép: Erről megint lehetne litániát tartani és elég sokat veséztük már itt is. Ha esetleg kellhet segítség x264 beállításához, szólj.
[spoiler]Hang:
- Ha mindent jól csináltál, MeGUI-ban az Audio résznél megjelenik az AVS scripted, ha betöltöd az AviSynth Script résznél.
- Audio Encoder settingsnél válaszd ki a Flac: scratchpad-et, majd nyomj rá a Config gombra.
- A megjelenő ablakban a csúszkát húzd a legnagyobbra (teljesen jobb) és OK-ézd le.
- Nyomj rá a Queue gombra (Audio-nál) → Menj át a Queue fülre és alul találod a Start gombot → arra rányomva elkezdi az encode-ot
- Hang encode befejezése után nyisd meg az Audacity-t és tallózd be a flac-et
- Effect → Normalize… → 0.0-t írj be → OK → várj kicsit
- File → Export → M4A (AAC)-t válaszd ki → Opcionsra katt → csúszka a minőséget szabályozza, végülis te döntöd el hova állítod be, 200-400 között szoktam mozgatni → OK
- Save[/spoiler]
Összemuxolod a képet és a hangot mondjuk MKVToolnix-al (persze ha mkv-t akarsz; MeGUI-ban is benne van a tools → Muxer → MKV menüben) és kész.