Interlace oder nicht?

  • Ah, hatte schon so etwas geahnt, daß es irgedetwas mit der Schrift zu tun haben muß, weil es meistens die deutschen Titeleinblendungen betrifft, die ja anders sind als die US-Titel.

    Man muß sich also überlegen, ob man zu so einem Video den Deinterlacer dazunimmt, um auch die Schrift später am PC-Monitor ohne Streifen darstellen zu können oder ob man darauf verzichtet, weil es sowieso nur Millisekunden sind, wo das auftritt.

    Danke! :)

  • Wo es gerade so interessant ist für mich:
    Kann man eigentlich einem Deinterlacer (ich habe bisher nur Erfahrung mit yadif) explizit sagen, daß er ein Video nur von z.B. Frame 0 - Frame 123 deinterlacen soll und den Rest nicht?
    Wie oben in diesem Thread beschrieben, habe ich alte US-Serien aufgenommen, die eigentlich gar nicht deinterlaced werden müssten, weil die Zeilen aus gleichen Halbbildern bestehen - man sieht also keine Kämme ... bis auf die nachträglich von den Sendern eingefügten Schrifteinblendungen am Anfang oder Ende, und die sind interlaced und jetzt mein Problem. Kann man nur diese wenigen Frames deinterlacen?

    Habe Ähnliches zwar bei der Suche gefunden, aber keine Lösungen dazu.

  • Man könnte mit "Trim" und "AlignedSplice" arbeiten, um die entsprechenden Frames anders zu bearbeiten.

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • Es gibt also wirklich eine Lösung dafür :cool:

    Mein Skript sieht in etwa so aus:

    LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll")
    Video = Mpeg2Source("Pfad zur Projektdatei.d2v").Yadif().Lanczos4Resize(720,576)
    Audio = NicMPASource("Pfad zur .mp2-Datei")
    return AudioDub(Video,Audio)

    Wärst du so lieb, mir da als Beispiel zu schreiben, wo ich das einfügen muß? Ich tue mich schwer mit Avisynth und bin schon glücklich, das da oben zusammenbekomen zu haben ...
    Yadif muß also ganz raus oder wie meintest du es?

  • Beispiel:
    TRIM(0,200).Yadif() + TRIM(201,8500) + TRIM(8501,8701).Yadif().
    Jeweils die ersten und die letzten 200 Frames werden deinterlaced, dazwischen nicht. Mußt also feststellen, in welchen Bereichen die Schrifteinblendungen erfolgen.

  • Das wollte ich gerade ausprobieren, habe mir die Abschnitte notiert, die deinterlaced werden sollen.

    Leider kommt beim Öffnen des Skripts in VirtualDub diese Fehlermeldung:

    Avisynth open failure:
    Script error: Invalid arguments to function "TRIM"
    ...

    Mein Skript schaut so aus:

    Zitat

    LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll")
    Video = Mpeg2Source("...").TRIM(0,68954) + TRIM(68955,70493).Yadif()
    Audio = NicMPASource("...")
    return AudioDub(Video,Audio)

    Muß ich mir den Filter TRIM erst installieren? Ich dachte, er ist wie viele andere Filter bereits integriert.
    Ansonsten wäre es eine prima Lösung für mich und genau das, was ich gesucht habe :)

  • Du mußt die TRIM-Zeile gesondert ausweisen, also so:
    Video=mpeg2source(...)
    TRIM(0,68954) + TRIM(68955,70493).Yadif()
    Audio = NicMPASource("...")
    return AudioDub(Video,Audio)

  • Der Vorschlag von hdst ist falsch, der funktioniert nicht: Die Syntax des Befehls lautet

    Trim([clip,] start, end)

    Dabei bedeutet die Angabe "[clip,]", dass hier der Videoclip genannt werden soll, auf den das Ausschneiden angewendet wird; aber wie in der Dokumentation von AviSynth zu lesen ist, muss an dieser Stelle nicht der Name eines Clips auftauchen, wenn man mit dem impliziten Clip "last" arbeitet (indem man gar keine Clipvariablen verwendet).

    Das ist bei diesem Beispiel aber nicht der Fall. MPEG2Source weist seinen Clip einer Ergebnisvariablen "Video" zu. Der implizite Clip "last" wird dadurch bisher noch gar nicht erzeugt. Wird dann einfach so "Trim(last, start, end)" verwendet, versucht AviSynth auf den Clip "last" zuzugreifen und stellt fest, dass der noch leer ist.

    Wer also Clipvariablen verwendet, muss das dann auch konsequent durchziehen, und dem Clip ab und zu mal eine gefilterte Version seiner selbst zuweisen - entweder mit Infix-Notation die Variable als ersten Parameter in die erste Funktion, oder mit Postfix-Notation die Funktionen auf den Clip anwenden. Im folgenden Beispiel sind beide jeweils für eine der beiden Trim-Funktionen zu sehen:

    PHP
    LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll")Video = MPEG2Source(...)Video = Trim(Video,0,68954) + Video.Trim(68955,70493).Yadif()Audio = NicMPASource("...")return AudioDub(Video,Audio)

    Noch mal ein Beispiel zur Bedeutung des Clips "last" - die folgenden beiden Scripte sind in der Wirkung identsch:

    PHP
    LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll")last = MPEG2Source(...)Video = Trim(last,0,68954) + last.Trim(68955,70493).Yadif()Audio = NicMPASource("...")return AudioDub(Video,Audio)
    PHP
    LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll")MPEG2Source(...)Video = Trim(0,68954) + Trim(68955,70493).Yadif()Audio = NicMPASource("...")AudioDub(Video,Audio)

    Der letzte Clip wird übrigens auch implizit via "return last" zurückgegeben, denn weil das Ergebnis von AudioClip keiner Variablen zugewiesen wird, landet es statt dessen in "last", und wenn kein "return" auftaucht, wird "last" zurückgegeben.
    __

    Statt den Clip mit Trim() tatsächlich auseinanderzureißen, kann man Filter auch mit ApplyRange auf einen Bereich anwenden.

    PHP
    LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll")
    Video = MPEG2Source("...").ApplyRange(68955,70493,"Yadif")
    Audio = NicMPASource("...")
    AudioDub(Video,Audio)
  • LigH  hdst:
    Das hat geklappt!!! Encodet habe ich das Video zwar noch nicht, aber die Vorschau zeigt mir ja schon, daß das Ergebnis perfekt wird. Es werden wirklich exakt die Abschnitte deinterlaced, die ich im Skript angegeben habe :):):)

    Danke für die Vorschläge und die Erklärungen dazu, ich denke, ich habe alles soweit verstanden. Habe alle Methoden ausprobiert, und die mit ApplyRange erscheint mir am sinnvollsten für mich. Super!

  • scharfis_brain hat es weiter oben theoretisch erklärt. :) In der Praxis läuft es bei fast allen meiner Aufnahmen nicht so "glatt". Ich schreib's mal von Anfang an, die Fragen kommen dann unten:

    nochmal - für alte US-Serien gilt:
    sie sind in 24fps auf Filmmaterial gedreht.


    Alles klar, handelt sich wieder um 'ne alte US-Serie aus den 80ern.


    Das entstandene Video konnte damals aber nicht so einfach in PAL-gewandet werden. Daher hat man damals die Filmrolle nochmal genommen, auf 25fps beschleunigt, und in eine Telecine-Maschine für PAL-Video gesetzt, die jedes Filmbild 2x abtastet.
    da kommt dann ein video bei raus, bei dem jeweils zwei halbbilder identisch sind. deswegen braucht man ja auch nicht zu deinterlacen.


    Deswegen konnte ich auch keine Kämme entdecken. Hab soweit noch alles verstanden.


    die schriften wurden nach der telecine elektronisch eingeblendet. und die textmaschine arbeitet interlaced und kann halt im 1/50 sec zeitraster (jedes halbbild) text einblenden.


    Das hat meine Frage geklärt, warum ich teilweise Kämme bei den Schrifteinblendungen entdeckt habe. Noch kann ich folgen.


    Jetzt kommt es wieder: Bei 98 % des Materials sind je 2 Halbbilder identisch, wie schön. Aber ich habe heute Frame für Frame angeschaut und sehe Kämme gegen Ende des Videos, s. Schnappschüsse:
    http://img24.imagevenue.com/img.php?image=…_122_1193lo.jpg [Blockierte Grafik: http://img246.imagevenue.com/loc159/th_1654…4_122_159lo.jpg] [Blockierte Grafik: http://img31.imagevenue.com/loc764/th_1657…5_122_764lo.jpg]

    Das kommt bei fast allen Aufnahmen vor, US- sowie deutsche Produktionen: Die Aufnahmen sind fast vollständig wie progressiv, aber immer gegen Anfang und Ende gibt es kleine Bereiche, wo man doch Kämme sieht. Dann kommt schonmal ein Bereich, wo es nicht so ist und dann wechselt es wieder. Bei den Texteinblendungen gibt es mal Kammeffekte und mal nicht. Ich erkenne keine Regelmäßigkeit und mich interessiert, warum das so ist. Sind es letztendlich nur Fehler bei der Ausstrahlung?
    Meine konkreten Fragen:
    1. Warum sind die Text-/Schrifteinblendungen im gleichen Video mal "gekämmt" und mal nicht? (z.B. Episodentitel ja, Darstellernamen nein)
    2. Warum sind bei diesen alten US-Serien (und auch dt. Serien wie Derrick) nicht durchgängig je 2 Halbbilder identisch, sondern warum sind da kleine Bereiche (nur 5 - 10 % des Videos), wo es anders ist?

    (Das hatte mich auch zu der Idee gebracht, nur Teile zu deinterlacen, wie ich es mit Hilfe von LigH und hdst auch geschafft habe.)

  • Habe 4 unbehandelte Ausschnitte aus besagter US-Serienfolge hochgeladen. Über 95 % des Films sind "ungekämmt", aber ganz am Anfang die ersten 1-3 Frames und gegen Ende sind Kämme erkennbar und ich würde gerne wissen, warum:

    Testdatei 1 (MPEG2, 1,74 MB): Filmstart (erste 2-3 Frames interlaced, dann nicht mehr)

    Testdatei 2 (MPEG2, 3,24 MB): ca. Filmmitte (alles ohne Kämme, geht durchgehend bis kurz vor Filmende so):

    Testdatei 3 (MPEG2, 3,54 MB): Kurz vor Filmende (bitte Frame Nr. 27 ansehen, der ist interlaced!, alles andere nicht)

    Testdatei 4 (MPEG2, 4,76 MB): Abspann (ab Frame Nr. 50 interlaced, davor nicht; Texteinblendungen mal interlaced und mal nicht)

    Das ist kein Einzelfall, sondern ich beobachte es bei diversen Aufnahmen, auch bei deutschen Produktionen (Krimi-Serien wie Derrick z.B.).

    Ich habe vor, das Video wie progressiv zu behandeln (zu XviD) und nur an den wenigen Stellen mit Hilfe des Metafilters ApplyRange und dem Deinterlacer Yadif zu deinterlacen, wo Kämme zu erkennen sind. Wäre dies das richtige Vorgehen? Oder wäre es besser, die Frames irgendwie umzusortieren, so daß sie wieder progressiv erscheinen?

    Mittlerweile träume ich schon interlaced ... ;)

    4 Mal editiert, zuletzt von Kruemel2 (16. Oktober 2008 um 20:52) aus folgendem Grund: Rapidshare durch File-Upload.net ersetzt

  • Wie weiter oben nachzulesen, geht es um Videos, die eigentlich progressiv zu behandeln wären, da die Frames aus gleichen Halbbildern bestehen. Warum auch immer, gibt es plötzlich hier und da immer mal einen Frame, der interlaced ist. Da überschneiden sich 2 Szenenbilder und es gibt den Kammeffekt. Das taucht pro Video nur so 2-5x auf und es sind nur einzelne Frames. Es ist sehr mühsam, per ApplyRange anzugeben, welche Einzelframes Yadif deinterlacen soll, denn ich muss ja zu Fuß Frame für Frame absuchen, um die Framenummern anzugeben.

    PHP
    LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll")
    Video = MPEG2Source("...").ApplyRange(123,123,"Yadif").ApplyRange(1234,1234,"Yadif")
    Audio = NicMPASource("...")
    AudioDub(Video,Audio)

    Ich habe in der SuFu etwas von TDeint gefunden, wo man mit der Funktion "(full=false)" nur die wirklich interlacedten Stellen automatisch deinterlacen kann.

    Könnte mir jemand sagen, wie genau ich das in mein Skript einfüge? Schreibe ich nur "TDeint(full=false)"? Kann man dann sicher sein, daß nicht doch alles deinterlaced wird?

    Danke im voraus ...

Jetzt mitmachen!

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