Avisynth mit Virtualdub kann MTS-Datei nicht einlesen

  • Mal zu FFMS2:

    Installiert auf einem frischen Windows 7 Rechner. Kein(!) FFDSHOW oder FFMPEG drauf.
    Nur: AVISYNTH, Virtualdub und FFMS2 (Plugin-Verzeichnis).
    Im Script eine MTS-Datei mit 500MB schön mit
    FFVideosource und FFAudiosource geladen und mit audiodub zusammengehängt.
    Dann ein wenig trim(), ein wenig fadein() und ein bisschen subtitle() mit dissolve()
    --- und schon sind Video und Audio asynchron (Video halbe Sekunde zu spät)
    --- beim Anspringen von Positionen in Vidtualdub (Maus auf Balken oder auch "Go") braucht er ewig (10 Sekunden) oder stürzt ab ("reagiert nicht")...??

    Ist FFMS derart instabil oder ist irgendwas anderes faul??

    Grüße,
    Andreas

  • Zitat

    ....oder ist irgendwas anderes faul??

    kann sein,hab hier ein ähnliches Problem,resp hatte.

    VC-1 und PGS
    entferne ich alle PGS und nehme nur einen Audiostream,dann klappts.

    Beispielclip
    PGS.jpg

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Welches FFMS2? So alt, dass es M2TS nur mit Haali Media Splitter fast zuverlässig lesen könnte? Oder so neu, dass es schon lavformats als Splitter verwendet (wie L-SMASH Source)?

  • Welches FFMS2? So alt, dass es M2TS nur mit Haali Media Splitter fast zuverlässig lesen könnte? Oder so neu, dass es schon lavformats als Splitter verwendet (wie L-SMASH Source)?

    Hm...letzteres vermutlich?
    Es ist FFMS2 2.21, frisch heruntergeladen.

    Grüße,
    Andreas

  • Etwa seit Weihnachten 2014 sollte die Abhängigkeit von Haali raus sein; die Release v2.21 ist also recht aktuell, ja. Sollte es da Probleme geben, wären die Entwickler (z.B. Myrsloik und qyot27) im doom9-Forum sicherlich daran interessiert. Ich werde das mal erwähnen...

    FFMS2 C-plugin r1050+87 ist für mich das aktuellste. Muss mit LoadCPlugin verwendet werden.

    Außerdem noch eine Test-Version 2.22 RC2, die aber schon heftig die Struktur umbaut, um den Inhalt der AVSI-Datei zu integrieren.

    Alternativ wäre L-SMASH Source zu empfehlen (aktuelle Versionen von the_weirdo's DropBox), wird aber MSVC 2013 Runtimes benötigen, die wohl nicht mehr für Windows XP geeignet sein könnten...

    Und letztendlich bleibt immer noch: M2TS mit mkvtoolnix nach MKV umverpacken, das versteht FFMS2 noch ziemlich sicher, auch in älteren Versionen. Der MKV-Container hat den Vorteil, dass er ein paar Metadaten enthält, die das Springen erleichtern, selbst wenn ein Programm nicht seinen eigenen Index generiert.

    Hast du mal eine MediaInfo-Analyse der MTS-Datei? Und vielleicht auch das Skript, um zu sehen, wie komplex es ist?

    Die MTS-Datei (evtl. verschlüsselt) verfügbar zu machen wäre wohl etwas schwieriger, vielleicht via MediaFire.

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten

    2 Mal editiert, zuletzt von LigH (1. Juli 2015 um 09:19)

  • Also, fangen wir mit den einfachen Dingen an: Script (habe ich mal reduziert aufs Minimum):

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

    Gibt im Virtualdub beim Anzeigen mit "ENTER" eine Verzögerung des Bildes gegenüber dem Ton um ca. eine viertel Sekunde. Ist überall gleich wird also nicht mehr im Laufe des Abspielens.

    An den subtitles oder dem dissolve-Befehl liegt es also schon mal nicht.

    Kann es der Splitter sein? Welcher wird überaupt verwendet? Es ist nur Win7 und ffms2 drauf. Nix sonst.
    Und die Einbindung:
    ffms2.* und ffmsindex.exe ins AVISYNTH-Plugins-Verzeichnis kopiert. Sonst nichts!

    Da ist doch bestimmt der Wurm versteckt...?

    MTS-Datei ist eine dieser Art (nicht genau die, sondern viel länger):

    Allgemein
    ID : 0 (0x0)
    Vollständiger Name : C:\temp\00000.MTS
    Format : BDAV
    Format/Info : Blu-ray Video
    Dateigröße : 22,3 MiB
    Dauer : 11s 700ms
    Modus der Gesamtbitrate : variabel
    Gesamte Bitrate : 15,9 Mbps
    maximale Gesamtbitrate : 18,0 Mbps

    Video
    ID : 4113 (0x1011)
    Menü-ID : 1 (0x1)
    Format : AVC
    Format/Info : Advanced Video Codec
    Format-Profil : High@L4
    Format-Einstellungen für CABAC : Ja
    Format-Einstellungen für ReFrames : 2 frames
    Format_Settings_GOP : M=3, N=12
    Codec-ID : 27
    Dauer : 11s 440ms
    Bitraten-Modus : variabel
    Bitrate : 15,0 Mbps
    maximale Bitrate : 16,0 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.290
    Stream-Größe : 20,5 MiB (92%)

    Audio
    ID : 4352 (0x1100)
    Menü-ID : 1 (0x1)
    Format : AC-3
    Format/Info : Audio Coding 3
    Format_Settings_ModeExtension : CM (complete main)
    Format-Einstellungen für Endianess : Big
    Codec-ID : 129
    Dauer : 11s 520ms
    Bitraten-Modus : konstant
    Bitrate : 256 Kbps
    Kanäle : 2 Kanäle
    Kanal-Positionen : Front: L R
    Samplingrate : 48,0 KHz
    Video Verzögerung : -80ms
    Stream-Größe : 360 KiB (2%)

  • Ist ja alles nicht wahr, was das immer für einen Aufwand macht...:-/

    Gibt es eigentlich irgendwo eine *Anleitung*, wie man das eine oder andere Paket installiert...?

    Also gut:

    --> Lsmash runtergeladen, ausgepackt und nur die DLL aus dem AVISYNTH-Unterordner in das AVISYNTH-Pluginverzeichnis kopiert

    --> Script abgeändert:
    cam1a=LSmashAudioSource("C:\temp\00000.MTS")
    cam1v=LSmashVideoSource("C:\temp\00000.MTS")
    audiodub(cam1v,cam1a)
    lanczosresize(640,360)

    --> Mit Virtualdub aufgemacht:
    Fehlermeldung dass irgeneine MSVC..120.DLL fehlt (war ja eigentlich klar).
    Immerhin steht ja auch hier http://avisynth.nl/index.php/LSMASHSource dass man das vcredist-Paket braucht...

    (Un-)Lustigerweise hat er bei erneutem Öffnen der AVS-Datei diese Meldung nicht noch einmal gebracht, sondern dann nur noch, daß er den Befehl LSmashAudioSource nicht kennt...?!?!?! Wenn man also beim ersten mal nicht aufgepasst hat, tappt man im Dunkeln...
    ==> Anregung: Kann man da nicht einfach die Meldung ausgeben, daß dieses vcredist-Paket fehlt? Vielleicht gleich mit Link auf die MS-Seite? Wäre doch echt sinnvoller...

    --> vcredist_x86.exe über o.g. Link geladen (ging nur *ohne* Javascript!?!?) und installiert.

    --> Erneut das Script mit Virtualdub geöffnet:
    Access Violation...:-/

    --> Mal die beiden Befehle getauscht:
    das gleiche...:-/

    --> Das Script abgeändert in die beiden anderen verfügbaren Befehle:
    cam1a=LWLibavAudioSource("C:\temp\00000.MTS")
    cam1v=LWLibavVideoSource("C:\temp\00000.MTS")
    audiodub(cam1v,cam1a)
    lanczosresize(640,360)

    Und geht !!!!! ....ächts...

    Video läßt sich laden, ist synchron, man kann auch springen (z.B. ALT-RECHTS), wobei der allererste Sprung etwas dauert...aber danach, so wie man es von DirectShowSource oder DSS2 kennt.

    Kein längliches Indexfile-geschreibe wie bei FFMS2 und auch (bislang) kein VirtualDub-Absturz.


    Nun denn, er mal DANKE für die Hilfe!!!

    Aber das mit der Anleitung sollten wir noch noch mal klären... :)

    Grüße,
    Andreas

  • Nachtrag:

    F2 dauert 35-40 Sekunden, bis er das neue Script anzeigt, egal, was man geändert hat...
    ALT-F4 dauert genauso lange...?!
    Was ist da los...?

    Grüße,
    Andreas

  • Zitat

    Was ist da los...?


    keine Ahnung,hier habe ich rechts aufm Desk den ollen Win Editor.
    Links den Explorer,offen,aendere ich was am Script und betätige Ctrl+S,sehe ich nach gut 1 Sek.
    links im Explorer,in der Spalte "Änderungsdatum" die neue Zeitangabe.

    Bin auch grad dran an "LWLibavAudioSource / Videosource"
    Nur habe ich ich im Gegensatz zu Dir die Streams nicht auf der Systemplatte.
    Aber daran wirds bei Dir sicher nicht liegen.
    Normales MTS klappt.Ist aber WVC-1 im Stream,hilft mir auch der Multiplexer SolveigMM_ASF leider nicht.
    VDub und da den Stream nach Canopus HQ bleibt mir nur übrig.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • LSMASH...Source ist nur für ISO-Media-Container (MP4, MOV, 3GPP) geeignet. Für die meisten Container sollte man eher LwLibav...Source benutzen.

    Beim ersten Laden des Scriptes erzeugt LwLibav...Source einen Index, man kann aber einstellen, ob der als Datei auf Platte gecacht wird (*.lwi). Im Gegensatz zu FFMS2 erkennt LSMASHSource leider nicht, wenn man dann die Quell-Datei mit einer gleichnamigen ersetzt, dann wird versucht, die alte Indexdatei darauf anzuwenden. Man muss da also selbst darauf achten, gegebenenfalls mal die Indexdatei zu löschen, wenn man oft verschiedene Videoquellen gleichen Namens im gleichen Verzeichnis verarbeitet.

    Dass das Schließen des Skriptes lange dauert, bedeutet vielleicht, dass das Plugin seinen benutzten Speicher gewissenhaft aufräumt, wer weiß... Wenn bei dir aus Mangel an RAM die Auslagerungsdatei verwendet werden musste, wäre das wahrscheinlich.

  • Zum Neuladen: Da habe ich mich unklar ausgedrückt:

    Ich meinte F2 im VirtualDub. Das bewirkt, daß die Quelldatei neu geladen wird (also das ggf. geänderte Script). Bei DirectShowSource kann man schön im Editor "CTRL-S" drücken, im VirdualDub "F2" - das dauert das dann 1-3 Sekunden und der geänderte Stream ist auf dem Schirm - an der gleichen Frame-Nummer, wie vorher. Sehr praktisch für kleine Änderungen, die man sich im Vergleich zu vorher anschauen möchte (Subtitles früher/später, Überblendungen wann anders). Mit LSmash ist es halt wie oben beschrieben: Immer mehr als 30 Sekunden, bis was passiert, teilweise bis zu 45 Sekunden!

    LSMASH...Source ist nur für ISO-Media-Container (MP4, MOV, 3GPP) geeignet. Für die meisten Container sollte man eher LwLibav...Source benutzen.

    OK. Danke. Könnte die Software natürlich auch mit einer Fehlermeldung mal mitteilen statt eine Access Violation zu verursachen... Den Containerinhaltstyp kann man doch vorher auslesen / bestimmen...?

    Beim ersten Laden des Scriptes erzeugt LwLibav...Source einen Index, man kann aber einstellen, ob der als Datei auf Platte gecacht wird (*.lwi).

    Wo stelle ich das ein? Hiier http://avisynth.nl/index.php/LSMASHSource/LSMASHVideoSource finde ich leider nichts dazu.

    Im Gegensatz zu FFMS2 erkennt LSMASHSource leider nicht, wenn man dann die Quell-Datei mit einer gleichnamigen ersetzt, dann wird versucht, die alte Indexdatei darauf anzuwenden.

    Also beim Ausprobieren hatte ich den lanczosresize() auf eine andere Größe gesetzt - da sieht man die Änderung sofort, wenn sie eintritt (also nach 35 Sekunden dann) - aber der Index könnte in diesem Fall doch letztlich der gleiche bleiben, oder? Auch wenn man die AVS nur nochmal speichert (also gleiche Datei, nur anderes Datum und mit sicherheit "alt-index-fähig"), dauert es so lange.

    Ich kann mir nicht vorstellen, daß LSmashSource wirklich so lange braucht, um den Index zu erzeugen - es ist eine 500MB-Datei, also nichts wirklich großes. FFMS2 brauchte *einmalig* unter 10 Sekunden auf dem gleichen Rechner...?!

    Dass das Schließen des Skriptes lange dauert, bedeutet vielleicht, dass das Plugin seinen benutzten Speicher gewissenhaft aufräumt, wer weiß... Wenn bei dir aus Mangel an RAM die Auslagerungsdatei verwendet werden musste, wäre das wahrscheinlich.

    Das ist es sicherlich nicht: 4x3,7GHz, 16GB RAM, keine anderen Anwendungen am laufen (bis auf den Editor und den Datei-Explorer). Speicher aufräumen kann damit nicht so lange dauern. Er swappt auch nix auf der Platte herum (LED nur selten kurz an, also praktisch Leerlauf).

    Was könnte sonst noch sein?

    Es ist wie gesagt kein FFDShow auf dem Rechner, kein FFMPEG, keine LAV-Filters, nichts. Kann das einen Einfluss haben? Fehlt ihm noch was?

    Grüße,
    Andreas

  • Die Mediendatei.ext.lwi wird nur erzeugt, wenn sie noch nicht existiert, während ein Script die Mediendatei.ext lädt. Wenn also beide existieren, wird der Index nicht neu erstellt, sondern aus der Index-Cache-Datei geladen.

    Das Erzeugen der Index-Cache-Datei kann man mit dem Parameter cache=false deaktivieren, dann wird bei jedem Öffnen eines AviSynth-Skriptes aus die Medien-Datei gelesen und ein Index erstellt, der im RAM gehalten wird. Die Funktionsparameter sind in der Datei README im LSMASHSource-Archiv dokumentiert.

    Was beim Neuladen des Skriptes nun exakt passiert, weiß ich nicht. Warum das bei dir so lange dauert, erst recht nicht. Bei mir geht das bei einigen Testvideos unverzüglich.

    Wenn du die Filter im Skript veränderst, die nach LwLibavVideoSource folgen, hat LSMASHSource keinen Grund, den Index neu zu erstellen, das wird also keine Ursache für die Verzögerung sein. Es sei denn, irgendwas wäre so verkorkst, dass bereits ein Lese-Zugriff auf die Index-Cache-Datei an sich ewig dauert. Du solltest die Index-Cache-Datei nur löschen, damit sie neu erzeugt wird, wenn sich der Inhalt der Medien-Quelldatei ändert. Der Inhalt des Skriptes sollte hier irrelevant sein.

    Ob ffdshow installiert ist oder nicht, ist völlig egal, LSMASHSource interessiert sich nicht für DirectShow-Filter. Entsprechend auch LAV Filters als DirectShow-Filter.

    Ob ffmpeg installiert ist oder nicht, ist völlig egal, LSMASHSource interessiert sich nicht für Kommandozeilen-Konverter.

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten

    3 Mal editiert, zuletzt von LigH (2. Juli 2015 um 10:24)

  • ^ noch etwas überarbeitet.

    Soweit ich sehe, passiert das Neuladen "sofort". Ich hab hier "Big Buck Bunny" in CRF 6 encodiert mit FLAC-Tonspur in einer MKV, dieses per LwLibaVideoSource und LwLibavAudioSource geöffnet. Klar, beim Springen hängt es ab und zu mal bis zu 3 Sekunden, aber der Decoder muss ja bei Sprüngen, die nicht zufällig auf einem Keyframe landen, vom letzten vorherigen Keyframe an bis zur Sprungstelle decodieren, das dauert schon mal ein wenig. Aber auch nicht eine halbe Minute...

  • Tja, wenn´s nicht zwischenzeitlich noch andere Ideen gibt, werde ich heute Abend mal ein wenig herumprobieren und dann berichten.
    Danke erst mal!

    Grüße, Andreas

    PS: [OffTopic]Warum klaut diese d****e Forensoft eigentlich immer alle Zeilenumbrüche, wenn man ohne Javascript schreibt...?!?!![/...]

Jetzt mitmachen!

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