IVTC mit JIVTC

Zuallererst solltest du mit dem Begriff „IVTC“ etwas anfangen sollen. Dazu ein Ausschnitt aus dem Wikipedia-Artikel + Bilder:

„Inverse Telecine (auch IVTC abgekürzt) ist nur bei Film-Material notwendig, das für den amerikanischen Fernsehstandard NTSC aufbereitet wurde und beschreibt den Vorgang, das mit Hilfe von Halbbildern auf 29,97 FPS gestreckte Material wieder auf 23,976 FPS zurückzuführen.“

Auf Anime im TV trifft das ebenfalls zu, da der japanische Standard NTSC-J lautet und das auf NTSC basiert (mit Änderungen).

Diese Diashow benötigt JavaScript.

Was benötige ich für JIVTC?

Als erstes braucht du das Basis-Skript und einen MPEG2-/h264-Input:

MPEG2Source("C:\Users\Misaki\Desktop\12sai\12sai01tvq.d2v")
draft=false #true=wraw ; false=real encode
c0=JIVTC(0,draft=draft,thr=15)
c1=JIVTC(1,draft=draft,thr=15)
c2=JIVTC(2,draft=draft,thr=15)
c3=JIVTC(3,draft=draft,thr=15)
c4=JIVTC(4,draft=draft,thr=15)
#c0
#c0.trim(X,X) ++ c0.trim(X,X) ++ c0.trim(X,X) ++ c0.trim(X,X) #ep1

Für MPEG2 lässt du dir eine .d2v von DGIndex generieren.
(.ts ins Fenster von DGIndex ziehen per Drag & Drop und dann Projekt speichern)

Für h264 nutzt du ganz einfach LWLibavVideoSource() oder FFVideoSource() .

LWLibavVideoSource("C:\Users\Misaki\Desktop\12sai\Daimidaler01atx.ts")

Wieso gibt es eigentlich genau 5 Pattern (c0-c4)?

Wie oben auf dem Bild zu sehen, gibt es eine komplette „Sequenz“, welche aus 5 einzelnen Frames besteht.
Diese sind z.B. so aufgebaut: „Clean-Combed-Combed-Clean-Clean“ oder auch „Current-Next-Next-Current-Current“ und vereinfacht „Gut-Schlecht-Schlecht-Gut-Gut“ und in Kurzform „CNNCC“. Man definiert mittels JIVTC sozusagen den Startpunkt dieser Frequenz. Diese ist im Animeteil (normalerweise) immer gleich, ändert sich aber gerne nach z.B. Werbung.
Weitere Kombinationen wären: CCCNN, NCCCN, NNCCC, CNNCC, CCNNC.

Und wie nutze ich JIVTC jetzt?

Das Ziel ist es das richtige Pattern zu finden (wie oben beschrieben).
JIVTC selber wird VOR dem trimmen genutzt. Das ist sehr wichtig!
Man unkommentiert „#c0“ und sucht sich nun eine Stelle aus, wo keine Werbung mehr ist. Wichtig ist, dass du der Reihenfolge nach gehen. In den meisten Fällen sieht das Schema so aus („->“ symbolisiert die Werbung):
-> Intro+Opening -> Part A -> Part B+Ending -> Vorschau ->

Hast du eine Stelle, setzt du immer c0 +1 (also auf c1,c2 etc.) bis der Effekt oben auf dem Bild nicht mehr vorhanden ist (also ein sauberes Bild vorliegt). Man sollte sich jeweils mehrere Frames suchen ggf. mal abspielen, ob man wirklich das richtige Pattern erwischt hat. Beachte, dass c0 ebenfalls ein gültiges Pattern ist.
Als Beispiel: Bei „Intro+Opening“ kam das Pattern „c3“ raus.
Du behälst jetzt „c3“ und nimmst die Frames von „Intro+Opening“ ohne Werbung mit.

c3
#c3.trim(1290,5626) ++ c0.trim(X,X) ++ c0.trim(X,X) ++ c0.trim(X,X) #ep1

