这可以在命令行中将 jpg 序列转换为视频。
cat *.jpg | ffmpeg -f image2pipe -framerate 5 -i - -s 1280x720 ./HD720_out.mp4
但在包含以下内容的可执行脚本 temp.sh 中不起作用(第一个 jpg 除外):
eval cat "$1" | ffmpeg -f image2pipe -framerate 5 -i - -s 1280x720 "./HD720_out.mp4"
例如./temp.sh *.jpg
,仅将第一个文件提供给视频,而不是序列。我究竟做错了什么?命令行完美运行。
简化:
$1
扩展为脚本的第一个命令行参数。但在您的脚本解释运行 temp.sh 的 shell 之前,将首先扩展星号*in
./temp.sh *.jpg
,从而有效地生成命令行:你有两种选择来解决这个问题。第一个(也是首选):
将只使用所有命令行参数,而不仅仅是第一个。你不需要
eval
这个,也不应该使用它。第二个(
eval
发挥作用的地方):在使用带引号的参数调用脚本以避免扩展时: