Wie kann man mp4-Audio UND -Video mit FFmpeg ausblenden?

Wie kann ich Audio UND Video in einer *.mp4-Datei ausblenden? Wenn ich Code aus dieser Antwort versuche :

ffmpeg -i "c:/input.mp4" -filter:v 'fade=in:0:30,fade=out:227:30' -c:v libx264 -crf 22 -preset veryfast -c:a copy "c:/testsong.mp4"

Ich bekomme:

[AVFilterGraph @ 000001e0f41affc0] No such filter:  fade=in:0:30,fade=out:227:30'
Error opening filters!

Vollständige Ausgabe:

125 kb/s (Standard) Metadaten: creation_time : 2016-08-24T16:42:38.000000Z handler_name : ISO-Mediendatei, erstellt von xyz... Stream-Mapping: Stream #0:0 -> #0:0 (h264 (native ) -> h264 (libx264)) Stream #0:1 -> #0:1 (kopieren) Drücken Sie [q] zum Stoppen, [?] für Hilfe [AVFilterGraph @ 0000000002d64580] Kein solcher Filter: 'fade=in:0: 30,fade=out:227:30' Fehler beim Reinitialisieren der Filter! Fehler beim Einfügen des Frames in das Filternetzwerk: Ungültiges Argument Fehler beim Verarbeiten der dekodierten Daten für Stream #0:0 Konvertierung fehlgeschlagen! Fehler beim Reinitialisieren der Filter! Fehler beim Einfügen des Frames in das Filternetzwerk: Ungültiges Argument Fehler beim Verarbeiten der dekodierten Daten für Stream #0:0 Konvertierung fehlgeschlagen! Fehler beim Reinitialisieren der Filter! Fehler beim Einfügen des Frames in das Filternetzwerk: Ungültiges Argument Fehler beim Verarbeiten der dekodierten Daten für Stream #0:0 Konvertierung fehlgeschlagen!

Was ist hier los? Danke im Voraus!

Herzlich willkommen! Bitte teilen Sie die vollständige Konsolenausgabe, nicht nur den einen Fehler.
Aktualisieren Sie Ihre ffmpeg-Version auf eine neuere.

Antworten (2)

Blenden Sie sowohl Video als auch Audio aus

Zunächst einmal wird der von Ihnen bereitgestellte Befehl nicht den gewünschten Effekt erzielen: Der fadeFilter gilt nur für einen Videostream , und Sie wenden ihn mit gezielt auf Ihren Eingabevideostream an -filter:v.

Um sowohl Audio als auch Video auszublenden, benötigen Sie sowohl afadeals auch fadeFilter .

Z.B

ffmpeg -i input.mp4 -filter:v "fade=in:0:30, fade=out:1770:30" -filter:a "afade=in:0:44100, afade=out:2601900:44100" -c:v libx264 -c:a aac output.mp4

Dieser Befehl blendet die ersten und letzten 30 Videoframes und 44100 Audio-Samples in einem 1800 Frames langen und 2646000 Samples langen Video ein und aus (das bei einer Framerate von 30 fps und einer Samplerate von 44100 Hz das erste und das letzte sein wird Sekunde Ihres 60 Sekunden langen Clips).

Das Arbeiten mit Frames und Samples kann sehr unpraktisch sein. Um also mit Start und Dauer in Sekunden zu arbeiten, verwenden Sie die Parameter st(Start) undd (Dauer) wie folgt:

ffmpeg -i input.mp4 -filter:v "fade=in:st=0:d=1, fade=out:st=59:d=1" -filter:a "afade=in:st=0:d=1, afade=out:st=59:d=1" -c:v libx264 -c:a aac output.mp4

(erste und letzte Sekunde eines 60er-Clips wird ein- und ausgeblendet)

Weitere Einzelheiten zu Parametern finden Sie in der Dokumentation zu Fade und Fade -Filtern.

Alternativ können Sie auch ein komplexes Filterdiagramm verwenden , wie von Manul Hüttinger vorgeschlagen, was praktisch sein kann, wenn Sie weitere Filter auf Ihren Clip anwenden müssen:

ffmpeg -i input.mp4 -filter_complex \
  "fade=in:st=0:d=1, fade=out:st=59:d=1; \
   afade=in:st=0:d=1, afade=out:st=59:d=1" \
 -c:v libx264 -c:a aac output.mp4

Zu deinem speziellen Fehler

Ich bin mir nicht sicher, woher Ihr Fehler kommt, aber Sie sollten Folgendes versuchen:

  • Aktualisieren Sie zuerst Ihr ffmpeg : Ihr libavfilter ist in Version 6.99.100, die neueste Version ist mindestens 7.6.100
  • Ich schätze, Sie arbeiten unter Windows, wenn Sie den Dateipfad und die Build-Nummer angeben. Beachten Sie, dass Sie unter Windows keine einfachen Anführungszeichen ( ') verwenden können, Sie müssen doppelte Anführungszeichen ( ") verwenden . Wenn Sie sich die Konsolenausgabe ansehen, könnte dies der Ursprung Ihres Fehlers sein:

[AVFilterGraph @ 0000000002d64580] No such filter: fade=in:0:30,fade=out:227:30'

  • Wenn es weiterhin fehlschlägt, versuchen Sie es mit einer anderen Eingabe (die Fehlermeldung weist möglicherweise auf einen Codierungs-/Decodierungsfehler hin:

Failed to inject frame into filter network: Invalid argument Error while processing the decoded data for stream #0:0 Conversion failed

Versuchen-filter_complex "fade=t=in:st=0:d=30,fade=t=out:st=227:d=30"

Können Sie erklären, wie dies im Vergleich zu dem, was das OP bereits versucht hat, funktionieren wird? Das macht dies für andere nützlich, die versuchen, ähnliche Probleme zu lösen.