Avisynth mit Virtualdub kann MTS-Datei nicht einlesen

  • Meine Zwischenbilanz für das Zusammenschneiden von zwei MTS-Dateien mit AVCHD-Material unter Verwendung von AviSynth und VirtualDub:

    DirectShowSource für Video und Audio:

    Code
    cam1=DirectShowSource("C:\temp\00000.MTS")lanczosresize(640,360)

    - Benötigt FFDShow o.ä.
    - Nicht frame-genau:
    Mehrere Videos zusammenschneiden und korrekt überblenden ist unmöglich.
    Ein Sprung zurück und wieder vor im Virtual-Dub - und schon sind die beiden Videos,
    die eben noch synchron waren, um einige Frames versetzt -
    nicht reproduzierbar, mal so mal so - ungeeignet. :) (das ist bekannt)

    FFMS2 für Video und Audio:

    Code
    cam1a=FFAudioSource("C:\temp\00000.MTS")cam1v=FFVideoSource("C:\temp\00000.MTS")audiodub(cam1v,cam1a)lanczosresize(640,360)

    - Benötigt nichts (?)
    - Frame-genau: OK
    - Aber: Konstantes Delay zwischen Video und Audio im ganzen Video (?)
    - Erstellt Indexfiles und bremst damit die Bearbeitung aus

    L-Smash Source für Video und Audio:

    Code
    cam1a=LWLibavAudioSource("C:\temp\00000.MTS")cam1v=LWLibavVideoSource("C:\temp\00000.MTS")audiodub(cam1v,cam1a)lanczosresize(640,360)

    - Benötigt passende C++-Runtimes
    - Frame-genau: OK
    - Nur mit Windows 7 nutzbar (?)
    - Erstellt Indexfiles und bremst damit die Bearbeitung aus
    - Unerklärliche große Verzögerungen beim Laden, neu-Laden, Schließen der MTS-Datei (?)


    DSS2(Mod) für Video:

    Code
    cam1v=DSS2("C:\temp\00000.MTS")
    audio=xyz.mp3
    audiodub(cam1v,audio)
    lanczosresize(640,360)

    - Benötigt FFMpeg <-- Unsinn --> Korrektuir: FFDShow (?)
    - Benötigt in der "nicht-Mod"-Version einen Splitter (Haali oder LAV z.B.)
    - Frame-genau: OK
    - keine Indexfiles, schnellere Verarbeitung als DirectShowSource
    - kein Audio-Support:
    Audio muß gesondert aus dem Video geholt werden und als eigene Datei
    mit Audiodub wieder angefügt werden (z.B. mit NicAudio).
    Das birgt die üblichen Probleme mit Zeitversatz, leichter Asynchronität
    usw. die man immer hat, wenn man getrennte Files verwendet.


    Korrigiert mich, wenn was falsch ist.

    Ich werde mich dann mal demnächst näher mit letzterem Beschäftigen. :)

    Grüße,
    Andreas

    2 Mal editiert, zuletzt von andreasp (8. Juli 2015 um 15:28) aus folgendem Grund: Unsinn geschrieben. :-)

  • Versuchen wir mal, ein wenig klarzustellen...

    DirectShowSource:

    Ja, die Wahrscheinlichkeit für Probleme ist hoch, je nach installierten DirectShow-Filtern im System, evtl. auch deren Konfiguration.

    FFMS2:

    Konstante Verschiebung muss nicht sein. Möglicherweise liegt sie daran, dass eine M2TS-Datei nicht an GOP-Grenzen vorgeschnitten wurde. M2TS aus DVB sollte man niemals so verarbeiten, wie sie zufällig aufgezeichnet wurde, immer erst mal von Übertragungsfehlern säubern und vorschneiden; von Blu-ray sollte das nicht nötig sein, aber wer weiß, ob auch da ein paar eingefügte Still-Frames Probleme bringen können.

    Es kann helfen, eine M2TS erst mal mit mkvtoolnix in MKV umzuverpacken.

    Je nach verwendetem Compiler kann FFMS2 auch MSVC-Runtimes benötigen, oder auch ein C-Plugin sein (jeweils voneinander unabhängig, nach Wahl des Compilierenden). Aber auf jeden Fall ist alles nötige integriert, ein zusätzliches ffmpeg als CLI-Encoder wird nicht benötigt.

    L-SMASH Works:

    Unerklärlich, ja. Bei fast allen anderen funktioniert es, du bist für mich der erste, von dem ich das Problem höre. Auch unter XP kann es laufen, je nach Version. Aber ebenso besser mit MKV als mit M2TS, obwohl deutlich stabiler; gerade mit Interlaced-AVC ist M2TS irgendwo schwierig zu handhaben. Es benötigt kein ffmpeg, hat doch alles selber integriert.

    DSS2: (original aus dem Haali Media Splitter)

    Wie DirectShowSource, ebenso relativ unzuverlässig. Abhängig von den installierten Filtern (kann z.B. ffdshow oder LAV Filters verwenden, wenn installiert für DirectShow-Player). Ob ffmpeg als CLI-Konverter irgendwo auf der Platte liegt, interessiert aber überhaupt nicht.

    DSS2Mod: (aus dem Xvid4PSP-Projekt)

    Völlig anders: Verwendet bevorzugt eine lokale Kopie der LAV Filters, so wie auch der MPC-HC das tut (nativ, ohne DirectShow als Programmierschnittstelle). Kann aber auch so verwendet werden, dass DirectShow-Filter benutzt werden. Auch hier interessiert sich niemand für ein auf der Festplatte herumliegendes ffmpeg.

    Windows XP:

    Abgekündigt.

    ffmpeg:

    Hat keiner gebraucht. Ist ja auch ein Kommandozeilen-Programm. Wie soll das eingebunden werden?

  • FFMS2:
    Konstante Verschiebung muss nicht sein. Möglicherweise liegt sie daran, dass eine M2TS-Datei nicht an GOP-Grenzen vorgeschnitten wurde. [...] von Blu-ray sollte das nicht nötig sein, aber wer weiß, ob auch da ein paar eingefügte Still-Frames Probleme bringen können.

    Das Material, um das es hier für mich geht, stammt von einer HD-Kamera. Also fallen Empfangsprobleme oder Schnittprobleme weg.

    Es kann helfen, eine M2TS erst mal mit mkvtoolnix in MKV umzuverpacken.

    Das würde ich erst mal ablehnen. Gerade bei längeren Dateien ist vorheriges, "zwischendurchiges" oder "hinterheriges" Umverpacken immer ein großer Zeitaufwand, verdoppelt den nötigen Plattenplatz usw. . Wo AVISYNTH selbst doch schon so leistungsfähig ist und alles in einem Rutsch macht, möchte ich eigentlich auch direkt die Quelldatei bearbeiten (grundsätzlich ist das ja auch kein Problem).

    Windows XP: Abgekündigt.

    Das heißt rein gar nichts. Wir müssen ja nicht die Geldmaschinen-Strategie von M$, ältere Win-Versionen "abzukündigen" noch dadurch unterstützen, daß unsere Software nur auf dem neuesten (teuer zu erwerbenden) Schnickschnack läuft - und Leute womöglich deswegen noch meinen, sich ein neues Windows kaufen zu "müssen". Fakt ist, daß XP noch viele Jahre lang als Betriebssystem häufig anzutreffen sein wird und man da schon kompatibel bleiben sollte, solange es geht. Letztlich stellt es ja kein Problem dar, auch Versionen für XP zu generieren. Oder stellt Win7 irgendwas neues bereit, was "unverzichtbar" für die Programmierung der Videobearbeitung ist?

    Grüße,
    Andreas

  • Zitat

    Das Material, um das es hier für mich geht, stammt von einer HD-Kamera.

    kannst Du einen kleinen Ausschnitt im Netz hochladen.Direct Copy.
    Entweder Link hier rein setzen,oder perZeta Uploader oder WeSendit direkt an meine EMail.
    Bin Morgen auch wieder mit XP unterwegs.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Klein ist zum Bsp. bis 400 MB.

    frage mich zwar warum mit Avisynth wenns ev.auch anders geht.Eine Demo irgend eines Schnitt-Tools könnte ev.auch helfen.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Klein ist zum Bsp. bis 400 MB.

    Das bekomme ich nicht hochgeladen. Ich muß mir das erst nochmal selbst anschauen. Ich melde mich.

    frage mich zwar warum mit Avisynth wenns ev.auch anders geht.Eine Demo irgend eines Schnitt-Tools könnte ev.auch helfen.

    Warum Avisynth? Weil´s genial ist? ;)
    Warum keine Demo? Weil ich nicht vor habe, irgend eine Schrott-SW teuer zu erweben, die dann doch nicht das kann, was ich benötige. Man kennt das... Ich will auch nicht nur drei Werbungen aus einem Film schneiden oder so, sondern richtig damit arbeiten...

    Grüße,
    Andreas

  • Zitat

    Warum Avisynth? Weil´s genial ist? ;)

    da bin ich Deiner Meinung,habs ja selber auch.

    Zitat

    sondern richtig damit arbeiten...


    und genau das mache ich hier..Du brauchst ja vorerst nur eine nicht eingeschränkte Demo eines "nicht Schrott" Videobearbeitungsprogrammes.

    Lade doch ein File mit weniger MBs hoch und sage was Du damit machen möchtest.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Ich habe jetzt noch nicht ganz verstanden, wozu ich was hochladen soll.

    Grundsätzlich möchte ich halt eigenes Videomaterial mit AVISYNTH aufbereiten (ein/ausblenden, schneiden, überblenden, usw.). Mein Wunsch war dabei, die Quell-Datei Avisynth zur Verfügung zu stellen, ohne 1001 Vorverarbeitungsschritte zu benötigen.

    Die vorhandenen Lösungsmöglichkeiten haben alle ihre Nachteile (siehe Auflistung oben).

    Was L-Smash und FFMS2 angeht, ist letztlich schon die Indexdatei das Killer-Kriterium (zumindest auf meinem Rechner).

    Insofern kommt für mich erst mal nur die folgende Lösung in Frage:
    - DSS2 für´s Video
    - Audio vorher extrahieren, die Datei dann (z.B. mit NicAudio wegen AC3-Format im MTS-File) über audiodub() einbinden.
    Ist nicht perfekt, aber ermöglicht frame-genauen Videoschnitt mit Ton.

    Insofern wären meine Fragen erst mal beantwortet. :)

    Grüße,
    Andreas

  • - DSS2 für´s Video

    Ich hoffe, du meinst DSS2Mod (im LAV-Modus) statt DSS2.

    Ansonsten glaube ich nach wie vor, dass du dir durch zu viele unvernünftige Nebenbedingungen eine optimale Arbeitsweise verwehrst; eine davon scheint dein PC an sich zu sein (es gibt ja reichlich zufriedene Nutzer, also scheint eine Ursache in L-SMASH Works weniger wahrscheinlich als eine Ursache in deiner Hardware oder der Windows-Installation). Aber gut, solange die Ergebnisse zuverlässig sind, ist das für dich wohl vertretbar. Also besten Erfolg damit.

  • Nebenbei sei auch erwähnt, dass falls man eine NVIDIA Karte hat DGDecNV vermutlich die beste Variante wäre was die Verlässlichkeit angeht, es wird aber auch eine Indexdatei erstellt (auch wenn diese wesentlich kleiner ist als bei z.B. L-SMASH Works).

  • Um das Thema abzurunden, hier nochmal meine nun gefundene Lösung (sie ähnelt der in diesem Beitrag).

    Ich will eine mit mehreren Kameras (in AVCHD-Format mit Stereo-Ton) gefilmte Veranstaltung mit Virtualdub zusammenschneiden - mit Überblenden zwischen den Kameras und einem einheitlichen Ton direkt von einer der Kameras.

    Dazu brauche ich framegenauen Schnitt mit Audio möglichst ohne Indexdateien-Gerödel, ohne Package-Installation, ohne Versionswirrwar und ohne vorheriges Extrahieren irgendwelcher Spuren, Audio-Tracks o.ä.). Und das geht folgendermaßen: :)

    - VirtualDub installieren (siehe http://www.virtualdub.org/ )
    - FFDSHOW-Tryouts installieren (siehe http://ffdshow-tryout.sourceforge.net/ )
    - DSS2MOD installieren (siehe AVISYNTH-Wiki http://avisynth.nl/index.php/External_filters bzw. direkt auf doom9 im Forum http://forum.doom9.org/showpost.php?p=1699301&postcount=33 )


    Im AVS-Script macht man dann folgendes:

    + Alle notwendigen AVCHD-Dateien mit DSS2Mod einlesen:
    video1=DSS2("c:\originaldateien\kamera1.mts",preroll=15)
    video2=DSS2("c:\originaldateien\kamera2.mts",preroll=15)
    video3=DSS2("c:\originaldateien\kamera3.mts",preroll=15)

    Wie weiter oben erwähnt: Dies ist zum Schneiden schnell und effizient, läßt Virtualdub nicht abstürzen - enthält nur leider erst mal keine Audiospur.

    !! Ganz wichtig ist hierbei der preroll-Parameter, der in der README von DSSMod hervorragend dokumentiert ist: https://xvid4psp.googlecode.com/svn-history/r3…DSS2/README.txt

    Wenn man diesen nicht angibt, bleibt eine Szene beim Einblenden in eine andere (AVISYNTH-Befehl dissolve) solange als Standbild stehen, bis der erste Frame einer GOP im einzublendenden Video erreicht ist - das wäre unschön).


    + Die eine AVCHD-Original-Videodatei, aus der der Ton kommen soll, parallel dazu mit DirectShowSource einlesen (im Beispiel mal von Kamera 1):

    videoaudio1=directshowsource("c:\originaldateien\kamera1.mts",fps=25,convertfps=true)

    !! Auch hier etwas wichtiges: Die Parameter "fps=25" und "convertfps=true".

    (Originaldateien mit 25fps vorausgesetzt - bei anderen Frameraten, diese eintragen!)

    Damit kann Directshowsource, das ja nur anhand der Zeit die Positionierung im Video durchführt, viel besser die einzelnen Frames ermitteln.
    Noch nicht frame-Genau bei Sprüngen, aber das ist egal, weil die Audiodatei ja linear von vorne nach hinten ans Video geklebt wird und somit kein Sprung notwendig ist (siehe unten)!


    + Mit den Videodateien schneiden, einblenden, ausblenden, überblenden, usw. ... was man halt so draus machen möchte.


    Ergebnis ist ein Gesamtvideo ohne Ton in der Variablen "gesamt" (beispielsweise).


    + Dann das Audio aus der directshowsource-Variablen auf das Gesamtvideo "dubben":

    gesamt=audiodub(gesamt,getchannel(videoaudio1,1,2))

    (Stereo-Ton vorausgesetzt, bei Mono halt nur "getchannel(videoaudio1,1)", siehe im AVISYNTH-Wiki http://avisynth.nl/index.php/GetChannel ).

    Und fertig. Bei mir funktioniert dies framegenau zwischen den Videos und mit komplett synchronem Ton auch über lange Zeit. :)


    Grüße,
    Andreas

    5 Mal editiert, zuletzt von andreasp (3. September 2015 um 17:31) aus folgendem Grund: Immer diese Rechtschreibfehler....

Jetzt mitmachen!

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