Video
拍攝電影快照的程序?
是否有任何程序可以讓我指定影片文件的部分(avi、mpeg、mp4、…)並每隔某某秒/分鐘拍攝一次“快照”,並將其儲存為一系列圖像文件(例如 jpeg)?例如,在 0h45m 和 1h00m 之間選擇電影的一部分,然後每 30 秒拍攝一次“快照”。
它可能是影片播放器(例如 VLC)的一部分或外掛……關鍵是我需要自動拍攝快照的東西,而不是手動拍攝。
此外,有沒有什麼好的程序可以將這樣的一系列圖像文件轉換為動畫 GIF 或 PNG 文件?(如果快照程序可以選擇將快照保存為動畫 GIF/PNG,那當然是一個好處。)
您可以使用它
ffmpeg
來執行此操作。ffmpeg 網站上有幾個例子。這裡有幾個:
- 這將每分鐘創建一個縮略圖圖像,命名為
img001.jpg
,img002.jpg
,img003.jpg
, … (%03d
意味著每個縮略圖圖像的序號應使用 3 位數字進行格式化)$ ffmpeg -i myvideo.avi -f image2 -vf fps=fps=1/60 img%03d.jpg
- 這將每 10 分鐘創建一個縮略圖,命名為
thumb0001.bmp
,thumb0002.bmp
,thumb0003.bmp
, …$ ffmpeg -i test.flv -f image2 -vf fps=fps=1/600 thumb%04d.bmp
如果您想將它們製作成短影片,您可以再次尋求幫助
ffmpeg
。在他們網站的這個頁面上進行了討論。這裡還有幾個例子:
- 在這裡,每個圖像的持續時間為 5 秒(每秒 1/5 幀的倒數)。通過告訴 FFmpeg 將輸入文件的 FPS 選項(每秒幀數)設置為某個非常低的值,我們在輸出端使 FFmpeg 重複幀,因此我們實現了在螢幕上顯示每個圖像一段時間:
$ ffmpeg -f image2 -r 1/5 -i img%03d.png -c:v libx264 -r 30 out.mp4
- 如果您沒有按系列(
img001.jpg
,img002.jpg
,img003.jpg
)編號和排序的圖像,而是隨機的一堆圖像,則 ffmpeg 還支持 bash 樣式的萬用字元(* 表示任意數量的任意字元):$ ffmpeg -f image2 -r 1 -pattern_type glob -i '*.jpg' -c:v libx264 out.mp4
或對於 png 圖像:
$ ffmpeg -f image2 -r 1 -pattern_type glob -i '*.png' -c:v libx264 out.mp4
要將生成的影片製作成動畫 gif,您可以使用他的 SO Q&A 中概述的步驟,標題為:如何使用 ffmpeg 從 avi 生成 gif?:
$ ffmpeg -i video.avi -t 10 out%02d.gif
然後:
$ gifsicle --delay=10 --loop *.gif > anim.gif
這是該工具的連結
gifsicle
。