einige Anfängerfragen zu AviSynth

  • Hallo,
    ich habe ein mit einer analogen Kamera aufgenommenes Video von einer VHS gecaptured. Gemacht habe ich das mit Huffyuv in 720x572 und es scheint auch trotz VirtualDub und WDM-Treibern geklappt zu haben.
    Nun habe ich aber einige Fragen zur Bearbeitung mit AviSynth, hoffe, ihr könnt mir da vielleicht ein bisschen weiter helfen...

    1. Ich habe das Video wie im guide von Gleitz deinterleaced, habe aber gelesen, dass man das für eine DVD eigentlich nicht braucht, würde ich dadurch denn viel Qualität verschenken?
    2. Ich habe es vor dem Schärfe-Filter mit einem "ConvertToYV12" oder so ähnlich versucht, weil Msharpen ja in YUY2 nicht "Alles" schärft (?), nur ist dann VD beim Versuch, das Video abzuspielen, abgestürzt. Woran könnte das liegen oder würde das bei dem Schärfe Filter eh keinen Unterschied machen?
    3. Stimt es, dass man bei TMPGEnc ein ConvertToRGB24 ans Ende des Scriptes setzen muss?
    4. Ich habe einige Schnitte im Video, gibt es da einen Filter oder ähnliches mit dem man da gute Übergänge hinbekommt?

    Hier mal mein "Script":
    LoadPlugin("C:\Programme\AviSynth 2.5\plugins_ext\Convolution3D.dll")
    LoadPlugin("C:\Programme\AviSynth 2.5\plugins_ext\MSharpen.dll")

    SegmentedAVISource("E:\video_temp\capture.avi")

    Trim(0,68603) ++ Trim(71004,79777) ++ Trim(88643,103271)

    FieldDeinterlace()

    Convolution3D (0, 32, 128, 16, 64, 10, 0)

    LanczosResize(640,544,0,2,720,560)
    AddBorders(40,16,40,16)

    Tweak(hue=0.0, sat=1.0, bright=0.0, cont=1.0)

    MSharpen(strength=100,threshold=10,highq=true,mask=false)

    FadeIO2(15)
    FadeOut2(15)

    Schnmal vielen Dank im Voraus,
    Tom

    • Ja, 50% Bewegungsinformationen gehen verloren.
    • Wenn in der ReadMe zum Filter oder in Doom9's Forum sowas steht, wirds wohl stimmen. Wenn nicht dann wahrscheinlich nicht - aber es gibt mehr als genug AviSynth Plugins, die nachschaerfen.
      Das VDub abstuerzt, konnte daran liegen, das Du ConvertToYV12() vor einem Filter eingefuegt hast, der mit YV12 nichts anfangen kann.
    • Ist besser, weil TMPGEnc 2.5x (Plus) als Input nur RGB24 akzeptiert.
    • Beispielsweise Dissolve()

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Noch ein paar Tipps zur Optimierung:

    1)

    Zitat von :Tom:

    Tweak(hue=0.0, sat=1.0, bright=0.0, cont=1.0)


    verändert den Inhalt überhaupt gar nicht. Warum also diese Zeile nicht weglassen?
    __

    2)

    Zitat von :Tom:

    FadeIO2(15)
    FadeOut2(15)


    Hat folgendes Verhalten:

    Code
    /#############\_ (FadeIO2 = FadeIn + FadeOut2)
    ##############\_ (noch einmal FadeOut2)


    Macht es Sinn, das Ende doppelt auszublenden? Möglicherweise, wenn jemand keinen linearen Abfall der Helligkeit will, sondern einen noch plötzlicheren.
    __

    3) Erst AddBorder(), dann MSharpen()? Würde ich nicht empfehlen, das könnte evtl. in übersteigerten Kanten an der Letterbox enden. Für MPEG-artige Codecs der perfekte Anlass, Ring-Artefakte zu produzieren.

    Mal abgesehen davon, dass eine weitere Schärfung nach einem scharfen Resizer wie Lanczos3 wohl "die Übertreibung des Jahres" wäre. Das Geflimmer möchte ich mir dann sicher nicht mehr ansehen, vermute ich mal so...

  • Erstmal danke für die Antworten.

    Zitat

    Ja, 50% Bewegungsinformationen gehen verloren.


    - könnte ich das deinterleacen denn auch weg lassen, macht das Sinn? Habe es nur gemacht weil ich nicht wusste, ob ich auf den interleaced Film die Filter anwenden kann.

    Zitat

    Das VDub abstuerzt, konnte daran liegen, das Du ConvertToYV12() vor einem Filter eingefuegt hast, der mit YV12 nichts anfangen kann.


    - Leider stürzt VD auch ab wenn ich hinter dem ConvertToYV12 und dem Schärfe Filter nichts mehr schreibe. Wenn ich das Script dann allerdings mit MPC öffne, sagt der, dass er einige Pins im Filter-Graph nicht verbinden konnte..

    Zitat

    Beispielsweise Dissolve()


    - Wie müsste das dann aussehen, wenn ich nur die Schnittstellen im Film bearbeiten will? Im AviSynth Handbuch ist da ja nur von 2 Clips die Rede.

    Zitat

    verändert den Inhalt überhaupt gar nicht. Warum also diese Zeile nicht weglassen?


    - Das mit dem Tweak habe ich halt nur eingefügt, weil das im guide von Gleitz auch so gemacht wurde.

    Zitat

    Mal abgesehen davon, dass eine weitere Schärfung nach einem scharfen Resizer wie Lanczos3 wohl "die Übertreibung des Jahres" wäre. Das Geflimmer möchte ich mir dann sicher nicht mehr ansehen, vermute ich mal so...


    - ich wusste nicht, dass Lanczos3 auch schärft, beschäftige mich halt erst seit einigen Wochen damit und habe erstmal alles nach dem guide gemacht. Finde aber das es mit dem Schärfe Filter schon besser als vorher aussieht (in der VD Vorschau), da das Video schon ziemlich unscharf ist. Was meinst du denn jetzt mit "Übertreibung", soll ich den Filter denn weglassen?

    thx Tom

  • Zitat


    könnte ich das deinterleacen denn auch weg lassen, macht das Sinn? Habe es nur gemacht weil ich nicht wusste, ob ich auf den interleaced Film die Filter anwenden kann.


    Natuerlich macht es Sinn, 50% Bewegungsinformationen nicht ins Nirwana zu jagen – allerdings brauchst Du beim encoden dann natuerlich auch eine hoehre Bitrate (~30-50%) damit das gut aussieht. Und die Filter kannst Du so nicht auf den interlaced Film anwenden, dazu sind Anpassungen notwendig. Ein User dieses Forums (grua) hat in einem PDF diverse Wege zusammengefasst, interlaced Material zu bearbeiten. Such mal nach "Filtern von interlaced Video".


    Zitat


    Leider stürzt VD auch ab wenn ich hinter dem ConvertToYV12 und dem Schärfe Filter nichts mehr schreibe. Wenn ich das Script dann allerdings mit MPC öffne, sagt der, dass er einige Pins im Filter-Graph nicht verbinden konnte..


    Lass alle Filter weg, lade nur das Video mit ConvertToYV12(interlaced=true) – gleiches Problem? Dann mal einen YV12 Decoder installieren (z. B. mit XviD oder ffdshow).
    Allerdings sind nicht zwingend erforderliche Farbraumkonversionen niemals empfehlenswert.


    Zitat


    Wie müsste das dann aussehen, wenn ich nur die Schnittstellen im Film bearbeiten will? Im AviSynth Handbuch ist da ja nur von 2 Clips die Rede.


    Dissolve (clip1, clip2 [, ...], int overlap)
    -> Dissolve(Trim(0,68603),Trim(71004,79777),Trim(88643,103271),5)

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Zitat

    Ein User dieses Forums (grua) hat in einem PDF diverse Wege zusammengefasst, interlaced Material zu bearbeiten.


    Danke. Ich habe mir das PDF mal durchgelesen und versucht das irgendwie zu verstehen und umzusetzen.

    Zitat

    allerdings brauchst Du beim encoden dann natuerlich auch eine hoehre Bitrate (~30-50%) damit das gut aussieht.


    Bedeutet das denn, dass es, wenn die Bitrate zu niedrig ist, vielleicht sogar deinterlaced besser aussehen würde? Es ist eine 5h VHS, die ich auf 2 DVDs verteilen wollte, reicht das, müssten dann ja so knapp 4000MBit sein?

    Hier nochmal das jetzige Script, habe versucht alles so zu machen wie ihr das gesagt habt:

    LoadPlugin("C:\Programme\AviSynth 2.5\plugins_ext\Convolution3D.dll")
    LoadPlugin("C:\Programme\AviSynth 2.5\plugins_ext\MSharpen.dll")
    import("C:\Programme\AviSynth 2.5\plugins_ext\TDeintBob.avs")


    SegmentedAVISource("E:\video_temp\capture.avi")

    Dissolve(Trim(0,68603),Trim(71004,79777),Trim(88643,103271),5)


    Bob()
    Convolution3D (0, 32, 128, 16, 64, 10, 0)
    ReinterlaceBob()

    TDeintBob()

    MSharpen(strength=100,threshold=10,highq=true,mask=false)

    LanczosResize(656,544,0,13,720,546)
    AddBorders(32,16,32,16)

    FadeIO(15)

    ConvertToRGB24

    ReinterlaceBob()

    Wie sieht das jetzt aus? Das Video ist übrigens an Fasching aufgenommen worden und die Kamera (hing an der Decke) war über ein 30m Kabel mit dem Videorekorder verbunden.. deshalb wars mir halt wichtig beim überspielen so wenig wie möglich an Qualität zu verlieren.

  • Hab nicht alle obigen Postings gelesen - kann daher sein, dass ich in folgendem das eine od. andere übersehe - aber hier nur kurz was mir auf die Schnelle auffällt:

    1) Bobber:

    Ist das Video tats. dermaßen verrauscht, dass du das vorige Bob().Rauschfilter().Reinterlace() benötigst? Braucht schon um einiges mehr Rechenzeit... Würde daher zuerst mal die einfachere Variante versuchen:
    TDeintBob()
    filtern inkl. Rauschfiltern
    ReinterlaceBob()


    2) Bitrate:

    Für die Bitrate nutze ich folgende Faustformel (MPEG2-Encoding mit CCE):

    DV-Video, interlaced:
    durchschnittliche Bitrate so hoch wie möglich, d.h. so nah als möglich an die maximale Bitrate ran.

    Analog Capture, interlaced:
    durchschnittliche Bitrate mind. 4000 kbps

    Analog Capture, progressive:
    durchschnittliche Bitrate mind. 3000 kbps

     Mit 4000 Bit/s kannst du es mal interlaced versuchen. Wenns blockt, dann eben deinterlacen.


    3) Farbraum:
    Interlaced Video immer in YUY2 öffnen, daher nehme ich folgenden Befehl:
    AviSource("capture.avi",true,"YUY2")

    Weshalb wandelst du in RGB24? Falls du den CCE damit fütterst, dann lass es bei YUY2.


    cu, grua

  • >Interlaced Video immer in YUY2 öffnen,...
    Begruendung?

    >Weshalb wandelst du in RGB24?
    Weil er TMPGEnc damit fuettert :)

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Zitat von Viperzahn

    >Interlaced Video immer in YUY2 öffnen,...
    Begruendung?


    Weil man dann nicht darüber nachdenken muss, ob die Chroma-Werte für Zeile 1+2 und 3+4, oder für die Zeilen 1+3 und 2+4 gelten (progressive oder interlaced YV12). In YUY2 gilt Chroma für eine Zeile, nicht für zwei.

  • Zitat

    Weil man dann nicht darüber nachdenken muss, ob die Chroma-Werte für Zeile 1+2 und 3+4, oder für die Zeilen 1+3 und 2+4 gelten (progressive oder interlaced YV12).


    Und wo ist das Problem?

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • @ Viperzahn:

    Stell dir vor, in einem Bereich des Bildes ist der Inhalt des einen Fields rot, der des anderen Fields blau (hatte ich schon mal geschrieben: wenn ein roter Ball vor einem blauen Himmel fliegt). Welche Farben hättest du nun gern nach der Encodierung: rot und blau, oder lila und lila?

  • Weil man beim filtern Fehler machen koennte, ergibt sich doch nicht gleich die Schlussfolgerung interlaced YV12 immer nach YUY2 zu konvertieren. Und das dann auch noch von irgendeinem Codec [AviSource('capture.avi',true,'YUY2')] progressive upsamplen zu lassen - na ja.
    Geht man nach der Logik vor, konvertiert man am besten immer nach RGB24 - damit gibts beim bearbeiten die wenigsten Probleme (sofern man Filter findet, die den Farbraum unterstuetzen).


    Aber in dem Fall ist seine Quelle ja schon in YUY2 gespeichert.

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Nun, es kommt sicher immer drauf an, in welchem Format die Quelle vorliegt. Wenn es ein AVI mit gepackten Format ist (RGB oder YUV 4:2:2 als Basis), kann man es sicher gleich als YUY2 öffnen lassen. MPEG basiert zwar (in den verbreiteten Profilen) auf YUV 4:2:0; aber wenn ich die Chance hätte, dass der Decoder gleich YUY2 ausgibt, würde ich es mir schon überlegen, wenn ich den Verdacht habe, dass es interlaced encodiert sein könnte. Denn spätestens beim Resizen ist fieldweise Verarbeitung dafür dann notwendig. Und wenn schon mit der falschen Variante von YV12 nach YUY2 konvertiert wurde, sieht man die Streifen, die ich schon mehrfach dokumentiert hatte (z.B. rot-braun-grün-braun-...) - das gäbe dann kräftiges Field-Flimmern.

  • LigH:
    interlacedyv12 lässt man am besten, wie es ist.
    nur wenn man es unbedingt filtern muss, dann aber den Farbraum am besten hiermit umwandeln:
    http://forum.doom9.org/showthread.php?s=&threadid=90794

    oder erst deinterlacen und erst dann den Farbraum ändern.

    Interlace is evil.
    Ich weiss :zunge:

  • Ist ja wirklich ein super Forum hier, so schnell wie einem hier geholfen wird :-).
    LigH:
    Sorry, aber dein letztes Posting sagt mir als Anfänger leider gar nix :-(.
    Das Video wurde mit YUY2 gecaptured aber bringt es mir dann was, wenn ich es mit ("x",true,"YUY") öffne??

    Zitat

    Ist das Video tats. dermaßen verrauscht, dass du das vorige Bob().Rauschfilter().Reinterlace() benötigst? Braucht schon um einiges mehr Rechenzeit...


    Hmm, kenn mich da ja nicht so aus, es sieht jedenfalls alles sehr verschwommen aus.
    Das mit der Rechenzeit. Naja, hatte davon noch keine Vorstellung bis ich eben mal die .avs mit TMPGEnc geöffnet habe und eine Zeit von 53h für 1h Film angezeigt wurde und es sind ja insgesamt knapp 5h... Ist das "normal"(2Ghz)??

    thx Tom

  • Wenn du ein AVI mit AviSource("*.avi", True, "YUY2") öffnest, dann teilst du dem Decoder mit, dass er versuchen soll, das Video als YUY2 zu liefern. Tust du das nicht, könnte er es eventuell auch anders decodieren, je nach Einstellung (vielleicht als RGB24). Also nur zur Sicherheit und evtl. zur Beschlunigung - wenn HuffYUV auf YUV-Modus eingestellt war, dann solltest du auch ohne den Extra-Parameter YUY2-Video erhalten.

  • Zitat

    wenn HuffYUV auf YUV-Modus eingestellt war, dann solltest du auch ohne den Extra-Parameter YUY2-Video erhalten.


    Aber für den TMPGEnc sollte doch am Ende des Scriptes ein "ConvertToRGB24" stehen? Dann wäre das ja eh umsonst oder?

    thx Tom

  • Zitat

    Hmm, kenn mich da ja nicht so aus, es sieht jedenfalls alles sehr verschwommen aus.


    Du musst die richtige Fieldorder fuer Dein Video ermitteln und selbige AviSynth via AssumeTFF()/AssumeBFF() mitteilen. Danach versuch das mal:


    Zitat

    Aber für den TMPGEnc sollte doch am Ende des Scriptes ein "ConvertToRGB24" stehen? Dann wäre das ja eh umsonst oder?


    Eigentlich nicht, weil man sonst das Risiko eingeht, das der Codec vorher schon falsch upsampled.


    [EDIT]
    Das seh ich jetzt erst: LanczosResize(656,544,0,13,720,546)
    Dieses ungerade schneiden ist nicht optimal.

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Außerdem: Besser am Ende als am Anfang, weil im RGB24-Farbraum während der Bearbeitung 1,5x so viele Daten von den Filtern verarbeitet werden müssen als bei YUY2. Deshalb lieber so spät wie möglich nach RGB24 konvertieren (und es ist schon sehr ärgerlich, dass TMPGEnc überhaupt RGB24 fordert, wo doch MPEG auf YUV basiert, und deshalb TMPGEnc letztendlich wieder zurück konvertieren muss; Altlasten von VFAPI).

Jetzt mitmachen!

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