Для выполнения этой задачи вам обычно нужно использовать for-loop . Чтобы узнать, как его использовать, используйте встроенную справку и информацию об использовании для команды, открыв окно командной строки и введя for /?
Вот пример использования базового цикла с вашим batch-file , расположенный в том же каталоге, что и ваши .mov
файлы:
@For %%A In (*.mov)Do @(
ffmpeg -i "%%A" -vf vidstabdetect=shakiness=5:accuracy=15:stepsize=6:mincontrast=0.3:show=2 -y "dummy.mp4"
ffmpeg -i "%%A" -vf scale=trunc((iw*1.15^)/2^)*2:trunc(ow/a/2^)*2 -y "scaled.mp4"
ffmpeg -i "scaled.mp4" -vf vidstabtransform=smoothing=30:input="transforms.trf":interpol=linear:crop=black:zoom=0:optzoom=1,unsharp=5:5:0.8:3:3:0.4 -y "%%~nAstabilized.mp4"
)
Вы заметите, что, поскольку команды ffmpeg
находятся внутри блока в скобках, яизбежание закрытия каждой закрывающей скобки в этих командных строках (с использованием каретки ^
), чтобы предотвратить преждевременное закрытие блока do
.
В приведенном выше коде предполагается, чтоffmpeg.exe
находится рядом с командным файлом в текущем каталоге, расположенном где-то в пределах %PATH%
, или имеет запись реестра, позволяющую запускать его независимо от полного пути. Если нет, вам нужно добавить к этому пути исполняемый файл.