AviSynth lädt keine 32bit IEEE Float WAV per WavSource

  • Es gibt einen minimalen WAV-Header (WAVEFORMAT: reicht für PCM, Codec-ID 1), einen leicht erweiterten WAV-Header (WAVEFORMATEX: erlaubt ein paar codecspezifische Daten, ausreichend für die meisten komprimierten Formate in mono oder stereo), und einen ganz ausführlichen WAV-Header (WAVEFORMATEXTENSIBLE: notwendig für Mehrkanalton, zukunftsorientiert, über die 16-bit-Codec-ID der IANA-Liste hinausgehend mit GUID).

    Theoretisch ist das WAV-Format mit Codec-ID 3 (Samples im Fließkommazahl-Format IEEE-754) so simpel, dass dafür der minimale WAVEFORMAT-Header völlig ausreichend wäre. Ob Single, Double oder Extended Precision (32, 64 oder 80 bit pro Sample und Kanal) vorliegen, lässt sich einfach bestimmen, und die Bitrate ist konstant. Ich sehe keine Notwendigkeit, dass man dafür unbedingt den WAVEFORMATEXTENSIBLE-Header mit GUID braucht. Aber Microsoft ist das wohl irgendwie lieber so...

    Was den Versatz in FFMS2 angeht: "Schön, dass wir mal drüber gesprochen haben", aber wenn der Autor davon nichts erfährt, kann er auch nichts zur Ursache sagen oder eine Lösung anbieten. "Da müsste mal einer Bescheid geben", und wenn ich das tun soll, musst du nur noch "ja" sagen.

  • ich schrieb ja auch von "hier" und da meinte ich natürlich Edius und Sony Vegas pro.Da ist 24 Bit als Defaulteinst.


    Naja... als Egoist bin ich halt von mir ausgegangen - und ich benutze weder Edius noch Vegas ;) . Mir ging's halt um die Audiokonvertierung über AviSynth. 24bit Ton würde da zwar kein Problem darstellen... aber da AviSynth nunmal standardmäßig mit 32bit Float Audio rum hantiert, ist mir das beschriebene Problem halt zwangsweise aufgefallen.


    Habs erst kürzlich mal mit FFaudioSource mal probiert und dann festgestellt dass da Audio immer einen Versatz aufweist.
    http://forum.gleitz.info/showthread.php…t=FFaudioSource


    Wie man auf meinen letzten Screenshots in den von AviSynth gelieferten Infos sieht:

    BlankClip liefert mit FFAudioSource bei der selben Quell-AC3 einen 1 Frame kürzeren Clip als mit LWLibavAudioSource und NicAC3Source. Ergo: aus irgendeinem Grund muss FFAudioSource bei der AC3 eine andere/kürzere Längenangabe an AviSynth übergeben -> eventuell hängt das mit deiner Erfahrung zum Audioversatz zusammen!?!?

    Aufgrund solcher "Merkwürdigkeiten" vertraue ich FFMS2 schon länger nicht mehr und greife lieber zu L-SMASH, oder eben (sofern verfügbar) einem spezialisierteren Source-Plugin (im Fall von AC3-Ton: NicAudio).


    Es gibt einen minimalen WAV-Header (WAVEFORMAT: reicht für PCM, Codec-ID 1), einen leicht erweiterten WAV-Header (WAVEFORMATEX: erlaubt ein paar codecspezifische Daten, ausreichend für die meisten komprimierten Formate in mono oder stereo), und einen ganz ausführlichen WAV-Header (WAVEFORMATEXTENSIBLE: notwendig für Mehrkanalton, zukunftsorientiert, über die 16-bit-Codec-ID der IANA-Liste hinausgehend mit GUID).

    Theoretisch ist das WAV-Format mit Codec-ID 3 (Samples im Fließkommazahl-Format IEEE-754) so simpel, dass dafür der minimale WAVEFORMAT-Header völlig ausreichend wäre. Ob Single, Double oder Extended Precision (32, 64 oder 80 bit pro Sample und Kanal) vorliegen, lässt sich einfach bestimmen, und die Bitrate ist konstant. Ich sehe keine Notwendigkeit, dass man dafür unbedingt den WAVEFORMATEXTENSIBLE-Header mit GUID braucht. Aber Microsoft ist das wohl irgendwie lieber so...


    Mal sehen, ob ich das richtig verstehe:

    Zumindest BeHappy dürfte WAV-Dateien grundsätzlich nur mit einem einfachen WAVEFORMAT-Header erzeugen. WAVEFORMATEXTENSIBLE wäre wohl auch möglich, wenn man Tweak -> ChMask -> 2 einstellt - Standard ist aber der simple WAVEFORMAT-Header.

    Ergo: meine 32bit IEEE Float WAV hat sehr wahrscheinlich "nur" einen einfachen WAVEFORMAT-Header. In der Theorie völlig ausreichend, würde aber Microsoft gerne bei solchen >16bit WAV-Dateien den ausführlichen WAVEFORMATEXTENSIBLE-Header sehen.

    So weit, so unsinnig von Microsoft ;) ! Aber warum hat dann Windows XP kein Problem mit der WAV-Datei, jedoch Windows 7 schon? War Microsoft etwa so konsequent inkonsequent, dass sie die Unterstützung für 32bit Float WAVs mit WAVEFORMAT-Header in früheren Windows-Versionen "frei Haus" mitgeliefert haben, sie aber in späteren wieder entfernten? Aber wenn das der Fall wäre: warum kann dann VirtualDub weder unter Windows XP, noch unter Windows 7 die 32bit Float WAV abspielen??

    Oder anders gefragt: verwendet AviSynth bei der Benutzung von WavSource nicht auch die Funktionen vom Microsoft Wave Mapper?? Sprich: müsste es nicht die selben Fähigkeiten zum Öffnen/Wiedergeben von WAV-Dateien haben, wie VirtualDub???
    Ich frage nur, weil ich nicht verstehe, warum sich VirtualDub unter XP und 7 gleich verhält (= es weigert sich die direkt per "Audio from other file" geladene 32bit IEEE Float WAV abzuspielen), während AviSynth mit WavSource unter XP funktioniert aber unter 7 nicht :huh: !
    Falls WavSource allerdings nicht vollständig auf den Wave Mapper angewiesen ist, würde sich zumindest das Verhalten unter XP erklären lassen - jedoch wiederum nicht das Verhalten unter Win7. Diese Widersprüchlichkeiten wollen mir einfach nicht in den Kopf :wall: !


    Was den Versatz in FFMS2 angeht: "Schön, dass wir mal drüber gesprochen haben", aber wenn der Autor davon nichts erfährt, kann er auch nichts zur Ursache sagen oder eine Lösung anbieten. "Da müsste mal einer Bescheid geben", und wenn ich das tun soll, musst du nur noch "ja" sagen.


    Ich kann natürlich nicht für 'Goldwingfahrer' sprechen - aber ich sage einfach mal "ja" ;) .

    Allerdings beschränken sich meine negativen Erfahrungen mit FFMS2 weniger auf einen Bild/Ton-Zeitversatz, als vielmehr auf falsch erkannte Videoframeraten, Decodierungsfehler und Instabilitäten. Mein einziger Beitrag zum Thema Versatz wäre daher nur der auf der letzten Seite "dokumentierte" Laufzeitunterschied zwischen FFAudioSource und LWLibavAudioSource/NicAC3Source... der nach meinem Verständnis eigentlich nicht auftreten dürfte. Oder!?

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

    2 Mal editiert, zuletzt von Tom Keller (7. April 2014 um 18:57)

  • Viele viele Fragen...

    Warum VirtualDub beides nicht abspielen kann, wird wahrscheinlich damit zusammenhängen, an welches Audiogerät es den Ton schickt, und welche Sample-Formate dieses Ausgabegerät unterstützt. Nehmen wir mal an, in beiden Fällen versucht VirtualDub, Float-Samples an ausgerechnet denjenigen "direkten" Soundkartentreiber zu schicken, der Float-Samples nicht unterstützt. Ein anderer "indirekter" Treiber, der eine Konvertierung der Samples in ein unterstütztes Format zulässt (z.B. "Microsoft Sound Mapper"), wäre zwar vorhanden, ist aber nicht als Ausgabegerät ausgewählt. Dann liegt es nicht am (Nicht-) Lesen-Können, sondern am Nicht-Abspielen-Können.

    Was dann das Lesen-Können angeht ... da kann ich nur spekulieren. Vermutlich will Microsoft die theoretisch völlig veraltete VfW-API schon mal auf den Ruhestand vorbereiten. Was bei XP noch unterstützt wurde, wurde bei W7 schon nicht mehr komplett eingebaut, da verlässt man sich auf Alternativen in anderen APIs.

    Audacity 2.0.5 erlaubt beim "Exportieren" in "andere unkomprimierte Formate" unter anderem die Wahl zwischen "WAV (Microsoft)" und "WAVEX (Microsoft)". Ersteres speichert 16 bit signed integer mit einem WAVEFORMAT-Header (der Chunk "fmt " hat 0x10 = 16 Bytes Länge, Codec-ID = 1), letzteres mit einem WAVEFORMATEXTENSIBLE-Header (der Chunk "fmt " hat 0x28 = 40 Bytes Länge, Codec-ID = 0xFFFE, 22 Bytes formatspezifische Daten). Entsprechendes gilt für IEEE single precision float: "WAV (Microsoft)" speichert mit WAVEFORMAT-Header (der Chunk "fmt " hat 0x10 = 16 Bytes Länge, Codec-ID = 3) und zusätzlichen Chunks wie "fact" und "PEAK", "WAVEX (Microsoft)" speichert mit WAVEFORMATEXTENSIBLE-Header (der Chunk "fmt " hat 0x28 = 40 Bytes Länge, Codec-ID = 0xFFFE, 22 Bytes formatspezifische Daten).

    Unter Windows XP kann AviSynth alle hier enthaltenen Skripte öffnen und zeigt passende Werte für die Tonspur an.

  • Ich hab den AC3Filter (aufgrund besserer Alternativen) sowohl unter XP, als auch unter Win7 nicht installiert.

    Soweit ich weiß, liefert aber AC3Filter auch einen ACM-Codec mit - der ist aber meines Wissens (nomen est omen) nur für AC3-Ton da. Würde mich zwar irgendwie wundern, wenn der noch mehr kann - bei nächster Gelegenheit werd ich's aber trotzdem mal testen...

    Kann es sein, dass 'raffriff42' da irgendwas falsch verstanden hat!?

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Durchaus möglich; schwer nachzuvollziehen, ohne mehrfach sein System umzuinstallieren.

    Unter Windows 7 SP1 64-bit kann AviSynth alle Skripte außer dem einen laden, das 32 bit float mit simplem Header enthält. Und auch die Voll-Installation von AC3Filter 2.6.0 mit ACM-Codec ändert nichts daran.

  • Zitat

    Hat einer von euch den AC3Filter aktiv?


    Ja auf allen PCs.

    http://666kb.com/i/cnbqbrzroyh1e658z.jpg

    Kurzes Testfile aus Beitrag 23,ganz unten.
    Spiele ab und zu auch mit den Win7 DS Filter und setze auch nur selten VDub ein für Avisynthscripte,eher den Procoder.
    Als "Vorschau" für avs kommt hier das olle mpc zum Zuge,so habe ichs schon immer.

    LigH...danke für die Erklärung im Beitrag 21....war hier doch etwas spät um 01:55 Uhr.

    Zitat

    ..........Voll-Installation von AC3Filter 2.6.0............

    Die hier installierte Version 2.6.0b..ist auch schon ein paar Jahre alt.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Schön, dass du einen Screenshot von GraphStudio zeigst. DirectShow-Filter interessieren mich aber überhaupt nicht, wenn es um die Funktion WavSource in AviSynth geht, außer jemand erklärt mir, warum die einen Einfluss auf MME/VfW/AviFile-Funktionen haben.

    Wie ist das nun bei dir mit den Skripten aus #23 auf Windows 7 64-bit? Laden die alle vier in VirtualDub oder MPC oder ProCoder? Teste doch bitte mal exakt das, was mich interessiert, nicht immer nur so was ähnliches und doch ganz anderes... Oder ich missverstehe andauernd, was du mit deinen Antworten ausdrücken willst?

  • Ich hab deine Scripte jetzt auch mal unter Windows 7 32bit durchprobiert - das Ergebnis (Screenshots mit MPC-HC):

    WAV_16si.avs

    [Blockierte Grafik: http://abload.de/img/wav_16si.avs_snapshotjysr8.png]


    WAV_32sf.avs

    [Blockierte Grafik: http://abload.de/img/wav_32sf.avs_snapshotmes9f.png]


    WAVEX_16si.avs

    [Blockierte Grafik: http://abload.de/img/wavex_16si.avs_snapshqbsbx.png]


    WAVEX_32sf.avs

    [Blockierte Grafik: http://abload.de/img/wavex_32sf.avs_snapshbssis.png]


    Die Installation von AC3Filter ändert (erwartungsgemäß) nichts daran.


    Wenn ich die Tonspur aus meinem Eingangsposting erneut durch BeHappy jage (Input = WAV / Output = WAV / Tweak -> ChMask -> 2) erhalte ich eine WAV mit WAVEFORMATEXTENSIBLE-Header -> die lässt sich dann (wenig überraschend) problemlos per WavSource laden.


    EDIT:
    Ein Downgrade auf die letzte AviSynth Stable v2.5.8 änderte natürlich auch nichts. So wie es aussieht, muss ich unter Win7 wohl im Hinterkopf behalten, dass 32bit IEEE Float WAVs mit simplem WAVEFORMAT-Header nicht per WavSource geladen werden dürfen.

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

    Einmal editiert, zuletzt von Tom Keller (8. April 2014 um 19:43)

  • Zitat

    Wie ist das nun bei dir mit den Skripten aus #23 auf Windows 7 64-bit?

    http://666kb.com/i/cnc3g19o9xnp6njt1.jpg

    Zitat


    Teste doch bitte mal exakt das, was mich interessiert,......

    Im Raum stand ja dass das neue W7 keine 32 Bit Float abspielen könne.
    Setze ich hier aber einen Haken in "Media Foundation" bei "wav" kommt der AC3filter zum Zuge......oder in meinem jetzigen Fall..der Canopus Audioencoder im Procoder zur Anwendung.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Im Raum stand ja dass das neue W7 keine 32 Bit Float abspielen könne.


    Nein. Meine Aussage war nur, dass AviSynth bei mir unter Win7 keine 32bit Float WAVs per WavSource laden kann... und daraus folgend wurde der Schluss gezogen, dass es wohl mit Änderungen an den MME/VfW-Funktionen zwischen WinXP und Win7 zu tun haben könnte (denn unter XP ging das noch).

    Dass das DirectShow/MediaFoundation-Subsystem mit 32bit Float Audio umgehen kann, wurde hingegen nie angezweifelt. Die Wiedergabe der entprechenden "Problem-WAV-Datei" per WMP oder MPC-HC klappt auch bei mir problemlos. Aber wie gesagt: darum ging es nicht, sondern um AviSynth und WavSource.

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Mensch... gerade, wo ich mich damit abgefunden hatte, kommt 'Goldwingfahrer' mit:

    willst Du mich veräppeln...klappt doch mit allen Vieren


    ... um die Ecke!

    LigH
    Vielleicht hat man uns ein "kaputtes" oder sogar unvollständiges Windows angedreht ;) !?

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Ev.habt Ihr Beide nur nicht genau aufgepasst....
    ...denn sonst wäre Euch der Unterschied bei meinen 4 Screens aufgefallen [aus Beitrag 30 + 33]

    bei

    Zitat

    WAV_32sf.avs


    zeigt mir der Procoder bei "Audio Codec" nämlich was anderes an als bei den drei anderen avs Scripts.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Das mag schon sein... ABER diese Angabe sagt doch nach meinem Verständnis nichts über die interne Verarbeitung in AviSynth aus, sondern nur über die Weiterverarbeitung des Tons in ProCoder, NACHDEM er über AviSynth ausgegeben wurde. Kann schon sein, dass da in deinem Fall z.B. der AC3Filter den von AviSynth ausgegebenen Ton entgegen nimmt und weiter reicht (wobei allerdings merkwürdig ist, dass beim WAV_32sf.avs Script 16 Bits/Sample angegeben wird -> aber vermutlich ist der AC3Filter für die 32bit->16bit Konvertierung verantwortlich).

    Das ändert aber nichts an der Tatsache, dass das AviSynth-Script bei dir ÜBERHAUPT Ton ausgibt. Bei 'LigH' und mir kann AviSynth die WAV gar nicht erst laden... geschweige denn deren Ton ausgeben.

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Zitat

    ...aber vermutlich ist der AC3Filter für die 32bit->16bit Konvertierung verantwortlich).


    Ja,das ist er,stelle ich da um auf 32 oder float,dann siehts so aus
    http://666kb.com/i/cne1bqy36t803dsvq.png

    Mehr weiss ich auch nicht denn ich bearbeite fast nie Audio mit Avisynth.
    Ich wollte es nur mal wegen Deiner Frage mal probieren.

    Gratulation zum Schnapszahl-Posting

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Ich kann mir das nur so vorstellen, dass der ProCoder das AviSynth-Skript über die DirectShow-Brücke vom ffdshow oder den aktuellen LAV Filters lädt, aber nicht über VfW-Funktionen.

    Und genau deshalb bestehen wir darauf, so was mit VirtualDub auszuprobieren. Da kann man wenigstens absolut sicher sein, dass hier VfW oder das AviSynth-Interface verwendet werden, aber eben gerade nicht DirectShow; und das ist hier wirklich wichtig.

Jetzt mitmachen!

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