Video

Bash腳本ffmpeg pic到影片不起作用但在命令行中

  • June 2, 2018

這可以在命令行中將 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' 

引用自:https://serverfault.com/questions/914875