Video- und Audiofile per Avisynth ein-/ausblenden...

  • Hallo zusammen,

    ich würde gerne bei einer Kodierung per Kommandozeile ein Video- und ein Audiofile ein- und ausblenden. Da dachte ich dann an Avisynth. Für die Video-Spur habe ich das hier gefunden: http://avisynth.nl/index.php/Fade

    Jetzt brauche ich noch etwas für ein Wav-File, habe bisher aber noch nichts gefunden. Hat jemand eine Ahnung wie das möglich ist? Oder ob es überhaupt geht?


    Besten dank

    Lapje

  • Ja, es steht dort das Audio unterstützt wird - aber nicht, ob das, was ich vorhabe, möglich ist.

    Ich wüsste z.B. gar nicht wie ich ein avs-Script per Kommandozeile aufrufen soll...

  • Was heißt denn, "ein avs-Script per Kommandozeile aufrufen"?

    Man kann das mit Video und Ton getrennt machen:
    avs2pipemod -y4mp "script.avs" | x264 - --demuxer y4m -o "output.264"
    avs2pipemod -wav "script.avs" | qaac - -o "output.m4a"

    Oder zusammen:
    ffmpeg -i "script.avs" -c:v libx264 -c:a aac "output.mkv"

    Aber das hat ja so direkt erst mal nichts mit der Bedienung von fade() zu tun.

  • Falls du eine WAV-Datei als Tonspur hast, die du gleichzeitig mit einem Video-Clip ein-/ausblenden willst, dann kannst du diese mit WAVSource in einen Clip laden, der nur Audio, aber kein Video hat; das wird mittels AudioDub() mit dem Video-Clip gemischt. Auf das Ergebnis kann man dann Fade{In|Out|IO}[0|2]() auf Video- und Audio-Spur des Mischclips gemeinsam anwenden. Andere Quellfilter für andere Audio-Formate als Quelle kennst du sicher auch noch.

    PHP
    a = LwLibavAudioSource(audiosourcefile) # kann auch die selbe Datei sein
    v = LwLibavVideoSource(videosourcefile) # wenn beide Spuren in einem Container sind
    AudioDub(v, a)
    FadeIO(50)

    Ich weiß nicht mehr genau, ob es FFMS2 oder L-SMASH Works war; bei einem der beiden war es wichtig, dass man zuerst die Audiospur abfragt, sonst wird der Index zweimal erzeugt, weil beim Abfragen des Videos erstmal kein Audio-Index ermittelt wird. Ich glaube, das war eher FFMS2?

    Eine Kreuzblende zwischen zwei Clips hintereinander erreicht man mit Dissolve, siehe Ende der Seite zu Fade.

  • Moin, ok, werde ich mal so ausprobieren.

    Nein, eine WAV als Tonspur habe ich in dem Sinne nicht, aber es soll aus einer WAV eine MP3-Tonspur gemacht werden, da dachte ich, dass es besser wäre, die WAV zu bearbeiten...

  • Das wäre dann etwas umständlicher. Zwar kann avs2pipemod die Tonspur nach dem Filtern mit Fade mehr oder weniger kompatibel zu WAV ausgeben, aber wahrscheinlich wäre die im Header eingetragene Größe ~ Spieldauer falsch, da die erst am Ende bekannt ist, und der Header schon am Anfang einer WAV-Datei erzeugt werden muss. Viele Audio-Encoder wissen, dass sie diese Angaben ignorieren müssen, wenn die Quelle aus der "Standardeingabe" kommt, aber Sample-Editoren könnte das verwirren.

  • Das wäre dann etwas umständlicher. Zwar kann avs2pipemod die Tonspur nach dem Filtern mit Fade mehr oder weniger kompatibel zu WAV ausgeben, aber wahrscheinlich wäre die im Header eingetragene Größe ~ Spieldauer falsch, da die erst am Ende bekannt ist


    Das kann ich so nicht nachvollziehen. Ist doch bei AviSynth direkt beim Laden des Skripts bekannt? Ich denke schon, daß avs2pipemod korrekte wave-Header erzeugt.

  • OK, ich habs jetzt zu Anfang mal mit der avs2pipemod probiert...komme aber nicht wirklich weiter. Den Aufruf in der Batch habe ich so angefangen:

    Code
    avs2pipemod64.exe -wav "script.avs" | wav - -o "output.wav"

    Dann noch das Script:

    Code
    FadeIO(test.wav test2.wav, int 50 [, $000000 , float 25 ] )

    50 für 2 Sekunden Faden.

    Funzt aber nicht, was mich nicht wundert. Die Batch läuft einfach durch. Kann ich nicht per ffmpeg auch nur eine Wav-Datei so bearbeiten?

    Ok, vielleicht war der Gedanke per avs doch etwas falsch. Ich brauche im Grunde nur etwas zum Faden, was ich per Kommandozeile und somit per Batch ansprechen kann....


    Danke

    Lapje

  • OK, ich habs jetzt zu Anfang mal mit der avs2pipemod probiert...komme aber nicht wirklich weiter. Den Aufruf in der Batch habe ich so angefangen:

    Code
    avs2pipemod64.exe -wav "script.avs" | wav - -o "output.wav"
    Code
    avs2pipemod -wav "script.avs" > "output.wav"

    Dann noch das Script:

    Code
    FadeIO(test.wav test2.wav, int 50 [, $000000 , float 25 ] )


    Wenn überhaupt so:

    Code
    a = WavSource("test.wav")a = FadeOut(a, 50, $000000, 25)b = WavSource("test2.wav")b = FadeIn(b, 50, $000000, 25)a++b

    Oder vermutlich eher so:

    Code
    a = WavSource("test.wav")
    b = WavSource("test2.wav")
    Dissolve(a, b, 50, 25)


    http://avisynth.nl/index.php/Dissolve

    Funzt aber nicht, was mich nicht wundert. Die Batch läuft einfach durch.


    Welche Batch? (Denk ans Escapen von z.B. runden Klammern)

    Kann ich nicht per ffmpeg auch nur eine Wav-Datei so bearbeiten?


    https://ffmpeg.org/ffmpeg-filters.html#acrossfade

    2 Mal editiert, zuletzt von sneaker2 (13. Januar 2017 um 23:01)

  • Irgendwie habe ich es nicht verstanden, was Lapje gern erreichen möchte.

    Es ist ganz einfach: Ich möchte bei meinen Sat-Aufnahme den Ton ein- und ausblenden, da dieser oftmals "abgeschnitten" ist, und das mich als Neurotiker nervt. Und da ich bez. mp3 und normalizen eh über wav gehe, war meine Idee, dass ganze da direkt ein- und ausblenden zu lassen...

    sneaker2
    Soweit ich das verstehe ist das aber vür einen Crossfade, also wenn ich zwei Files in einander mischen will...

    Gleiches bei Dissolve

  • Ein- und Ausblenden wäre (genau wie im AviSynth-Artikel erklärt) "eine Kreuzblende zu Stille".

    Und um einen Grundlagenkurs in AviSynth- und Batch-/CMD-Programmierung wirst du wohl nicht herumkommen, wenn du keinen Videoeditor mit Timeline verwenden willst.

Jetzt mitmachen!

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