Video
Bash腳本ffmpeg pic到影片不起作用但在命令行中
這可以在命令行中將 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
,從而有效地生成命令行:./temp.sh first.jpg second.jpg third.jpg \ \_ $1
你有兩種選擇來解決這個問題。第一個(也是首選):
cat "$@" | ...
將只使用所有命令行參數,而不僅僅是第一個。你不需要
eval
這個,也不應該使用它。第二個(
eval
發揮作用的地方):eval cat "$1" |
在使用帶引號的參數呼叫腳本以避免擴展時:
./temp.sh '*.jpg'