[英]ffmpeg: Select frames at % position of video
我正在嘗試創建視頻的2x2平鋪縮略圖,其中包含通過視頻的20%,40%,60%和80%的幀。 我看到我需要使用帶有select的視頻過濾器,但無法確定哪些選項可以執行此操作。 我想做這樣的事情:
ffmpeg -i video.avi -frames 1 -vf "select=not(mod(pos\,0.2)),tile=2x2" tile.png
位置將是視頻中從0.0到1.0的位置。 我該怎么做,或者我有什么選擇?
方法1:幀間隔
這可能需要一些時間,具體取決於某些類型輸入的輸入或返回N/A
(在這種情況下參見基於持續時間的方法)。
獲取video
幀的總數:
ffprobe <input> -select_streams v -show_entries stream=nb_frames -of default=nk=1:nw=1 -v quiet
該命令將輸出一個整數值,例如:
18034
對於上面的示例,幀間隔是nb_frames / 5 = 18034 / 5 = 3607
最后, ffmpeg
命令是:
ffmpeg -i <input> -filter:v "select=(gte(n\\,3607))*not(mod(n\\,3607)),tile=2x2" -frames:v 1 -vsync vfr -y tile.png
方法2:持續時間間隔
與上述相同,但使用持續時間(秒)。 這也可能需要一段時間,報告的持續時間可能無效(例如:如果文件被截斷)。
ffprobe <input> -select_streams v -show_entries stream=duration -of default=nk=1:nw=1 -v quiet
它返回一個真實值,如:
601.133333
你的間隔是601 / 5 ~= 120
秒:
ffmpeg -i <input> -filter:v "select=(gte(t\\,120))*(isnan(prev_selected_t)+gte(t-prev_selected_t\\,120)),tile=2x2" -frames:v 1 -y tile.png
方法3:尋求和提取
使用-ss -i
尋找特定時間,提取單個幀並使用imagemagick的montage
來創建切片。
10分鍾倒計時器的示例輸出:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.