1

Прости, я только начинаю с ffmpeg. У меня есть папка с видео * .mts (названия довольно шутливые, много пробелов, символов и цифр - не уверен, влияет ли это на это), и мне нужно каждые 30 секунд извлекать изображения для всех видео в папка.

У меня есть хорошие сценарии для извлечения его по одному, такие как

ffmpeg -i "* .mts" -start_number 0 -vf fps = 1/30 "B 00-% 02d-30.000.png"

Однако мне нужно создать командный файл, чтобы сделать это для всех файлов .mts в указанной папке.

Есть ли шанс, что кто-нибудь сможет мне объяснить, как это написать (при условии, что пакетный файл находится в том же месте, что и фотографии)?

Спасибо

1 ответ1

1

Я хотел бы использовать for команды:

for /f "delims=|" %%f in ('dir /b *.mts') do (ffmpeg -i "%%f" -start_number 0 -vf fps=1/30 "B 00-%02d-30.000.png")

Я не проверял синтаксис вашей команды ffmpeg, но это должно работать из командного файла, когда он запускается с рабочим каталогом, являющимся путем к вашей папке. В противном случае вы можете изменить dir /b *.mts на что-то вроде dir /b C:\FolderWithFiles\*.mts или использовать %~dp0 чтобы он использовал путь, по которому живет ваш пакетный файл.

РЕДАКТИРОВАТЬ: Кроме того, обратите внимание, что если вы пытаетесь протестировать команду вне пакетного файла и непосредственно из командной строки, вам нужно изменить %%f на %f .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .