什么命令可以将多个视频文件转换为多个 GIF?
我使用以下命令将 1 个视频转换为 GIF:
ffmpeg -i input.flv -vf scale=320:-1 output.gif
我假设我需要一个 bash 脚本或一些带循环的命令。
这个线程与我的问题隐约相关。
答案1
您可以使用以下命令
for f in ./*.flv; do
ffmpeg -i "$f" -vf scale=320:-1 "${f%.*}.gif"
done
这会迭代.flv
当前目录中以 结尾的所有文件,处理它们并将扩展名更改为.gif
.
请注意,文件名不得包含空格才能正常工作。
或者,在 GNU 系统上,您可以使用
find . -maxdepth 1 -name "*.flv" -print0 |
sed 's/\.flv\x00/\x00/g' |
xargs -r0 -I FILENAME ffmpeg -i FILENAME.flv -vf scale=320:-1 FILENAME.gif
这将找到.flv
当前目录中以(包括隐藏文件)结尾的所有文件,并将该列表作为\0
- 分隔字符串打印到标准输出。然后过滤该字符串sed
以删除扩展名,然后传递给xargs
执行命令的字符串ffmpeg -i FILENAME.flv -vf scale=320:-1 FILENAME.gif
,并替换FILENAME
为列表中的实际文件名。
如果要转换当前目录及其所有子目录(及其子目录等)中的所有文件,只需-maxdepth 1
从命令中删除该部分即可。