ffmpeg 在文件夹中的每个 mp4 文件上应用命令
ffmpeg apply command on every mp4 file in folder
我有命令
for file in *.mp4; do ffmpeg -i "${file%.mp4} -vf fps=1/60 img%03d.jpg; done
我想在 ffmpeg 中使用它来遍历目录中的每个 mp4 文件和 运行 ffmpeg -i myvideo.mp4 -vf fps=1/60 img%03d.jpg
命令。但是,当我 运行 上面的 for 循环时,出现错误 "File was unexpected at this time." 我该如何解决这个问题?
我还应该提到文件名中有空格和其他特殊字符。
几个问题:
- 缺少结束语。
输入不需要- Parameter expansion,因为不需要删除输入名称的任何部分,所以只需使用普通变量即可。
- 输出需要参数扩展,否则每个循环命令都会产生相同的输出名称。
- 将图像输出到它们自己的目录将使事情更整洁。
- 我添加了
-q:v 3
以提高 JPG 输出的质量。一个不错的尝试范围是 2-5,其中较低的值表示较高的质量和较大的文件大小。
固定示例:
mkdir images
for file in *.mp4; do ffmpeg -i "$file" -vf fps=1/60 -q:v 3 "images/${file%.mp4}.jpg"; done
我有命令
for file in *.mp4; do ffmpeg -i "${file%.mp4} -vf fps=1/60 img%03d.jpg; done
我想在 ffmpeg 中使用它来遍历目录中的每个 mp4 文件和 运行 ffmpeg -i myvideo.mp4 -vf fps=1/60 img%03d.jpg
命令。但是,当我 运行 上面的 for 循环时,出现错误 "File was unexpected at this time." 我该如何解决这个问题?
我还应该提到文件名中有空格和其他特殊字符。
几个问题:
- 缺少结束语。 输入不需要
- Parameter expansion,因为不需要删除输入名称的任何部分,所以只需使用普通变量即可。
- 输出需要参数扩展,否则每个循环命令都会产生相同的输出名称。
- 将图像输出到它们自己的目录将使事情更整洁。
- 我添加了
-q:v 3
以提高 JPG 输出的质量。一个不错的尝试范围是 2-5,其中较低的值表示较高的质量和较大的文件大小。
固定示例:
mkdir images
for file in *.mp4; do ffmpeg -i "$file" -vf fps=1/60 -q:v 3 "images/${file%.mp4}.jpg"; done