AvsDec & WavSplit mit "gepipetem" In- und Output

  • Hallo zusammen,

    in den seltenen Fällen, in denen ich eine mehrkanalige AC3- oder DTS-Datei in einzelne Mono-WAVs zerlegen möchte, verwende ich normalerweise BeHappy, was auch wunderbar funktioniert. Nun möchte ich aber zahlreiche Dateien automatisiert und auf einen Schlag verarbeiten und nicht jede einzeln in das BeHappy-GUI ziehen müssen. Generell scheint es sich bei BeHappy allerdings um eine reine UI-Anwendung zu handeln, die keine CLI-Optionen hat, zumindest finde ich keinerlei Informationen darüber.

    Nach einigem Suchen und Ausprobieren habe ich AvsDec (https://github.com/wieslawsoltes/AvsDec) gefunden, das u.a. auch eine aktuelle Version von WavSplit enthält. In der README.md heißt es unter "Features":

    Quote

    Support for pipe output or input whenever possible.

    Das heißt für mich, dass ich die AvsDec.exe und die WavSplit.exe irgendwie via Pipe verbinden kann, so dass AvsDec einen Audiostream aus einem AVISynth-Skript liest und dekodiert und direkt an WavSplit "weiterpiped".

    Die Frage ist: Wie? Bzw. geht das unter Windows überhaupt oder ist das irgendeine Geschichte, die z.B. nur mit WINE unter Linux funktionieren würde? Und geht das in einer Batch-Datei oder muss ich zur PowerShell greifen? Die Dokumentation von AvsDec schweigt sich dazu leider vollkommen aus, Beispiele finde ich auch nirgends.

    Ein kleiner Auszug aus meinen zahllosen gescheiterten Versuchen:

    Code
    AvsDec.exe "mehrkanaligesAudio.avs" | WavSplit.exe "{0}"
    AvsDec.exe -d "mehrkanaligesAudio.avs" | WavSplit.exe "{0}"
    AvsDec.exe -d "mehrkanaligesAudio.avs" | WavSplit.exe -s "{0}"
    WavSplit.exe -s "{0}" < AvsDec.exe -d "audio01.avs"
    WavSplit.exe -s < AvsDec.exe -d "audio01.avs"

    Ich kriegs nicht hin bzw. die korrekte Syntax (falls diese denn unter Windows überhaupt existiert) nicht zusammen. Weiß jemand Rat?

    Gruß, Christian

  • Geht das bei Dir denn wenn Du ne Zwischendatei verwendest?

    Bei mir, liefert "AvsDec.exe -d test.avs test.raw":

    und "WavSplit.exe -s test.raw" liefert:

    Code
    WavSplit v2.5 (x64 Unicode Release, Mar 17 2018 02:45:30)
    Copyright (c) Wieslaw Soltes. All rights reserved.
    File: I:\Hybrid\64bit\Avisynth\test.raw
    File size: 3616000
    
    
    Failed to split file: Not supported WAV file header.

    Wenn ich (https://github.com/chikuzen/avs2pipemod/releases)

    Code
    avs2pipemod64.exe -wav=16bit test.avs > test.wav

    verwende kriege ich ein abspielbares wav raus.

    Aber auch da gibt "WavSplit.exe -s test.wav":

    Code
    WavSplit v2.5 (x64 Unicode Release, Mar 17 2018 02:45:30)
    Copyright (c) Wieslaw Soltes. All rights reserved.
    File: I:\Hybrid\64bit\Avisynth\test.wav
    File size: 1808046
    
    
    Failed to split file: Not supported WAV file header.

    aus.

    -> vermute das WavSplit das Problem ist. Auf jeden Fall scheint mir avs2pipemod brauchbarer (und wesentlich neuer) als avsdec.

    Cu Selur

    Ps.:

    Code
    avs2pipemod64.exe -wav=16bit test.avs | i:\Hybrid\64bit\ffplay.exe -i -

    spielt den Ton richtig ab. (wenn Du bei deinen Files die Channelanzahl kennst, kannst du ne ffmpeg befehlszeile verwenden,.. siehe: https://trac.ffmpeg.org/wiki/AudioChannelManipulation) Wenn die wav Datein auch in einem container stecken drürfen könntest du:

    Code
    avs2pipemod64.exe -wav=16bit test.avs | i:\Hybrid\64bit\ffmpeg.exe -i - -filter_complex channelsplit -c:a pcm_s16le output.mkv

    verwenden.

  • Quote from Selur

    Not supported WAV file header.

    [...]

    vermute das WavSplit das Problem ist.

    Tatsache, darauf hatte ich gar nicht geachtet. Die theoretisch korrekte Syntax ist offenbar

    Code
    AvsDec.exe -d "mehrkanaligesAudio.avs" | WavSplit.exe -s - "{0}"

    scheitert aber entweder daran, dass AvsDec Raw ohne WAV-Header erzeugt, oder WavSplit irgendein generelles Problem hat.

    Code
    avs2pipemod.exe -wav=16bit "mehrkanaligesAudio.avs" | WavSplit.exe -s  "{0}"

    klappt ebenso nicht.

    Die Beschreibung

    Quote

    Decode avisynth audio stream to raw audio file and split multi-channel WAV files into single channel WAV files.

    ist offenbar etwas irreführend und soll vermutllich nicht bedeuten, dass man beides in einem Schritt erledigen kann, sondern dass AvsDec einen Raw-Stream erzeugt, und (völlig unabhängig davon) WavSplit Multikanal-WAV-Dateien in Mono-WAVs aufteilen kann.

    Ich habe zwischenzeitlich eine andere funktionierende CLI-Lösung gefunden, und zwar eac3to:

    Code
    eac3to.exe "input.ac3" "output.wavs"

    Schön simpel, man braucht noch nicht einmal AVISynth oder ähnliches dazwischen und kann bei Bedarf auch ohne Zwischenschritt direkt zwischen diversen Formaten konvertieren, sogar den neueren HD-Audio-Geschichten.

    Vielen Dank euch beiden!

    Gruß, Christian

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!