![每 30 秒从 *.mts 中批量提取图像?](https://linux22.com/image/1470172/%E6%AF%8F%2030%20%E7%A7%92%E4%BB%8E%20*.mts%20%E4%B8%AD%E6%89%B9%E9%87%8F%E6%8F%90%E5%8F%96%E5%9B%BE%E5%83%8F%EF%BC%9F.png)
请原谅我,因为我刚刚开始使用 ffmpeg。我有一个 *.mts 视频文件夹(标题有点奇怪,有很多空格、字符和数字——不确定这是否会影响它),我需要每 30 秒提取文件夹中所有视频的图像。
我有很好的脚本可以逐个提取,例如
ffmpeg -i "*.mts" -start_number 0 -vf fps=1/30 "B 00-%02d-30.000.png"
但是,我需要创建一个批处理文件来对指定文件夹中的所有 .mts 文件执行此操作。
有人可以向我解释如何编写它吗(假设批处理文件与照片位于同一位置)?
谢谢
答案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
。