AVCHD Videos in AviSynth Importieren

  • Hallöchen zusammen :)

    Das ist mein erster Beitrag hier, aber ich hoffe mal, dass ich soweit alles richtig mache.
    Nachdem man mir im Chip.de Forum leider bislang nicht helfen konnte, und auch Google den Dienst versagt, stelle ich meine Frage eben hier:

    Wie stellt man es am besten an, ein Video im AVCHD Format in AviSynth zu importieren, um es dort zu deinterlacen? Das Problem ist weniger die Sache mit dem deinterlacing, als das mit dem Importieren, denn mit DirectShowSource funktioniert es nicht. Wenn man das .avs Script dann in VirtualDub öffnen möchte kommt blos ein Fenster mit Hinweis, dass DirectShow das Format nicht Unterstütz :(
    Also, was muss ich denn dann machen? Im Internet habe ich keinen Befehl gefunden, mit dem ich die Videos importieren kann. Außerdem möchte ich möglichst die ganze original Quali erhalten, Konvertieren fällt also als möglichkeit erstmal weg.Ich hoffe ihr könnt mir helfen.

    Ich bin übrigens blutiger Neuling in Sachen AviSynth, und habe bislang nur ein paar Tutorials für die ersten Schritte gesehen und gelesen. Die ich aber leider nicht machen kann, da ich nicht weiß, wie ich meine Videos (Habe nur AVCHD Videos) einlesen kann. Also bitte nicht ganz soo kryptisch schreiben, wenns geht :lol:

    Video Infos:

    Allgemein
    ID : 0 (0x0)
    Vollständiger Name : C:\Users\Jizzle\Desktop\Video\00005.MTS
    Format : BDAV
    Format/Info : Blu-ray Video
    Dateigröße : 78,6 MiB
    Dauer : 27s 793ms
    Gesamte Bitrate : 23,7 Mbps
    maximale Gesamtbitrate : 24,0 Mbps

    Video
    ID : 4113 (0x1011)
    Menü-ID : 1 (0x1)
    Format : AVC
    Format/Info : Advanced Video Codec
    Format-Profil : High@L4.0
    Format-Einstellungen für CABAC : Nein
    Format-Einstellungen für ReFrame : 2 frames
    Format_Settings_GOP : M=1, N=24
    Codec-ID : 27
    Dauer : 27s 800ms
    Bitraten-Modus : variabel
    Bitrate : 22,5 Mbps
    maximale Bitrate : 22,6 Mbps
    Breite : 1 920 Pixel
    Höhe : 1 080 Pixel
    Bildseitenverhältnis : 16:9
    Bildwiederholungsrate : 25,000 FPS
    ColorSpace : YUV
    ChromaSubsampling : 4:2:0
    BitDepth/String : 8 bits
    Scantyp : Interlaced
    Scanreihenfolge : oberes Feld zuerst
    Bits/(Pixel*Frame) : 0.434
    Stream-Größe : 74,6 MiB (95%)

    Audio
    ID : 4352 (0x1100)
    Menü-ID : 1 (0x1)
    Format : AC-3
    Format/Info : Audio Coding 3
    Format_Settings_ModeExtension : CM (complete main)
    Codec-ID : 129
    Dauer : 27s 840ms
    Bitraten-Modus : konstant
    Bitrate : 256 Kbps
    Kanäle : 2 Kanäle
    Kanal-Positionen : Front: L R
    Samplingrate : 48,0 KHz
    BitDepth/String : 16 bits
    Video Verzögerung : -40ms
    Stream-Größe : 870 KiB (1%)

    Text
    ID : 4608 (0x1200)
    Menü-ID : 1 (0x1)
    Format : PGS
    Codec-ID : 144
    Dauer : 27s 335ms
    Video Verzögerung : -40ms

    Sytem: Windows 7 Home Premium, AviSynth 2.58,

    mfg Jizzle :)

  • :welcome:

    AVCHD enthält MPEG4-AVC-Video (H.264) und Dolby-Digital-Audio (AC3) in einem MPEG2 Transport Stream mit Timecodes (M2TS).

    Die enthaltenen Video- und Audio-Spuren lassen sich beispielsweise mit dem AviSynth-eigenen Plugin "FFmpegSource2" (FFMS2.dll) decodieren; nur das umgebende Kontainerformat M2TS mag FFMS2 noch nicht so besonders, zumindest nicht ohne Hilfe. Hier gäbe es mehrere grundsätzliche Möglichkeiten:

    a) Durch das Installieren des Haali Media Splitters (MatroskaSplitter.exe) kann FFMS2 eventuell auch Transport-Streams direkt lesen. Nach dem Laden des Plugins {LoadPlugin("FFMS2.dll")} und dem Importieren des Hilfsskriptes {Import("FFMS2.avsi")} steht dann die Funktion zum automatischen Öffnen beider Spuren gleichzeitig zur Verfügung {FFmpegSource2("00005.MTS")}.

    b) Man konvertiert die M2TS-Datei in eine MKV-Datei – entweder mit GDSMUX aus dem Haali Media Splitter (im Startmenü-Untermenü enthalten), oder durch mkvmerge (bzw. MKVmergeGUI = mmg.exe) aus der mkvtoolnix-Installation für Windows.

    c) Man demultiplext die M2TS-Datei und erhält die "rohen" Elementarstreams von Video (*.264) und Audio (*.ac3), die man jeweils einzeln mit Funktionen aus FFMS2 öffnet (FFVideoSource + FFAudioSource). Das ginge beispielsweise mit tsMuxeR oder tsremux u.v.a.

    d) Anstatt FFmpegSource kämen noch Alternativen in Frage: Wenn man etwas Kleingeld und eine Nvidia-Grafikkarte ab Generation 8 hat, könnte man das Video auch mit DGDecNV laden; mit etwas mehr Kleingeld auch ohne Nvidia-Karte, aber mit DGAVCDecDI; für den AC3-Ton käme noch NicAudioSource in Frage ... oder man lässt die Tonspur am besten, wie sie ist, AC3 kann man ja auch in viele Kopien wieder unverändert einfügen.


    Das wäre zumindest der Vorschlag zur sauberen Lösung.

    Na gut ... nach der Installation des Haali Media Splitters wird dann vermutlich auch DirectShowSource funktionieren ... aber wie schon dutzendfach erwähnt: DirectShowSource "ist wie eine Schachtel Pralinen" (siehe Forest Gump), sehr abhängig von Auswahl und Konfiguration installierter DirectShow-Filter, und unsicher bezüglich framegenauer Decodierung und unerwarteter Nachbearbeitung (wer weiß, ob nicht schon einer der Filter das Video durch dummes Überblende-Deinterlacing zermatscht...).

  • Okay, vielen Dank schonmal für deine Antwort. Ich habe jetzt erstmal nur Methode b) probiert, und es hat funktioniert :lol:

    Aber ich habe noch ein paar Fragen:

    - Bei Methode b) wird konvertiert, also verliere ich doch etwas an Qualität, oder ist das bei mkv nicht der Fall?

    - Das in Methode a) erwähnte Hilfscript, wo bekommt man das her?

    - Welche Methode ist die beste, sprich, bei welcher verliere ich am wenigsten (keine?) Qualität? Oder ist das bei allen der Fall? Oder keiner?

    Sorry wenn ich so simple Fragen stelle, aber ich kenne mich mit AviSynth ja noch schlecht aus, und würde gern von Anfang an alles richtig machen, denn die Videos sollen am Ende wirklich gute Qualität haben.

    Ich hoffe du kannst mir nochmal helfen, mfg Jizzle :)

  • MKV ist kein Codec! Also wird bei der Konvertierung von einem Kontainer wie M2TS in einen anderen Konvainer wie MKV nichts neu encodiert, Inhalte verlieren nichts an Qualität. Es wird einfach nur "von einem Pappkarton in eine Transportkiste" umverpackt, aber der Inhalt verändert sich dabei nicht.

    Bis zum Laden in AviSynth passiert also erst mal nichts mit der Qualität. Verluste bekommst du erst bei der Konvertierung von Inhalten (Video oder Audio), also beim Abspeichern in ein anderes Format, oder beim Filtern (z.B. beim Deinterlacing).

    Wenn du das Video wirklich unbedingt schon als Videodatei deinterlacen musst, dann musst du es auch komplett neu encodieren, und dann wirst du bezüglich des Video-Inhaltes Verluste haben. Prüfe also erst mal, ob das überhaupt nötig ist. Vielleicht können das auch Player oder Fernseher schon gut genug. Aber wenn du der Meinung bist, dass es sinnvoll und nötig ist, dann nimm dir auch die Zeit für einen intelligenteren Deinterlacer (für die meisten reicht TDeint als sehr guter Kompromiss).

    Das Audio musst du nicht verändern. Also solltest du es auch möglichst gar nicht erst durch AviSynth schleusen. Es wird demultiplext und in die Kopie wieder als Tonspur multiplext.

    Das Hilfsskript für a) ist mit im ZIP-Archiv des FFMS2-Plugins enthalten.

  • Hallöchen, ich bin es nochmal :)

    Also, ich musste leider mein Windows 7 neu aufsetzen, und als ich dann alle Programme, einschließlich AviSynth, wieder installiert habe, ist mir aufgefallen, dass ich die ffms2.dll nicht gerettet habe. Also habe ich gegoogelt, und auch einen Link zum download gefunden, aber die dll scheint nicht ganz richtig zu sein. Jedenfalls kommt jetzt die Meldung "Script Error: There is no function named FFmpegSource2", wenn ich die .avs Datei abspiele :(
    Allmählich dreh ich durch! Erst lassen sich meine Videos nicht öffnen, dann schaffe ich es mit deiner Hilfe doch. Dann geht kurz darauf Windows kaputt, und ich muss die Festplatte formatieren, und Windows neu aufsetzen. Und jetzt geht es immer noch nicht... das kann doch nicht wahr sein.
    Jedenfalls, könnt ihr mir
    a) bitte mal einen verlässlichen download Link zur ffms2.dll und dem Hilffscript geben?
    b) vieleicht nochmal genau sagen, wie ich Methode b) anwenden muss?

    Ich hoffe ihr könnt mir nochmal helfen, mfg Jizzle :)

  • Die Methode b) ist doch gar nicht so kompliziert: Entweder man started nach dem Installieren von mkvtoolnix die MKVmergeGUI (auf dem Desktop verlinkt, oder mmg.exe), öffnet die M2TS-Datei, speichert die MKV-Datei — oder wenn die MKVmergeGUI M2TS nicht öffnen mag: man started nach dem Installieren vom Haali Media Splitter das Zusatzprogramm GDSMUX (im Start-Menü verlinkt, oder gdsmux.exe), öffnet die M2TS-Datei, speichert die MKV-Datei.

    Wenn es klappt, wird die MKV-Datei in wenigen Sekunden, vielleicht Minuten, erzeugt (weil die Video- und Audio-Inhalte "einfach bloß" kopiert werden, ohne sie zu verändern ... mehr oder weniger).

    Und dann öffnet man die MKV-Datei in der AviSynth-Funktion "FFVideoSource".

  • Hallöchen, :)

    Vielen Dank für eure Antworten, aber leider war es das immer noch nicht.
    Ich habe das FFMS2-Plugin heruntergeladen, entpacked und in den Plugin Ordner von AviSynth verschoben. Soweit so gut. Wenn ich jetzt aber ein wie folgt aussehendes Script mit dem Windows Media Player zu öffnen versuche, geht das nicht:

    LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\ffmpegsource-2.15-mt\ffms2.dll")
    FFVideoSource2("C:\Users\Jizzle\Videos\Video\Script.mkv")

    Ich bekomme lediglich eine Fehlermeldung, dass ich keinen passenden Codec zum abspielen des Videos hätte. In VirtualDub erscheint der Fehler: "AVI Import Filter error: (unknown) (80040154)"
    Scripte, in denen ich die .mkv Datei mit DirectShowSource lade, lassen sich abspielen.
    Ist bei mir was nicht in Ordnung, oder stelle ich mich einfach zu doof an? Brauche ich die .avsi Datei auch noch, oder fehlt mir wirklich ein Codec?
    Könntet ihr mir evtl. mal ein Script posten, wie es richtig wäre?

    Ich hoffe ihr könnt mir nochmal helfen,
    mfg Jizzle :)

  • FFmpegSource2() braucht man auch nur, wenn man sowohl Video als auch Audio konvertieren will.

    Da du das Audio aber original lassen willst, also nur das Video überhaupt in AviSynth geladen werden soll, reicht FFvideoSource() - und dafür muss ffms2.avsi noch nicht mal geladen werden.

  • Vielen Dank für die Antworten, geholfen haben sie leider nicht.

    So langsam nervt es wirklich, hm? Sorry das ich so schwierig bin, aber es ist wohl so.
    Ich habe mich da übrigens vertippt, ich habe im Script nie FFVideoSource2 stehen gehabt, es war auch FFVideoSource("Pfad"). Jdenfalls, ich habe nun schon Methode a) b) und c) getestet, und zwar immer mit dem gleichen Ergebniss: Windows Meida Player will keinen Codec finden, VirtualDub gibt einfach nur Error aus. Das selbe auf einem anderen PC. Ich verstehe nicht, wieso es nichtmehr geht, ich hatte es doch schonmal! Das Script sieht momentan so aus:

    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\ffms2.dll")
    FFVideoSource("I:\AviSynth\Video\Vid.mkv")

    Habt ihr vieleicht eine Idee, woran das liegen kann? Muss ich hinter FFVideoSource noch irgendetwas schreiben, damit Windows 7 das unterstützt? Denn Grundsetzlich an den .avs Dateien liegt es ja nicht. Mit DirectShowSource geht es ja.
    Mit FFmpegSource2 vlt. auch, aber da bekomme ich nur die Fehlermeldung "There ist no function named "ffindex"

    Am liebsten würde ich einfach sagen, "ich geb auf", aber jetzt lässt mich das Thema erstrecht nicht mehr los. Danke schonmal für eure Hilfe,
    mfg Jizzle :)

  • Es könnte sein, dass AviSynth unkomprimiertes YV12-Video ausgibt, was ohne zusätzlichen Konverter nicht auf dem Bildschirm angezeigt werden kann; weiterverarbeiten lässt sich das aber trotzdem. Es gibt verschiedene VfW-Codecs, die für ein älteres VirtualDub oder VirtualDubMod die Konvertierung von YV12 in ein anzeigbares Format übernehmen (z.B. Xvid oder ffdshow, wenn man dessen VfW-Codec entsprechend konfiguriert); aktuelle VirtualDub-Versionen müssten selber YUV-Formate umwandeln können.

    VirtualDub gibt einfach nur Error aus.

    Und alle zusammen im Chor: Welchen?

    Je genauer du Probleme dokumentierst (buchstabengetreu abgetippte Texte, zur Not Screenshot), um so sicherer kann dir geholfen werden.
    __

    Zum Anzeigen im MS-WMP ist AviSynth sowieso nicht gedacht...
    __

    Und damit FFmpegSource2() komplett funktioniert, solltest du vielleicht noch eine Zeile einfügen:

    Code
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\ffms2.dll")
    [B]Import("C:\Program Files (x86)\AviSynth 2.5\plugins\ffms2.avsi")[/B]
    FFmpegSource2("I:\AviSynth\Video\Vid.mkv")

    Letztlich macht das aber auch nicht viel anderes, als FFVideoSource und FFAudioSource gemeinsam aufzurufen, nachdem FFIndex das Video indexiert hat. Letztlich bleibt es dabei, dass für dich eigentlich allein FFVideoSource interessant ist. Lediglich das vorherige Indexieren sollte helfen. Aber das sollte die ffms2.dll ohnehin automatisch tun, wenn die Indexdatei noch nicht existiert.

  • Hi :)

    Also nochmal ausführlich:

    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\ffms2.dll") Import("C:\Program Files (x86)\AviSynth 2.5\plugins\ffms2.avsi") FFmpegSource2("I:\AviSynth\Video\Vid.mkv")
    Funktioniert nicht, da dann der Fehler "There is no function named ffindex" angezeigt wird. Die .dll lässt sich nicht indexieren, denn das index Programm stürzt ab, wenn ich es versuche.
    Und wie du schon gesagt hast, ist FFVideoSource sowieso die für mich interessantere Variante. WMP liefert die Fehlermeldung "Windows Media Player kann die Datei nicht wiedergeben. Möglicherweise unterstützt der Player den Dateityp nicht, oder ein erforderlicher Codec ist nicht auf dem Computer installiert."
    Virtual Dub gibt aus "AVI Import Filter error: (Unknown) (80040154)"
    DirectShowSOurce-Scripte lassen sich mit beiden Playern Problemlos abspielen.

    Nochmal ein paar Infos nebenbei:
    Installiertes Betriebssystem: Windows 7 Home Premium 64bit
    AviSynth 32bit (Da ich meine gelesen zu haben, dass für 64bit kaum Plugins vorhanden sind?)
    VirtualDub 64bit
    FFMS2 habe ich die 32 bit version geladen, damit sie mit meinem AviSynth kompatibel ist.

    Kann es daran liegen? Muss ich für alles 64bit nehmen, bzw. sind die Plugins nicht wie die meisten 32bit Programme mit 64bit kompatibel?

    Ich werde das morgen auchnochmal testen, blöd das mir das jetzt erst einfällt. Wenn ihr noch was genaueres wisst, dann versuche ich das gerne auch.
    Bis morgen, mfg Jizzle :)

    Edit: Spielt die Groß-und-klein Schreibung bei AviSynth eigentlich eine Rolle? Also, kann ich auch ffvideosource, statt FFVideoSource schreiben?

  • VirtualDub 64 bit braucht aber AviSynth 64 bit.

    Und 32-bit-Programme brauchen AviSynth 32 bit.

    Entsprechend wirst du auch als DirectShow-Decoderfilter sowohl ffdshow 32 bit für 32-bit-Programme als auch ffdshow 64 bit für 64-bit-Programme brauchen. Und selbst dann kann es sein, dass kein DirectShow-Mediaplayer AviSynth-Skripte öffnet. AviSynth ist ein VfW-Frameserver, kein DirectShow-Filter.

    Auch AviSynth-Plugins müssen vom Typ zu AviSynth passen.

    Und die Großschreibung spielt keine Rolle. Aber das kannst du ja in der Dokumentation lesen, die mit AviSynth zusammen auf deine Platte installiert wird.

  • Okay, also vorweg, jatzt läuft es :lol:

    Nachdem ich erst versucht habe, Avisynth 64bit zu installieren, was aus sonstwelchen gründen nichtmehr ausfürhbar war (Habe wahrscheinlich was falsch gemacht...), habe ich Avisynth nochmal komplett von der Festplatte gekratzt, und von Chip.de die 32bit Version geladen, und installiert. Dann von der Avisynth Seite die ffms2-r517.7z Datei geladen, mit 7zip entpacked und die .dll, die .avsi und den ffindex in den Plugin Ordner verschoben, und jetzt läuft es! Ich kann die Videos in VD (32 bit) öffnen. Vielen Dank für eure Hilfe, jetzt ist die Lösung gefunden.

    Eine allerletzte Frage: muss man die Threads hier auch, wie bei Chip.de, als gelöst markieren? Wenn ja, wie mache ich das?

    mfg Jizzle, und danke nochmal :)

  • Wieso von chip.de, anstatt von der eigentlichen Quelle?

    http://sourceforge.net/projects/avisynth2
    __

    Eine Beitragsmarkierung haben wir nicht. Aber wenn du darauf bestehst, kann ein Moderator für dich den Beitragstitel entsprechend bearbeiten.

Jetzt mitmachen!

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