Anfängerskript MPEG2 mit Yadif

  • Bin AviSynth-Anfänger und möchte lediglich MPEG2-Dateien mit AviSynth deinterlacen und anschliessend mit XVID encoden, alles über VirtualDub.

    Nun habe ich schon vieles gelesen, aber so richtig will es nicht klappen. Ich habe dieses Skript erstellt:

    LoadPlugin("C:\Programme\...\mpegdecoder.dll")
    MPEGSource("C:\meine.mpg")
    LoadPlugin("C:\Programme\yadif09\Yadif.dll")

    Wenn ich nur die ersten beiden Zeilen im Skript habe (also ohne Yadif), dann wird die Datei in VirtualDub geladen, aber nur ein schwarz-grüner Hintergrund angezeigt. Müßte ich nicht den Film jetzt sehen können?
    Wenn ich Yadif mit im Skript stehen habe, kommt eine Fehlermeldung.

    Yadif wurde mir empfohlen, darum möchte ich gerne dieses C-Plugin nehmen.

    Mehr will ich mit AviSynth gar nicht machen, kann mir jemand mein Skript korrigieren? Die Plugins Mpegdecoder und Yadif habe ich auf dem Rechner, allerdings beide nicht im AviSynth-Ordner.

    Bin dankbar für Tipps.

  • 1. Welchen MPEG Decoder verwendest Du?
    Die meisten Leute nutzen DGIndex mit der enthaltenen DGDecode.dll, welche dann in AviSynth mittels MPEG2Source("Pfad zum mit DGIndex erstellen Projekt File") aufgerufen wird.
    2. Yadif wird nicht mittels LoadPlugin sondern mittels LoadCPlugin aufgerufen

  • Es ist der "MPEGDekoder von Nik" (habe mir den von der deutschen Anleitung, die bei der Installation dabei war, herausgesucht), ich werde es dann besser mal mit DGIndex versuche, wie von dir vorgeschlagen.

    Stimmt, da hatte ich 'nen Tippfehler, sollte LoadCPlugin heissen, aber es öffnet sich trotzdem nicht in VirtualDub.

  • Habe die gleiche Erfahrung gemacht mit loadCplugin, bei mir funktioniert es nur mit Load_Stdcall_plugin.

    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

  • mawi2006: Du hast auch die Erfahrung gemacht, dass Du anstatt LoadCPlugin, LoadPlugin geschrieben hast und dann hat Virtual Dub bei Dir auch eine Fehlermeldung geworfen Die Du niemanden mitteilen wolltest, aber Load_Stdcall_plugin hat dann geholfen, obwohl Du Yadif selber nie genutzt hast im Skript?

  • Wie oben schon geschrieben, möchte ich selbst aufgenommene TV-Sendungen mit AviSynth deinterlacen (vom Zeilensprung befreien) und danach mit XVID encoden. Ich habe mir AviSynth 2.5 Version heruntergeladen.

    Meine TV-Aufnahmen liegen mir als mpeg-Transportstreams (.ts) vor, nach dem Demultiplexen als Elementary Streams (getrennte Audio- und Videodateien) und nach dem Muxen schliesslich als Program Streams (.mpg).
    Das ist schon meine erste Frage: Welche der o.g. Dateiendungen kommen für das AviSynth-Plugin MPEG2-Dekoder von Nik (für AviSynth 2.5 Version) in Frage? Ich hoffe, man kann das .mpg-File nehmen, da hier schon die Werbung sowie Vor- und Nachlauf entfernt sind.

    Hier nun mein laienhaftes Anfängerskript (noch ohne Deinterlacer):

    # Beispiel - Laden einer MPEG2-Datei
    LoadPlugin("C:\Programme\AviSynth 2.5\...\mpegdecoder.dll")
    MPEGSource("C:\meine.mpg")

    VirtualDub öffnet daraufhin die Datei mit dieser Meldung:
     [Blockierte Grafik: http://img248.imagevenue.com/loc571/th_61220_VirtualDub_D2VFile_122_571lo.jpg]

    Nachdem das .d2v-File (wohl eine Indexdatei) geladen ist, kann ich in VirtualDub nicht den Film sehen, sondern nur diese Streifen (allerdings ist die linke Bildhälfte auch mit Streifen so wie rechts, hab's mit dem Schnappschuss nicht besser hinbekommen):
    [Blockierte Grafik: http://img132.imagevenue.com/loc777/th_61474_VirtualDub_Bild_122_777lo.jpg]
    Ist das normal oder sollte ich nicht den Film zu sehen bekommen?

    Wenn ich nun den Deinterlacer Yadif dazunehme, also:
    LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll"),
    wird die Datei in VirtualDub nicht geladen und es erscheint diese Fehlermeldung:
     [Blockierte Grafik: http://img249.imagevenue.com/loc130/th_58787_VirtualDub_Fehlermeldung_122_130lo.jpg]

    Ich habe im Internet bereits die super Anleitungen von Selur zu XVID, x264 etc. gefunden, leider fehlt so eine Anleitung zu AviSynth, darum fällt mir der Einstieg noch recht schwer.
    Vielleicht kann jemand helfen.

  • "VirtualDub öffnet daraufhin die Datei mit dieser Meldung:"
    Komisch, ich kenne diese Meldung nur, wenn man versucht ein MPEG File direkt, also nicht ein .avs File, per Virtual Dub Mod zu öffnen.

    Mach mal folgendes:
    1. DGMPGDec Version 1.5.0 Executables runterladen und entpacke es in einen Ordner (nenne diesen ab hier: DGIndex-Ordner)
    2. geh in den DGIndex-Ordner und kopiere die enthaltende DGDecode.dll in das Avisynth plugins Verzeichnis (standardmäßig unter: C:\Programme\AviSynth 2.5\plugins zu finden)
    3. starte öffne DGIndex (im DGIndex-Ordner zu finden)
    4. in DGIndex: File->Save as Project ausführen und einen Namen für das Project angeben (gehe im weiteren von "Project.d2v" aus)
    (DGIndex sollte eine Project.d2v und ein oder mehrere Audiostreams erzeugen)
    5. Öffne einen Editor und eine Textdatei zu erstellen und schreibe da folgendes rein:

    Code
    Mpeg2Source("Pfad zur Project.d2v-Datei")

    also z.B.: Mpeg2Source("c:\Project.d2v")
    6. Speichere die Datei unter einem neuen Namen mit .avs als Endung (gehe ab jetzt von Project.avs aus)
    7. Öffne die Project.avs Datei in Virtual Dub
    (jetzt solltest Du in Virtual Dub den Inhalt des Videostreams sehen und durch ihn scrollen können)
    8. hat 7. geklappt, schließe Virtual Dub wieder.
    9. füge oberhalb der Mpeg2Source(...)-Zeile im .avs Skript (Project.avs) die Zeile:

    Code
    LoadCPlugin(" Pfad zur yadif.dll")

    ein, also z.B. LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll")
    10. füge unterhalb der Mpeg2Source(...)-Zeile im .avs Skript (Project.avs) die Zeile:

    Code
    Yadif()

    ein. (speicher die Datei)

    Das gesamte .avs Skript sollte also etwa so aussehen:

    Code
    LoadCPlugin("Pfad zur yadif.dll")
    Mpeg2Source("Pfad zur Project.d2v-Datei")
    Yadif()

    11. Öffne die Project.avs Datei in Virtual Dub (jetzt solltest Du in Virtual Dub den deinterlacten Inhalt des Videostreams sehen und durch ihn scrollen können)

    Cu Selur

    Ps.: "leider fehlt so eine Anleitung zu AviSynth, darum fällt mir der Einstieg noch recht schwer." früher kam Avisynth auch immer direkt mit einer Dokumentation,....

  • Selur:

    LoadCPlugin("... \yadif.dll") (Anm.: yadif.dll vom 11 juli 2007, 14.336 bytes)
    ... funktioniert bei mir auch nur mit der von mawi beschriebenen Methode, dh
    --> Load_Stdcall_plugin("...\yadif.dll").

    Anderenfalls kommt es zu einer Fehlermeldung, dass yadif kein LoadC-Plugin ist.
    Gruss

  • Das hat mir sehr weitergeholfen und ich habe damit mein Video deinterlacen können. Bis auf u.g. Audio-Problem hat alles geklappt. :D:D:D

    4. in DGIndex: File->Save as Project ausführen und einen Namen für das Project angeben (gehe im weiteren von "Project.d2v" aus)
    (DGIndex sollte eine Project.d2v und ein oder mehrere Audiostreams erzeugen)


    Audiostreams hat DGIndex bei mir nicht erzeugt, das File ist also ab hier ohne Ton. Ich habe also wie von dir beschrieben meine .mpg-Datei in DGIndex geöffnet und sie unter dem Menupunkt File mit "Safe Project" als Projektdatei mit der Endung .d2v abgespeichert.
    [Blockierte Grafik: http://img249.imagevenue.com/loc151/th_72049_DGIndex_Save_Project_122_151lo.jpg]

    Habe ich etwas übersehen, muss ich in DGIndex etwas einstellen, um auch den Audioteil zu speichern?

    Selur:

    LoadCPlugin("... \yadif.dll") (Anm.: yadif.dll vom 11 juli 2007, 14.336 bytes)
    ... funktioniert bei mir auch nur mit der von mawi beschriebenen Methode, dh
    --> Load_Stdcall_plugin("...\yadif.dll").

    Anderenfalls kommt es zu einer Fehlermeldung, dass yadif kein LoadC-Plugin ist.
    Gruss


    Bei mir hat es jetzt mit LoadCPlugin geklappt, wie von Selur oben beschrieben. Ich habe Yadif 0.9 Version von Fizick (Alexander Balakhnin). Die yadif.dll hat das Datum 22.07.2007 (14.336 Bytes).

    Nochmals vielen Dank für die Hilfe! :)Jetzt muss ich nur noch das mit dem Audio hinkriegen.

  • Du kannst mal checken unter Audio->Output Method-> sollte Demux Tracks aktiviert sein. (ist der Standard)


    Das ist standardmäßig eingestellt auf "Demux Tracks". Es wird nur die .d2v-Datei erstellt. Wenn ich aber "Demux All Tracks" aktiviere, werden 1-2 Audiodateien erstellt, das sieht im Explorer dann in etwa so aus:
    [Blockierte Grafik: http://img40.imagevenue.com/loc786/th_83483_Projektdateien_122_786lo.jpg]
    (Die vielen Zahlen und Buchstaben bei den Audiodateien hat DGIndex selbst erzeugt.)

    Mein Skript enthält folgende Zeilen:
    LoadCPlugin("C:\Programme\AviSynth 2.5\Externe Plugins\yadif09\yadif.dll")
    Mpeg2Source("C:\...\meine_pojektdatei.d2v")
    Yadif()

    Muß ich vielleicht "Demux All Tracks" nehmen? Muß ich im Skript eine Zeile für das Laden der Audiodatei schreiben? Dort ist ja nur die .d2v-Projektdatei aufgeführt.
    Bin kurz vor dem Ziel und möchte jetzt auch den letzten Schritt mit dem Ton schaffen.

  • Ja, nimm "Demux All Tracks" um den Audisotream zu extrahieren.
    Was Du mit dem AudioTrack machen willst hängt stark davon ab was Du denn am Ende heraushaben willst. -> Wenn Du den Audiostream auch konvertieren willst könntest Du ihn mit dem Audio Plugin von Nic laden und in Virtual Dub (Mod) umwandeln, alternativ kann man auch den Audiostream so lassen wie er ist und mit dem Videostream zusammen in einen Container packen,...

  • Ja, nimm "Demux All Tracks" um den Audisotream zu extrahieren.
    Was Du mit dem AudioTrack machen willst hängt stark davon ab was Du denn am Ende heraushaben willst. -> Wenn Du den Audiostream auch konvertieren willst könntest Du ihn mit dem Audio Plugin von Nic laden und in Virtual Dub (Mod) umwandeln, alternativ kann man auch den Audiostream so lassen wie er ist und mit dem Videostream zusammen in einen Container packen,...


    Die meisten meiner Aufnahmen beinhalten Audio in .mp2 und ich möchte gerne beim späteren Encodieren in XVID daraus .mp3 (mit 128 kb/s) machen (das kann ich ja in XVID und in VirtualDub einstellen), so dass ein ganz gewöhnlicher AVI-Container mit .mp3-Audio dabei herauskommt.
    Was muss ich in mein Skript schreiben, damit der Ton mit in VirtualDub geladen wird? Also so, dass ich ihn beim anschliessenden Encodiervorgang ins .mp3-Format komprimieren kann. Habe schon etwas herumprobiert, aber es will nicht klappen.
    Ich verwende übrigens VirtualDub 1.8.0, VirtualDub Mod kenne ich nicht.

  • 0. NicAudio v1.7 AviSynth 2.5 AC3/MPA/LPCM/DTS Decoder runterladen
    1. die enthaltende NicAudio.dll ins Avisynth-Plugins Verzeichnis kopieren
    2. das Skript wie folgt umschreiben:

    für .ac3 Audio:

    Code
    LoadCPlugin("Pfad zur yadif.dll")Video = Mpeg2Source("Pfad zur Projektdatei.d2v").Yadif()Audio = NicAC3Source("Pfad zur .ac3 Datei")return AudioDub(Video,Audio)

    für .mp2 Audio:

    Code
    LoadCPlugin("Pfad zur yadif.dll")
    Video = Mpeg2Source("Pfad zur Projektdatei.d2v").Yadif()
    Audio = NicMPASource("Pfad zur .mp2 Datei")
    return AudioDub(Video,Audio)

    3. das neue Skript als Quelle nehmen.

    Cu Selur

    Ps.: "Ich verwende übrigens VirtualDub 1.8.0, VirtualDub Mod kenne ich nicht." Das ist gut, bleib dabei. :)

  • Es hat alles geklappt! :daumen:
    Die Audiodateien werden mit dem neuen Skript mitgeladen.

    Vielen Dank für die schnelle Hilfe hier.

    Jetzt werde ich übermütig und werde es noch mit einem Resize-Filter versuchen ;)

  • Nachdem ich mich nun über die Vor- und Nachteile verschiedener Resize-Filter informiert habe, möchte ich es mit Lanczos4Resize (von Nic) versuchen. Ich habe gegooglelt, kann aber keinen Downloadlink finden. Bei meiner AviSynth-Installation habe ich nur die deutsche Anleitung, wo der Filter auch nicht zu finden ist.
    Wo kann ich diesen Filter bekommen? Man will ihn ja auch nicht von einer x-beliebigen Seite herunterladen.
    Danke!

  • Der ist schon ne weile in Avisynth integriert, siehe: http://avisynth.org/oldwiki/index.php?page=Resize

    Der ist da schon drin? Ich konnte ihn in keinem AviSynth-Ordner finden ...

    Mein Deinterlacer Yadif soll unbedingt vor dem Resizen wirksam werden. Ist mein Skript so korrekt? Wird der Resizer einfach so in der Video-Zeile dahintergeschrieben?

    LoadCPlugin("Pfad zur yadif.dll")
    Video = Mpeg2Source("Pfad zur Projektdatei.d2v").Yadif().Lanczos4Resize(720,576)
    Audio = NicMPASource("Pfad zur .mp2 Datei")
    return AudioDub(Video,Audio)

    Ist es richtig, dass hinter Yadif nur eine leere Klammer steht, also ()?

    Nochmals danke. :)

  • Es gibt verschieden Möglichkeiten, Alternative wäre z.B.:

    LoadCPlugin("Pfad zur yadif.dll")
    Mpeg2Source("Pfad zur Projektdatei.d2v")
    Yadif()
    Lanczos4Resize(720,576)
    AudioDub(last, NicMPASource("Pfad zur .mp2 Datei"))

    Würde vor DGIndex mit ProjectX demuxen, ist meines Wissens wesentlich zuverlässiger als DGIndex direkt, kann aber auch sein dass sich DGIndex stark verbessert hat. Alles manell zu können ist natürlich sehr wichtig, ist auf die dauer allerdings etwas umständlich.

Jetzt mitmachen!

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