LSMASHSource = libav sourcefilter, eine alternative to FFmpegSource2?

  • Wie ich gerade bei http://forum.doom9.org/showthread.php?p=1620010#post1620010 gelesen habe, gibt es auch LSMASHSource.

    SourceCode davon gibt's bei:
    https://github.com/VFR-maniac/L-S…master/AviSynth
    Binary gibt's bei:
    http://k4095-takuan.blogspot.de/p/blog-page_17.html

    -> Hat jemand den Filter schon mal getestet?
    Soweit scheint es ordentlich zu laufen, LSMASHVideoSource als MP4-Sourcefilter und LWLibavVideoSource als Alternative zu FFmpegVideoSource, welche aber auch ohne Indexierung der Quelle genutzt werden kann.

    Cu Selur

    Ps.: Im englischen Forum hab ich jetzt mal nen eigenen Thread dazu erstellt: https://forum.doom9.org/showthread.php?t=167435

  • Der Blog ist nun leider doppelt "geschützt": Erst braucht man einen Google-Account, dann erfährt man, dass nur "eingeladene" Personen da mitlesen dürfen...

    Zumindest ist sein Google Drive noch allgemein lesbar. Aktuelles Build: r688v2
    __

    Ich habe gerade eine überraschende Erfahrung gemacht: PAFF-interlaced AVC wird mit Standardwerten so gelesen, dass die Bilder verdoppelt und mit doppelter Rate erscheinen, eine Mischung aus "fieldbased" und "framebased". Für solche Videoquellen (typisch z.B. für AVCHD-Kameras im 1080i-Modus) sollte man den Parameter repeat=true bei LwLibAVVideoSource() verwenden.

  • Noch nicht ausführlich getestet, muss erst mal die Arbeit erledigen... ;)

    WARNUNG: Wenn eine Indexdatei mit passendem Dateinamen für ein Video existiert, wird diese (zumindest in r688-2) nicht neu erstellt, falls sich das Video ändert (und dann der Datei-Zeitstempel der Videodatei neuer als der der Indexdatei ist), was zu Verarbeitungsfehlern führen kann, v.a. wenn dann mal ein Video mit völlig anderem Inhalt unter gleichem Namen geladen wird. Also bei größeren Projekten mit häufig veränderten Szenen-Videoschnipseln immer mal wieder die *.lwi löschen, Indizieren von MKVs geht deutlich schneller als Recodieren eines leider versauten Videos.

  • nebenbei: L-SMASH Works r702 ist verfügbar.
    changelog seit v693:

    Code
    r702: git-f9b2b46  [2013-11-29]  lsmashsource: Add x64 configuration to VC10/11/12 solution.
    r701: git-a3d6d20  [2013-11-29]  lsmashsource: Fix compilation on x64.
    r700: git-acc739a  [2013-11-23]  lwinput: Remove redundant cleanup operations at closing file.
    r699: git-2ea3cae  [2013-11-10]  lwmuxer: Fix the dialog box title.
    r698: git-409bb24  [2013-11-10]  lwdumper: Fix the dialog box title.
    r697: git-b0fea24  [2013-11-10]  AviUtl/progress_dlg: Cosmetics.
    r696: git-a198bea  [2013-11-10]  lwinput: Fix the dialog box title.
    r695: git-1e84230  [2013-11-03]  lsmashsource: Add VC12 support.
    r694: git-0eb40a4  [2013-11-02]  lwindex: The maximum max_num_reorder_pics is equal to 15 for HEVC ver.1.
  • Hi gibt es einen Trick die aktuelle Version (r702) zu laden ?
    Weder "LoadPlugin("..." noch "LoadCPlugin("..." funktionieren -> Unable to load ...
    Und nein, der Pfad ist absolut korrekt !

  • Code
    SetMemoryMax(768)
    SetMTMode(3,0) # change MT mode
    LoadPlugin("G:\Hybrid\avisynthPlugins\LSMASHSource.dll")
    # loading source
    LSMASHVideoSource("H:\TestClips&Co\test.mp4")
    return last


    geht hier ohne Probleme. (Gerade extra noch mal neu runtergeladen um sicher zu gehen, dass ich auch die richtige Version nutze.)
    Hast Du die msvcr120.dll auch neben der LSMASHSource liegen?

  • Und wenn du Runtimes brauchst, dann lad sie dir von Microsoft als Installer herunter (wahlweise auch via wsusoffline.net; man braucht immer eine Patchsammlung, wenn man mal jemandem einen PC frisch aufsetzen will, denn ungepatcht darf kein Windows ins Internet!).

  • Hab gestern mal den L-SMASH Decoder auf ein Video ausprobiert.

    Video Daten
    Name: Spiegel_TV_Magazin_14.05.11_22-10_rtl_70_TVOON_DE.mpg.HQ.avi.otrkey
    Container: AVI
    Videospur: H264
    Audiospur: MP3
    Hersteller: OTR -> Was soll man da groß erwarten ;)

    Code
    LoadPlugin("C:\AviSynth\L-SMASH\LSMASHSource.dll") # r724 Git-7c1dddb > kam hier zum Einsatz! V = LWLibavVideoSource("*.OTR.avi") A = LWLibavAudioSource("*.OTR.mp3") AudioDub(V, A) AssumeFPS(25.000) # Diesen Parameter habe ich mir von FFMS2 abgeschaut, ob er bei L-SMASH auch nötig ist?

    Aufjedenfall funktioniert das ganze und ich kann mir das Video unter VirtualDub anschauen :)


    Meine Fragen:

    1.)

    Ist es besser die Tonspur vorher zu Demuxen und mit L-SMASH separat im Script aufzunehmen? / A = LWLibavAudioSource("*.OTR.mp3")
    Oder die Tonspur direkt im Container als Gesamtstück mit zu laden?

    Code
    LoadPlugin("C:\AviSynth\L-SMASH\LSMASHSource.dll") V = LWLibavVideoSource("*.OTR.avi") A = LWLibavAudioSource("*.OTR.avi") AudioDub(V, A)

    Weiß ja nicht ob es Irgendwo zu Störungen kommen kann...
    Vielleicht gibt es ja fälle, wo man die Tonspur aufjedenfall vorher demuxen muss!


    2.)

    AssumeFPS() # Wird dieser Parameter bei L-SMASH überhaupt benötigt?


    3.)


    Speziell für MP4-Kontainer mit L-SMASH als Demultiplexer
    LSMASHVideoSource(string source, int track = 0, int threads = 0, int seek_mode = 0, int seek_threshold = 10, bool dr = false, bool stacked = false, string format = "")
    LSMASHAudioSource(string source, int track = 0, bool skip_priming = true, string layout = "", int rate = 0)

    Verstehe ich das Richtig?
    Wenn man die Videospur vorher mit My-MP4Box-GUI demuxt = *.H264 <-- Die Datei ist jetzt aus dem Container entpackt,
    dann brauch man doch keinen Demultiplexer mehr anzuwenden?

    Code
    # LSMASHVideoSource(*.mp4) # deaktiviert# jetztLWLibavVideoSource("*.H264")


    4.)

    Habe gerade gesehen, das es für L-SMASH auch einen MT Modus gibt:

    Code
    SetMemoryMax(768)
    SetMTMode(3,0) # change MT mode
    LoadPlugin("G:\Hybrid\avisynthPlugins\LSMASHSource.dll")
    # loading source
    LSMASHVideoSource("H:\TestClips&Co\test.mp4")
    return last

    Find leider auf Doom9 den Beitrag nicht mehr, wo das mit dem Standard Wert von SetMemoryMax() mal erklärt worden ist...
    Ich hatte mal geschrieben, das ich: SetMemoryMax(1024) verwende ( Das war in einem QTGMC Script )
    Darauf hin hatte jemand geschrieben das, das viel zu viel ist und man den Standardwert: SetMemoryMax(512) verwenden soll ( 100%ige Sicherheit )
    Kann mir das jemand kurz erklären, warum das so war?

    Und den Parameter: Return last , brauch man doch erst, wenn man mehrere Videos in einem Rutsch im AviSynth Script abarbeiten möchte?
    Siehe
    #2

    In Selurs Script ist: Return last , an letzter Stelle aktiv..
    Notwendig ist er in seinem fall nicht oder doch?

    3 Mal editiert, zuletzt von H264x (15. Mai 2014 um 13:32)

  • 1) Ich würde empfehlen, es im Container zu verwenden, wenn es nicht ausnahmsweise schiefgeht.

    2) Wenn die Framerate im Container korrekt erkannt wird, gibt es keinen Anlass.

    3) Wenn du eine rohe H.264-Videodatei hast, würde ich nicht garantieren, dass die überhaupt erkannt wird; vielleicht mit LwLibavVideoSource, aber besser im Container verwenden. LSMASHVideoSource ist aber nur für ISO-Media-Container (MOV, MP4), dafür hat er noch einen Extra-Parameter für eine Stream-ID (aber keine Ahnung, wann das mal relevant ist).

    4) Steht in der AviSynth-MediaWiki zu MT. Standard ist 1/4 freier RAM (für 2 GB 32-bit-Prozess also 512 MB). Das Statement "return last" ist der implizite Standard; kann stabiler sein, wenn es explizit drinsteht, kommt auf den Zusammenhang an; wenn nicht "last" ausgegeben werden soll, muss ein "return" mit dem Ergebnis-Clip dastehen.

  • 4.)
    Habe gerade gesehen, das es für L-SMASH auch einen MT Modus gibt:

    Code
    SetMemoryMax(768)
    SetMTMode(3,0) # change MT mode
    LoadPlugin("G:\Hybrid\avisynthPlugins\LSMASHSource.dll")
    # loading source
    LSMASHVideoSource("H:\TestClips&Co\test.mp4")
    return last


    L-Smash hat internes multi-threading, dein Script quadriert die Anzahl der Threads mit SetMTMode(). Wozu soll das gut sein?

    Standard für SetMemoryMax() ist hier erklärt.

  • Ich dachte, weil der initiale Modus nicht 2 ist, gilt Multithreading nicht für das Source-Plugin, sondern nur für die darauf folgenden Clip-Filterung – ab da, wo danach SetMTMode(2) folgt?

    Und da danach ja kein SetMTMode(2) folgt, nützt SetMTMode(3) auch eigentlich nichts.

Jetzt mitmachen!

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