簡體   English   中英

ffmpeg:在視頻的%位置選擇幀

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM