
我有一台閉路電視攝影機,當它偵測到移動時,它會將 JPEG 影像 (.jpg) 上傳到 FTP 伺服器。我們似乎得到了很多圖像,所以我想將它們製作成影片以方便觀看。
我已經進行了幾次谷歌搜索,但沒有完全產生我期望看到的結果。我正在使用的資料夾有超過 2000 張圖像,名為 AyyMMddhhmmssff.jpg。如果我需要重命名,我可以這樣做,因為我已經發現我需要重命名 FFMPEG 才能工作。
我想要每秒一張圖像,或每秒兩張圖像,以便在播放影片時可以輕鬆查看圖像。是的,我知道這會產生一個 20/40 分鐘以上的影片!
我對 Windows、macOS 或 Ubuntu 解決方案感到滿意!我更喜歡 Windows(因為 FTP 伺服器就在 Windows 上)。
圖像魔術師
convert *.jpg video.mpg
這聽起來很棒、很好而且很簡單。然而,我在我的Mac(透過brew安裝)和Ubuntu上進行了嘗試,並且都將相關係統的性能磨平了,20分鐘後,仍然沒有完成。我不得不重新啟動 Mac,因為我什麼都做不了!
FFMPEG
ffmpeg -y -r 6 -f image2 -s 1920x1080 -i <path>\%06d.jpg -vcodec libx264 -pix_fmt yuv420p <path>/video.mp4
在使用 FFMPEG 方面,我不是專家,但我已經將它用於多項任務,並發現它是一個很棒的實用程式。上面的命令確實生成了視頻,但圖像顯示得太快,從而消除了視頻的要點。我嘗試調整這些值並可以得到更好的結果,但不完全是我所追求的。一次嘗試(設定-r 1
IIRC)導致整個影片只有一張影像!很明顯,即使我看過手冊,我也不理解 FFMPEG 指令中的各種參數!
答案1
如果您將影像重新命名為連續編號,那麼您可以使用
ffmpeg -y -framerate 1 -i <path>\%06d.jpg -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
連續編號,如000001.jpg
, 000002.jpg
, 000003.jpg
... 請注意,每個名稱中正好有 6 個字符,滿足%06d
傳遞給 ffmpeg 的要求。
如果您不想重新命名,則建立一個以下形式的文字文件,
file first.jpg
file second.jpg
file third.jpg
...
file last.jpg
進而
ffmpeg -f concat -r 1 -i list.txt -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
答案2
將 -r 5 更改為 -framerate 5,這將產生每秒 5 幀的影片。您可以調整該數字以滿足您的需求,1 表示每個影像顯示 1 秒,10 會更快地循環顯示。
ffmpeg -y -framerate 1 -i <path>\%06d.jpg -framerate 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
or
ffmpeg -f concat -r 1 -i list.txt -framerate 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4