„c3 „wird wieder zurück auf „c0“ gesetzt und dasselbe geschieht dann mit den restlichen Abschnitten: Part A, Part B+Ending, Vorschau.
Bis zum Ende wird die untere Trimzeile als Kommentar behandelt. Erst ganz zum Schluss wird diese unkommentiert und dein die ganze Zeit genutzes „c“auf „c0“ zurückgesetzt und kommentiert (#c0).

Zum Schluss würde es dann so aussehen:

#c0
c3.trim(1290,5626) ++ c2.trim(5868,19245) ++ c2.trim(19253,35333) ++ c0.trim(36533,37012)

Und was ist, wenn ich 60i Scrolltext habe?

MPEG2Source("C:\Users\Misaki\Desktop\12sai\12sai01tvq.d2v")
#scrolling1 = ivtc_txt60mc(3).Trim(800,1000)
draft=false #true=wraw ; false=real encode
c0=JIVTC(0,draft=draft,thr=15)
c1=JIVTC(1,draft=draft,thr=15)
c2=JIVTC(2,draft=draft,thr=15)
c3=JIVTC(3,draft=draft,thr=15)
c4=JIVTC(4,draft=draft,thr=15)
c3
#c3.trim(1290,5626) ++ c2.trim(5868,19245) ++ c2.trim(19253,35333) ++ c0.trim(36533,37012)

Der Scrollingtext wird vor dem JIVTC „ausgeschnitten“. Jedoch wird das Pattern mittels JIVTC definiert. Sagen wir also, der Scrollingtext findet in „c3.trim(1290,5626)“ statt, suchen wir uns die Szene dort „Trim(800,1000)“ während „c3“ aktiv ist. Diese hat logischerweise ebenfalls das Pattern 3.
Möchte man eine Vorschau, nimmt man sich „ivtc_txt60mc3(x)“ zur Hilfe (da „ivtc_txt60mc(x)“ extrem langsam ist). „ivtc_txt60mc3(x)“ darf aber niemals für den finalen Encode benutzt werden, es dient nur zur Hilfe.
Nachdem man alle Scrollingtexte definiert hat, werden die Scrollingtexte (in dem Fall nur „scrolling1“) über die Stelle gelegt, wo der „durch JIVTC vermasselte“ Scrollingtext liegt.

Zum Schluss würde es dann so aussehen:

MPEG2Source("C:\Users\Misaki\Desktop\12sai\12sai01tvq.d2v")
scrolling1 = ivtc_txt60mc(3).Trim(800,1000)
draft=false #true=wraw ; false=real encode
c0=JIVTC(0,draft=draft,thr=15)
c1=JIVTC(1,draft=draft,thr=15)
c2=JIVTC(2,draft=draft,thr=15)
c3=JIVTC(3,draft=draft,thr=15)
c4=JIVTC(4,draft=draft,thr=15)
c3.trim(1290,5626) ++ c2.trim(5868,19245) ++ c2.trim(19253,35333) ++ c0.trim(36533,37012)
merged = Trim(0,3397) ++ scrolling1 ++ Trim(4278,0)
merged

Möchte man Geschwindigkeit sparen ohne Qualität einzubüßen, kann man nur den wirklichen Text nehmen. Dazu croppt man das Bild und reduziert es ausschließlich auf den Text. Ein Beispiel wäre in etwa so:

MPEG2Source("C:\Users\Misaki\Desktop\12sai\12sai01tvq.d2v")
scrolling1 = ivtc_txt60mc(3).Trim(800,1000).crop(0,962,0,-36)
draft=false #true=wraw ; false=real encode
c0=JIVTC(0,draft=draft,thr=15)
c1=JIVTC(1,draft=draft,thr=15)
c2=JIVTC(2,draft=draft,thr=15)
c3=JIVTC(3,draft=draft,thr=15)
c4=JIVTC(4,draft=draft,thr=15)
c3.trim(1290,5626) ++ c2.trim(5868,19245) ++ c2.trim(19253,35333) ++ c0.trim(36533,37012)
merged = trim(0,3397) ++ trim(3398,4177).Overlay(scrolling1,y=962,mode="blend") ++ trim(4278,0) 
merged

Ist einem aber auch das noch zu langsam, kann man eine sehr schnelle (jedoch manchmal nicht wirklich geeignete) Methode nutzen:

MPEG2Source("C:\Users\Misaki\Desktop\12sai\12sai01tvq.d2v")
scrolling1 = overlayinter(pattern=3,bobber="flag()").Trim(800,1000).crop(0,962,0,-36)
draft=false #true=wraw ; false=real encode
c0=JIVTC(0,draft=draft,thr=15)
c1=JIVTC(1,draft=draft,thr=15)
c2=JIVTC(2,draft=draft,thr=15)
c3=JIVTC(3,draft=draft,thr=15)
c4=JIVTC(4,draft=draft,thr=15)
c3.trim(1290,5626) ++ c2.trim(5868,19245) ++ c2.trim(19253,35333) ++ c0.trim(36533,37012)
merged = trim(0,3397) ++ trim(3398,4177).Overlay(scrolling1,y=962,mode="blend") ++ trim(4278,0) 
merged

Alle Skripte, Plugins etc. liegen im Encode-Pack bei!