Script für DVB Aufnahmen?

  • Ich encode in erster Linie DVB Aufnahmen. Sie sind in der Regel recht "sauber" und interlaced. Zielformat ist MPEG2 mit einer Auflösung von 352x576. Ich habe jetzt schon eine Weile mit Avisynth rumexperimentiert und wollte mein Script mal hier vorstellen, um Anregungen für Verbesserungen zu erhalten.

    Mein Ziel ist es durch die Filterei einen möglichst guten Kompromiß zwischen Rauschreduzierung, Komprimierbarkeit, Geschwindigkeit und guter Bildqualität zu erreichen.


    Hier also mein Script:

    #====================================================#
    # #
    # ~ Movie Title...: test.d2v #
    # ~ Movie Length..: 68650 frames (00:45:46) #
    # ~ Size & Rate...: 720x576 @ 25.000 fps #
    # ~ Dest Aspect...: ½ DVD (352x576) #
    #====================================================#
    LoadPlugin("C:\Programme\MovieStacker\Filters\DGDecode.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\Undot.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\STMedianFilter.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\GripFit_YV12.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\aSharp.dll")

    Mpeg2Source("K:\DVD Work\testdg.d2v")
    Undot()
    aSharp(1.4, 4)
    GripCrop(352, 576, overscan=1, source_anamorphic=false)
    GripSize(resizer="BicubicResize")
    STMedianFilter(3, 3, 1, 1)
    GripBorders()

    #====================================================#


    Speziell mit der Komprimierbarkeit bin ich noch nicht ganz so zufrieden. Vielleicht kann man da noch was machen, ohne das Bild großartig zu verfälschen bzw. zu stark zu filtern?

    Zudem weiß ich noch nicht ganz genau, ob man den Schärfe Filter vor oder nach dem Resizen einsetzen soll. Was ist da günstiger bzw. wo liegen die Vor und Nachteile?

  • Ich würde das Bild nach dem Resize schärfen, dann werden die Kanten der MPEG Macroblöcke schon etwas unterdrückt und nur das eigentliche Bild geschärft.

    Wenn deine Quelle eine Auflösung von 720x576 hat, dann würde ich erst mit crop auf 704x576 reduzieren und dann einfach halbieren, dafür gibt's den Befehl "HorizontalReduceBy2". Der sollte dann auch etwas schneller sein. In einem Thread, denn ich im englischen Forum gestartet habe, wurde ein Link zu einem sehr gutem Rauschfilter gepostet. Hier der Link zu hqdn3d. Ist sehr schnell und gründlich, momentan mein Favourite.

  • Das Problem bei DVB Aufnahmen ist ja weniger das Rauschen als vielmehr das schlechte Encoding des Senders, also zu stark quantisiert. Dies könnte man mit mpeg2source("xxxxxx.d2v",cpu=4) etwas mindern. Aber zwischen den DVB Formaten (S,T,C) gibts ja Qualitätsunterschiede. DVB-T Aufnahmen im Rahmen von ca. AVG 2000kbit Raten lassen sich nicht immer wesentlich verbessern, erst recht nicht, wenn sie interlaced daherkommen.
    Schaue mal in den "DVB-T in Köln ein Witz" Thread rein, dort habe ich eine Funktion erstellt, welche versucht, die Source adaptiv anzugehen.

  • bergi, incredible

    Danke für die ersten Tipps. Das mit dem croppen und halbieren werden ich probieren. Bringt es nur einen Geschwindigkeitsvorteil oder auch eine bessere Qualität?


    Ich habe übrigens DVB-C. Die durchschnittlichen Bitraten der Sendungen liegen so zwischen 1800 (manche Dokus bei Phoenix, die ich dann aber nicht mehr weiter encode) und 3500. Meistens sind es aber "recht hohe" Biraten um die 3000.

    mpeg2source("xxxxxx.d2v",cpu=4)

    Mit dem cpu=x Befehl habe ich schon gearbeitet, allerdings mit der Einstellung=6. Ich fand das er das Bild in dieser Einstellung zu sehr weichzeichnet (vor allem die Hintergründe). Hat mir nicht so zugesagt und daher habe ich es erstmal gelassen. Ist die Einstellung cpu=4 weniger "rabiat"?

    PS: Noch eine weitere Frage. Den Rauschfilter besser vor oder nach dem Resizen einsetzen und wo liegen die Vor und Nachteile? Oder hängt das in erster Linie vom verwendeten Filter ab?

  • Zitat

    Den Rauschfilter besser vor oder nach dem Resizen einsetzen und wo liegen die Vor und Nachteile?

    Am besten vor dem Resizen entrauschen, da der Filter dann mehr Pixels (verwertbare Information) hat. Nachteil dabei ist, dass das dann natürlich langsamer ist, da mehr Pixel durchgerechnet werden müssen. Aber es zahlt sich i.d.R. aus.

    cu, grua

  • Der größte Nachteil an "Rauschfilter nach Resize" ist, dass das Rauschen, was vorher jeden Pixel einzeln betroffen hatte, durch das Resizen über mehrere Pixel verteilt wird. Dadurch wirken die Rauschfilter nicht mehr optimal, sie können nicht mehr zuverlässig herausfinden, ob es dieser oder jener Pixel nun gefiltert werden soll oder nicht.

  • Also, ich habe das Script nach Euren Tipps etwas umgeworfen.


    #================================================= ===#
    # #
    # ~ Movie Title...: test.d2v #
    # ~ Movie Length..: 68650 frames (00:45:46) #
    # ~ Size & Rate...: 720x576 @ 25.000 fps #
    # ~ Dest Aspect...: ½ DVD (352x576) #
    #================================================= ===#
    LoadPlugin("C:\Programme\MovieStacker\Filters\DGDecode.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\Undot.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\STMedianFilter.d ll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\GripFit_YV12.dll ")
    LoadPlugin("C:\Programme\MovieStacker\Filters\aSharp.dll")

    Mpeg2Source("K:\DVD Work\testdg.d2v")
    Undot()
    STMedianFilter(3, 3, 1, 1)
    GripCrop(352, 576, overscan=1, source_anamorphic=false)
    GripSize(resizer="BicubicResize")
    aSharp(1.4, 4)
    GripBorders()

    #================================================= ===#


    Ist das so jetzt besser von der Reihenfolge der Filter?


    bergi

    Der Link ist leider down und ich finde den Filter nirgendwo anders :(

    incredible


    Habe mir den Thread angeschaut, aber ich denke das Problem habe ich nicht. Meine DVB Streams sind in der Regel sehr gut mit minimaler Verblockung bei Sendungen mit niedrigen Bitraten (die besagten Phoenix Dokus).

    Ich denke cpu=4 ist für meine Aufnahme ein wenig zu "heftig".


    PS: Die von Dir in dem Thread geschilderten Probleme gab es in Berlin zu Anfang auch (als ich DVB-T bei meinen Eltern im Zuge der Zwangsumstellung eingerichtet habe dachte ich, dass ist die totale Verar...e). Das hat sich aber mit der Zeit gebessert und jetzt sind die Streams in der Regel recht gut. Ich kann jedenfalls kaum Verblockungen mehr feststellen wenn ich mal da bin (außer bei Sendern wie Euronews die wohl in sehr niedriger Bitrate senden), allerdings reicht die Qualität meinem subjektiven Empfinden nach nicht an DVB-C heran.

    In Berlin lag das Problem angeblich daran, dass in der Übergangsphase noch analog weitergesendet wurde und daher nicht genug Bandbreite zur Verfügung stand (keine Ahnung ob das stimmen kann bin da Laie). Nachdem komplett umgestellt wurde und es bereits Proteste aus der Bevölkerung gab, besserte sich das wie gesagt recht schnell.

  • Sowohl UnDot als auch STMedianFilter arbeiten als "Medianfilter". Beide wirken spatial, STMedian auch temporal. Deshalb würde ich UnDot weglassen, und bei STMedian dafür die Thresholds etwas erhöhen - zumindest könnte sich der Vergleich lohnen.

  • Also ehrlich gesagt verzichte ich bei DVB weitgehend auf irgendwelche Filter. CPU=2 oder CPU=4 tun da immer einen ausgeszeichneten Job und wirken imho besser als Rauschfilter. Denn das, was entfernt werden soll, ist im allgemeinen ja kein Bildrauschen, sondern Verblockung, ausgelöst durch niedrige Bitraten. Die Rauschfilter beseitigen das nicht wirklich, sondern "verschmieren" das nur. Temporal wirkenden Filter setze ich nur bei analogen Videoquellen wie (S-)VHS oder Hi8 ein.

  • Kika

    Zitat

    Also ehrlich gesagt verzichte ich bei DVB weitgehend auf irgendwelche Filter. CPU=2 oder CPU=4 tun da immer einen ausgeszeichneten Job und wirken imho besser als Rauschfilter. Denn das, was entfernt werden soll, ist im allgemeinen ja kein Bildrauschen, sondern Verblockung, ausgelöst durch niedrige Bitraten. Die Rauschfilter beseitigen das nicht wirklich, sondern "verschmieren" das nur. Temporal wirkenden Filter setze ich nur bei analogen Videoquellen wie (S-)VHS oder Hi8 ein.

    Also ich habe bei den meisten Streams so ein Flimmern und Flackern (kann man am besten bei fast einfarbigen Flächen (z.B. Himmel) sehen) im Hintergrund, was ich nur mit einem Temporal wirkenden Filter weg bekomme. Das Bild wirkt zwar im Ergebnis etwas detailreicher wenn man es so belässt und am TV fällt das Flackern so gut wie nicht auf, aber dafür ist das Video dann nicht so gut komprimierbar.

    Ich habe jetzt den halben Tag rumgestestet und habe folgendes Script als ganz brauchbar herausgefunden.

    Das Ergebnis ist gut komprimierbar und das encoden geht auch recht schnell. Was sagt ihr dazu?

    --------------------------------------------------------------------------
    LoadPlugin("C:\Programme\MovieStacker\Filters\DGDecode.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\Undot.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\UnFilter.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\GripFit_YV12.dll ")
    LoadPlugin("C:\Programme\MovieStacker\Filters\TemporalCleaner.dll")

    Mpeg2Source("K:\DVD Work\test.d2v")
    Undot().Unfilter(-5,-5).TemporalCleaner()
    GripCrop(352, 576, overscan=1, source_anamorphic=false)
    GripSize(resizer="LanczosResize")
    ColorYUV(levels="PC->TV")
    GripBorders()
    --------------------------------------------------------------------------

    Folgendes Script ohne den TemporalCleaner macht das Bild etwas detailreicher (dafür mit dem flackern) aber dafür sind meine Testvideos (1 Minute Länge) 1 MB größer (gleiche Einstellungen im TMPG bei gleichem CQ):

    --------------------------------------------------------------------------
    LoadPlugin("C:\Programme\MovieStacker\Filters\DGDecode.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\Undot.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\UnFilter.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\GripFit_YV12.dll ")

    Mpeg2Source("K:\DVD Work\test.d2v", cpu=4)
    Undot().Unfilter(-5,-5).Undot()
    GripCrop(352, 576, overscan=1, source_anamorphic=false)
    GripSize(resizer="LanczosResize")
    ColorYUV(levels="PC->TV")
    GripBorders()
    --------------------------------------------------------------------------

  • Du setzt da einen unfliter(-5,-5) rein?? Warum, denn damit machst du's unscharf - klar gibt bessere Komprimierung, aber die Detailschärfe von DVB(S?) geht flöten.
    Dieser ColorYUV nützt nix, da die Streams imho in der DVD/TV Range sich befinden.
    Versuche mal den temporalsoften mit kleinen Einstellungen "nach" dem GripCrop zu setzen - wenn überhaupt nötig.

  • Den Unfilter mache ich wegen der besseren Komprimierung. Mir es es noch scharf genug und Zeit kostet es auch kaum. Die Test Ergebnisse hier:

    http://forum.doom9.org/showthread.php?threadid=51181

    haben mich auf die Idee gebracht.

    Temporal Soften nach Gripcrop und statt dem Temporal Cleaner? Gilt das auch für die anderen denoister? Würde ja Sinn machen, denn den Rand will ich schließlich nicht filtern.


    "Dieser ColorYUV nützt nix"

    Wenn ich mit DG Decode und PC Scale arbeite wird das Video ohne zu dunkel. Ich habe irgendwo gelesen, dass Avisynth 2.55 eh mit YV12() arbeitet und daher die Farben und die Helligket etwas verfälscht werden. Der Befehl gleicht das wieder aus, dachte ich zumindest und bisher war das Ergebnis von Farbe und Helligkeit her immer mit der Quelle weitestgehend identisch. Oder stimmt das nicht und man sollte in DG Decode gleich auf TV Scale stellen?

  • Bzgl. zu dunkel: Suche nach Wilberts Colormatrix.dll, denn diese dll verhindert jenen luma bug bei mpeg2 importquellen via DVD2AVi/DgIndex DGDecode.

    Den Link zu jenem Thread oben kenn ich, aber da steht NIX über die Qualität des Resultates. Also wenns nur um Geschw. und komprimierung geht, dann muss man sich nicht wundern, wenns demnach aussieht.

    Bevor ich da einen Weichzeichner setze (unfilter(-x,-x) ), würde ich eher eine Matritze nehmen, welche INNERHALB des Encoding Processes die hohen Frequenzen abschneidet, denn das macht imho mehr Sinn.

    Es wird vielerseits behauptet, man solle vor dem Resizen denoisen, aber gehe mal hin und entrausche mit gleichen Temporalsoften-Einstellungen eine Source welche von 704x576 zu 352x576 hin resized wurde, ... und schwupps ist die Noise doppelt so gut beseitigt, was aber einen 352x576 Stream sodann zu Folge hat.

  • Zitat

    Bzgl. zu dunkel: Suche nach Wilberts Colormatrix.dll

    Danke für den Tipp, aber das ist glaube ich nichts für mich, da es laut Readme nicht mit interlaced Videos klappt und da ich nach MPEG2 encode kommt deinterlacen für micht nicht in Frage.

    Zitat

    würde ich eher eine Matritze nehmen, welche INNERHALB des Encoding Processes die hohen Frequenzen abschneidet

    Was eigenet sich da für eine Matritze? Diese "99 Dinger"? Zudem verwende ich den fast nur noch den Procoder und da habe ich noch nirgendwo eine entsprechende Option entdecken können.

    Zitat

    Es wird vielerseits behauptet, man solle vor dem Resizen denoisen, aber gehe mal hin und entrausche mit gleichen Temporalsoften-Einstellungen eine Source welche von 704x576 zu 352x576 hin resized wurde, ... und schwupps ist die Noise doppelt so gut beseitigt, was aber einen 352x576 Stream sodann zu Folge ha

    Sorry, dass habe ich nicht so ganz kapiert. Also nach dem resizen filtern bringt bessere Ergebnisse, aber was hat das zur Folge?

    Wäre das dann ein Script eher nach deinem Geschmack?

    --------------------------------------------------------------------------
    LoadPlugin("C:\Programme\MovieStacker\Filters\DGDecode.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\Undot.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\UnFilter.dll")
    LoadPlugin("C:\Programme\MovieStacker\Filters\GripFit_YV12.dll ")

    Mpeg2Source("K:\DVD Work\test.d2v", cpu=4)
    GripCrop(352, 576, overscan=1, source_anamorphic=false)
    Undot()
    GripSize(resizer="LanczosResize")
    TemporalCleaner(1, 2)
    GripBorders()
    ColorYUV(levels="PC->TV")

  • Sorry, ich sehe du nutzt Moviestacker.

    a) Moviestacker hat einen BUG im Resizing! Nur so nebenbei. Definitiv bei Resizings welche hin zu 528 oder 544 gehen (704/720 PAR auf simple 3/4tel gesetzt = Falsch). Demnach traue ich Moviestacker generell nicht so ganz.

    b) Nehme lieber das aktuelle FitCD, das arbeitet korrekt und setze die Filter lieber manuell ein, als sie via Moviestacker einsetzen zu lassen.

  • Zitat von LigH

    Der größte Nachteil an "Rauschfilter nach Resize" ist, dass das Rauschen, was vorher jeden Pixel einzeln betroffen hatte, durch das Resizen über mehrere Pixel verteilt wird. Dadurch wirken die Rauschfilter nicht mehr optimal, sie können nicht mehr zuverlässig herausfinden, ob es dieser oder jener Pixel nun gefiltert werden soll oder nicht.


    Sorry, LigH, aber das stimmt so nicht: Bereits das resizing auf eine geringere Auflösung mindert das Rauschen, so dass man manchmal sogar ganz auf den Einsatz von Rauschfiltern verzichten kann. Die "Rauschpixel" werden beim Resizing nicht auf mehrere Pixel verteilt; man könnte eher sagen, sie werden auf Subpixel-Größe verkleinert :)

    Bzgl. des Filterns von DVB-Quellen schließe ich mich Kikas Beitrag an. Wenn man unbedingt mit möglichst geringer Bitrate auskommen will, dann macht Filtern Sinn, aber man muss mit den Qualitätsverlusten leben.

    Wieso habt ihr denn alle diese roten Mützen auf? Is denn scho Weihnachten? :)

    bb

  • Zitat von bb

    Bzgl. des Filterns von DVB-Quellen [...] Wenn man unbedingt mit möglichst geringer Bitrate auskommen will, dann macht Filtern Sinn, aber man muss mit den Qualitätsverlusten leben.


    /*öffnet Dose mit Würmern*/

    Heisst das im Umkehrschluss, dass das Filtern von DVB-Quellen keinen Sinn macht, wenn ausreichend Bitrate zur Verfügung steht? :D

  • Zitat von Didée

    Heisst das im Umkehrschluss, dass das Filtern von DVB-Quellen keinen Sinn macht, wenn ausreichend Bitrate zur Verfügung steht? :D


    Naja, mal im Ernst:

    Beim Filtern kommt es darauf an, was man eigentlich erreichen will. Geht's um das Rauschen - und darüber hatte ich ja geschrieben - dann sind DVB-Quellen meist gut genug, so dass sich ein Rauschfilter nicht lohnt, weil er mehr kaputt macht als behebt. Wenn man für's Encoding reichlich Bitrate zur Verfügung hat, dann gibt's auch keinen Grund für's Entrauschen, und man spart auch noch Zeit.

    Will man aber z.B. die Farbe, den Kontrast oder die Bildschärfe verbessern, dann verwendet man die entsprechenden Filter. Das gilt für alle Videoquellen - auch für DVB.

    bb

Jetzt mitmachen!

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