Avisynth - AlignedSplice

  • Hallo,

    ich bin ein absoluter Neuling was Avisynth angeht, ich will damit über folgendes
    Skript zwei Videos mergen:

    Code
    AlignedSplice(AviSource("pic.avi"),AviSource("video.avi"))
    # Ende

    Ist es mit Avisynth nur möglich AVI-Files zu verarbeiten (dem Namen nach zu urteilen schon;-)) oder gehen evtl. auch mp4s?

  • zwiebel_sondermann
    was ist denn in den mp4s drin? evt. ist es da besser, die Filme vorher zu trennen (Audio/Video). Denn Directshowsource ist wirklich nur ein Notanker und funktioniert auch nur Syncron, wenn Dein Codec-System 100% Perfekt funktioniert. schon ein CPU "hängen" oder irgend etwas anderes, macht die ganze Arbeit zunichte. MultiPass ist bei Directshowsource auch nicht zu empfehlen und manche Anwendungen (zb HC) kommt damit garnicht zurecht.

    Falls Du es trotzdem nutzen mußt / willst, lese Dir bitte genau dei Beschreibung durch. Und EnsureVBRMP3Sync() ist bei Audio so oder so immer gut.

  • Also mit Directshowsource() kriege ich folgende Fehlermeldung:

    Code
    failed to open avs :  Evaluate : Unrecognized exception!(final/merge_mp4.avs, line 1)fina/merge_mp4.avs: Error while opening file

    Das Skript sieht so aus:

    Code
    AlignedSplice(Directshowsource("01.mp4"),Directshowsource("02.mp4"))# Ende

    Und der ffmpeg-Aufruf so:

    Code
    ffmpeg -i final/merge_mp4.avs final/merging.mp4
  • 1) Vorwärts-Slashes als Verzeichnistrenner sind unter Windows eher unüblich. Ob ffmpeg sie trotzdem verarbeitet, weiß ich allerdings nicht.

    2) Dein ffmpeg kann auch bestimmt AVS als Videoquelle verwenden? Ich vermute, nicht jedes Build kann das.

    3) Ein DirectShow-Splitter für MP4 ist natürlich notwendig (z.B. der Haali Media-Splitter).

    4) Ich würde unbedingt empfehlen, vollständige Pfade in den ***Source-Funktionen anzugeben, nicht nur kurz den Dateinamen. Gerade, wenn sich Skript und Videoquellen nicht im aktuellen Verzeichnis befinden. Eventuell ist auch die ausführlichere Schreibweise sicherer:

    PHP
    clip1 = DirectShowSource("Lw:\Pfad\01.mp4")
    clip2 = DirectShowSource("Lw:\Pfad\02.mp4")
    AlignedSplice(clip1, clip2)
  • moin,
    ffmpeg kann vorwardslash,directshowsource auch.müsste dann an den fehlenden pfaden liegen wie von ligh beschrieben....

    g/l

    md "%date%_%time:~0,2%.%time:~3,2%.%time:~6,2%"
    ...........................................................................................
    [X] <---- hier bitte bohren für neuen monitor.

  • Hallo,

    hab das jetzt hinbekommen mit dem Merging, leider habe ich aber kein Audio, liegt aber wahrscheinlich am Codec. Blöd ist nur das ich keine Videos mit 29.97 oder 30fps ausgeben kann, da wird immer angemeckert:

    Code
    mpeg4 ... timebase not supported by mpeg 4 standard
    Error while opening codec for output stream - maybe incorrect parameters such as bit_rate, rate, width or height

    Kann da von euch jemand was mit anfangen? Geht der Befehlt DirectshowSource eigentlich auch auf nem Linux-Rechner?

  • Zitat von LigH

    Hat Linux (überhaupt) DirectShow?

    Hat Linux (schon) AviSynth?

    DirectShow denke ich mal nicht, kann man den Source nicht für Linux compilieren??? Sorry bin da nicht so der Experte...

  • Was ist denn DirectShow überhaupt?

    DirectShow ist ein System, das es ermöglicht, verschiedene "Filter" miteinander zu verbinden, die bestimmte Teilaufgaben erfüllen, welche für das Abspielen von Medien notwendig sind. Angefangen vom Lesen der Dateien, über das Splitten des Kontainers in einzelne Inhalte, über das Decodieren der einzelnen Inhalte, bis hin zum synchronisierten Abspielen über unterschiedliche Technologien.

    Das gesamte System ist teilweise so eng mit der Architektur von Windows verflochten, dass man es mit ziemlicher Sicherheit nicht mal eben so auf ein anderes Betriebssystem übertragen kann, und dabei dennoch die gleichen Schnittstellen für den Zugriff beibehalten kann.

    Für MacOS gibt es in etwa vergleichbar das QuickTime-System.

    Sicher wird es für Linux alternative Systeme geben, die leicht erweiterbar und standardisiert sind. Leider kenne ich mich in diesem Bereich nicht so gut aus. Vielleicht existiert auch unter Linux noch gar kein weltweiter Standard, der es ermöglicht, unterschiedlichste Arten von Medien auf die gleiche Art zu verarbeiten, und als Entwickler leicht zusätzliche Bausteine einzufügen. Wenn da mal jemand etwas Fachwissen beisteuern könnte?
    __

    Bevor nun jemand einwendet, man könne DirectX (und DirectShow) vielleicht auch mit Hilfe von WineX unter Linux laufen lassen ... sicher, das kann gut sein. Aber dann läßt man auch Windows-Programme emuliert laufen, anstatt Linux-Programme. Ein gemeinsames, erweiterbares System direkt unter Linux würde mich doch eher interessieren - und darauf könnte AviSynth für Linux dann sicher auch wesentlich effizienter zugreifen.

    Bisher kenne ich allerdings nur Software, die so ihre eigenen Schnittstellen und Plugins entwickelt. Beispielsweise Xine mit Plugins. Das würde dann auch bedeuten, dass man für jedes halbwegs bekannte Programm immer wieder neue und andere Plugins entwickeln müsste. So wie das unter Windows z.B. auch schon für z.B. WinAmp, Sonique, foobar2000, dbPowerAmp, ... passiert. Was für eine Verschwendung von Programmierleistung.

Jetzt mitmachen!

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