2012-09-21 113 views
5

我一直在嘗試使用ffmpeg 0.11.1從視頻中提取關鍵幀。到目前爲止,我嘗試過的所有命令都不提取關鍵幀,而是返回所有幀,即輸出中的25fps *總時間幀數。 我試着將keyint_min設置爲25,以確保每秒最多有1個關鍵幀。ffmpeg關鍵幀提取

ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -g 250 -keyint_min 25 -i C:\test.mp4 -vsync 2 -f image2 C:\testTemp\thumbnails-%02d.jpeg 

但仍然返回所有幀。

然後我試着將關鍵幀分開20秒。

ffmpeg -i C:\test.mp4 -vf select='eq(pict_type\,I)*(isnan(prev_selected_t)+gte(t-prev_selected_t\,20))' -vsync 0 -f image2 C:\testTemp\%09d.jpg 

再次同樣的結果,所有的幀都被返回。

我該怎麼辦?

回答

9

在您的第一個命令中,您使用過濾器作爲輸入選項。我不知道ffmpeg會如何解釋這一點。

嘗試這種情況:

ffmpeg -i C:\test.mp4 -vf select='eq(pict_type\,I)',setpts='N/(25*TB)' C:\testTemp\%09d.jpg 

更改25到源的幀速率:30000/1001對於NTSC視頻,24000/1001爲NTSC膜,25,用於PAL等

控制輸出質量與-q:v-qscale:v選項(在舊的ffmpeg中只稱爲-qscale)。 mpeg *的範圍是1-31,其中31是最差的質量。

下次請記住,ffmpeg用法問題將在superuser.com上提出,因爲stackoverflow專門用於編程。

+0

嗨,謝謝,但我得到一個錯誤錯誤初始化過濾器選擇與參數。 '打開和關閉'的數量不相等,所以我試着改變select部分select ='eq(pict_type \,I),setpts = N /(25 * TB)'然後選擇''eq(pict_type \,I ),setpts ='N /(25 * TB)''但都返回相同的錯誤 –

+0

對不起。糟糕的粘貼工作。我更新了命令,但我目前無法測試。 – LordNeckbeard

+0

我得到:缺少')'或'eq(pict_type \,I)'中有太多的參數,然後在解析表達式'eq(pict_type \,I)'時出現另一個錯誤' –