将多个视频转换为多个 GIF

将多个视频转换为多个 GIF

什么命令可以将多个视频文件转换为多个 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从命令中删除该部分即可。

相关内容