Ich verwende derzeit das folgende Batch-Skript, um einen ffmpeg-Befehl auszuführen:
@echo off
title Convert videos to Mp4 h.264 with FFMPEG.
echo This script will find all video files of a given extension then make an mp4 h.264 file out of them.
set /p folder="Enter the folder path (cannot contain spaces; must have trailing slash \): "
set /p ft="Enter file type extension: "
set /p abitrate="Enter the audio bitrate in kbps (usually 48): "
set /p size="Enter video width and height (w:h) (usually 852:480): "
set /p vcrf="Enter the video crf value (usually 24): "
for %%f in (%folder%*.%ft%) do ffmpeg -i "%%f" -vf "scale=%size%,setsar=1" -crf %vcrf% -c:a aac -b:a %abitrate%k -ac 1 -movflags +faststart "%folder%%%~nf.mp4"
pause
Das Skript sagt, was es in der Beschreibung oben tut. Ich habe es gebaut, um HDV .m2t-Dateien in webfähige mp4-Dateien zu konvertieren. Wenn ich den ffmpeg-Befehl aus der Skriptschleife extrahiere, sieht das so aus:
ffmpeg -i input.m2t -vf "scale=852:480,setsar=1" -crf 24 -c:a aac -b:a 48k -ac 1 -movflags +faststart output.mp4
Ich habe einige Videos, die eine Farbkorrektur benötigen, also möchte ich sie nur mit einem Filter versehen, bevor ich sie kodiere. Ich habe mit ffplay herumgespielt und festgestellt, dass das gewünschte Aussehen den folgenden Befehl erfordert, der von dieser Antwort geändert wurde :
-vf eq=brightness=0.1:saturation=1.5
Das Problem, das ich habe, ist die Integration dieser neuen -vf
Zeile in den Hauptbefehl. Wenn ich es separat setze, ignoriert ffmpeg das erste für das zweite. Wenn es sie in Anführungszeichen zusammenfügt, werden Fehler ausgegeben. Ich gehe davon aus, dass dies ein Syntaxproblem ist, aber vielleicht auch nicht. Der Hauptbefehl scheint Kommas als Trennzeichen zu verwenden, aber dieser neue Befehl verwendet Doppelpunkte.
Filterkomplex wird nicht benötigt. Wenn eine Reihe von Filtern nacheinander auf einen einzelnen Eingang angewendet werden sollen, müssen sie durch ein Komma getrennt und als einzelne Filterkette ( -vf
, -af
) weitergegeben werden. Das hast du schon mit dem setar gemacht. Damit,
ffmpeg -i input.m2t -vf "scale=852:480,setsar=1,eq=brightness=0.1:saturation=1.5" -crf 24 -c:a aac -b:a 48k -ac 1 -movflags +faststart output.mp4
Durch Ausprobieren, Nachahmen der Syntax verschiedener Personen, die in ähnlichen Befehlen verwendet wird, und auf Vorschlag einer ffmpeg-Fehlermeldung bin ich auf Folgendes gekommen, und es hat wie erwartet funktioniert:
ffmpeg -i input.m2t -filter_complex "scale=852:480,setsar=1","eq=brightness=0.1:saturation=1.5" -crf 24 -c:a aac -b:a 48k -ac 1 -movflags +faststart output.mp4
Die erste Änderung -vf
muss in geändert werden -filter_complex
. ffmpeg schlug dies in einer Fehlermeldung vor. Danach reichte es aus, die beiden Befehle einfach mit einem Komma zu trennen und dann auch den neuen Befehl zu zitieren. Die Syntax ähnelt also sehr stark einer CSV-Datei.
Wenn Sie mehr Einblick haben, posten Sie bitte eine Antwort.
Benutzer24601
-vf
anstelle von-filter_complex
?Gyan
overlay
Filtern. Für diesen speziellen Fall gibt es keinen Unterschied, aber die richtige Antwort für Ihr Problem ist nicht, dass filter_complex benötigt wird.