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!
Zunächst einmal wird der von Ihnen bereitgestellte Befehl nicht den gewünschten Effekt erzielen: Der fade
Filter 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 afade
als auch fade
Filter .
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
Ich bin mir nicht sicher, woher Ihr Fehler kommt, aber Sie sollten Folgendes versuchen:
'
) 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'
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"
Michael Liebmann
schlau