1
@echo off 
setlocal enabledelayedexpansion
set EXE_FILE=E:\ffmpeg.exe 
set INPUT_PATH=C:\folder\ 
set OUTPUT_PATH=C:\Images\ 
set COUNT=0 
for %%F in (*) do %EXE_FILE% -i %INPUT_PATH% %OUTPUT_PATH%/%%F.jpg
popd

我想使用此代码将 1 秒的视频保存为 jpg 图像。这不起作用。有什么解决办法吗?

4

2 回答 2

0
   IF EXIST %~d1%~p1%~n1.jpg GOTO exit
setlocal enabledelayedexpansion
set EXE_FILE=E:\ffmpeg.exe 
set OUTPUT_PATH=E:\Glasgow\Test 
set COUNT=0 
for %%F in (*.avi) do %EXE_FILE% -i %~d1%~p1%~n1.avi -r 1 -vframes 1 -ss 00:00:01 -f image2 -y %~d1%~p1%~n1.jpeg
popd
于 2012-08-01T15:54:44.383 回答
0

INPUT_PATH应该是视频文件,而不是目录。您需要遍历输入视频而不是遍历输出图像。ffmpeg 将自行输出所有图像(无需您遍历它们,即使用单个命令)。请查看本指南以获取帮助。这是该指南中的一个示例:

ffmpeg -i video.mpg -r 1 -f image2 ffmpeg_temp/%05d.png

因此,您在脚本中真正要做的是使输出图像名称中的位数越来越多。

%05.png将使图像文件名看起来像“00001.png”,%03.png看起来像“001.png”等。

但是你想要的是通过输入文件,所以迭代例如“video1.mp4”、“video2.mp4”等。

于 2012-08-01T15:20:59.683 回答