Progressiv und Interlaced in einem Video! was ist das?

  • Nabend,

    habe gestern eine neue Entdeckung bei einem DVD Trailer gemacht:

    http://www.file-upload.net/download-76103…reifen.m2v.html

    So verhält sich das Video, wenn ich die Bildreihenfolge mit folgenden Script in VirtualDub teste:

    Code
    LoadPlugin("C:\AviSynth\DGDecode\DGDecode.dll") 
    i = MPEG2Source(".d2v") 
    t = assumetff(i).bob() 
    b = assumebff(i).bob() 
    stackvertical(t,b)


    4x PPPP | 12x IIIIIIIIIIII | 13x PPPPPPPPPPPPP | 11x IIIIIIIIIII usw..

    P= Progressiv
    I= Interlaced

    Progressiv

    TFF: stop-vor,stop-vor
    BFF: stop-vor,stop-vor

    Interlaced

    TFF: vor,vor,vor,vor
    BFF: vor,zurück,vor,zurück

    Bin am überlegen, ob ich nicht das ganze Video 1x mit QTGMC behandeln soll?
    Somit wird das Video am Ende vollständig Progessiv werden :)
    In irgendeinen Beitrag habe ich schon mal ein Vergleichstest gemacht ( finde es zur Zeit nicht )
    Da habe ich mal aus Spass ein Progressives Video mit QTGMC behandelt und eine Qualitätsminderung konnte ich nicht feststellen...

  • Vielen Dank, habe jetzt folgendes mal ausprobiert:



    Fehlermeldung: Script error: there is no function named "TMM"

    Ich denke da fehlen bestimmt noch einige DLL Dateien, die ich in meinem Script ergänzen muss!
    Kann mir jemand die fehlenden DLL Dateien nennen?
    Hoffe das Script ist dann soweit in Ordnung..

  • Also das hier noch in meinen Script einbinden?

    Code
    LoadPlugin("TDeint.dll")
    .....
    ....
    ...
    ..
    .
    tdeint(emask=TMM(),edeint=nnedi2())

    Werde es später mal testen.. muß jetzt los

  • Mit diesem Script scheint es nun zu laufen! ( leider nicht ganz fehlerfrei --> siehe Bilder ganz unten )

    Code
    LoadPlugin("C:\AviSynth\QTGMC\Core-Plugins\MVTools2.dll") LoadPlugin("C:\AviSynth\QTGMC\Core-Plugins\MT_MaskTools-25.dll") LoadPlugin("C:\AviSynth\QTGMC\Core-Plugins\NNEdi3.dll") LoadPlugin("C:\AviSynth\QTGMC\Core-Plugins\RemoveGrainSSE2.dll") LoadPlugin("C:\AviSynth\QTGMC\Core-Plugins\RepairSSE2.dll") LoadPlugin("C:\AviSynth\DGDecode\DGDecode.dll") LoadPlugin("C:\AviSynth\TDeint\TDeint.dll") LoadPlugin("C:\AviSynth\TMM 1.0\TMM.dll") Import("C:\AviSynth\QTGMC\QTGMC-3.33.avsi") SetMemoryMax(512) SetMTmode(3,0) MPEG2Source(".d2v") AssumeTFF() SetMTmode(2) ConvertToYV12(interlaced=true) TDeint(mode=0, full=false, cthresh=9, chroma=true, MI=80, edeint=QTGMC(Preset="Medium", FPSDivisor=2), emask=TMM(mode=0), slow=2) SelectEven()


    Dieser Code wird garnicht akzeptiert, weil wohl NNEdi2 fehlt!
    Ich hab doch schon NNEdi3 als Plugin am laufen, wozu NNEdi2 benutzen?

    Code
    #TDeint(emask=TMM(),edeint=nnedi2()) --> [COLOR=#ff0000]There is no function named "nnedi2"[/COLOR]


    Das neue Progressive Video hat in manchen einzel Bilder, eine Farbverfälschung drin. ( Sonst ist alles Okay )

    Original Film

    [Blockierte Grafik: http://img.xrmb2.net/images/454934.png]


    Behandelt mit dem oben genannten Script

    [Blockierte Grafik: http://img.xrmb2.net/images/784329.png]

    Diese Farbverfälschung tritt so alle 3-5 Min in einen einzigen Bild mal auf! ( Das sieht man auch nur, wenn man sich frame für frame langsam durch das Video blättert )

    Irgendwas stimmt da nicht so ganz!! weiß jemand rat?

  • Hast du diese Fehler denn nur mit dem TDeint-Aufruf? Passiert dasselbe, wenn du probeweise mal nur QTGMC auf das ganze Video anwendest?

  • Hast du diese Fehler denn nur mit dem TDeint-Aufruf? Passiert dasselbe, wenn du probeweise mal nur QTGMC auf das ganze Video anwendest?

    Gut, das du mich das gefragt hast! ( jetzt ist man schlauer )
    Hab das Video komplett mit QTGMC behandelt und habe auch dort die selben Farbverfälschung!!
    Nicht schlimm, das ist zu verkraften :)
    Vielleicht liegt es auch am Codec?? Schreibe meine Videos immer per "Fast Recompress" in den UT 4:2:0 zurück
    Wenn ich mal die Zeit finde, teste ich es mal Lagarith etc...

  • Eventuell auch ein Multithreading-Fehler. Wie in dem anderen Beitrag erwähnt, hilft vielleicht RequestLinear() zwischen MPEG2Source() und SetMTMode(2), um den Decoder nicht zu oft konkurrierend unterschiedliche Frame-Nummern je Thread liefern zu lassen.

    Super :) Gut zu wissen.
    Um auf Nummer sicher zu gehen, kann man doch RequestLinear() immer anwenden! oder?
    So weit ich das verstanden habe, gillt das dann aber nur für AviSynth 2.60a4 MT von SEt ?


    Hab auch noch Fragen:
    1. Ist der Fehler denn schon zu sehen, wenn man das Skript in z.B. Virtual Dub anguckt?
    2. Wenn Du die Stelle noch mal kodierst, ist der Fehler dann wieder da? (an den gleichen Stellen?)

    Cu Selur

    Das habe ich noch nicht ausprobiert.
    Werde es bei nächster Gelegenheit testen und Feedback erstatten ;)

  • So weit ich das verstanden habe, gillt das dann aber nur für AviSynth 2.60a4 MT von SEt?

    Nein. RequestLinear() kann auch ohne MT in manchen Fällen vorteilhaft sein, insbesondere wenn bestimmte Decoder mit bestimmten Quelldateien (evtl. unvollständige, ohne Keyframe-Index) Schwierigkeiten haben, nicht sequenziell die Frames abzufragen, sondern beliebig zu positionieren (das kann schon bei Filtern passieren, die ein relativ großes temporales Fenster haben). FFMS2 hat für solche Fälle seekmode=0, DirectShowSource hat seekzero=true; für Quellfilter, die so etwas nicht haben, kann RequestLinear helfen, Frames nur einmalig und nur in fortlaufender Reihenfolge anzufordern, wenn nicht das Skript wegen Trims in der Videoquelle allzu sehr herumspringt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!