ffmpeg 提取關鍵幀

參考key-frame
關鍵幀,是指動畫中一個繪圖,定義任何的起點和終點平滑過渡,一系列關鍵幀定義了觀看者將看到的運動,而關鍵幀在電影,視頻或動畫上的位置定義了運動的時間。

獲取方法,參考視頻關鍵幀提取

ffmpeg -i video_name.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 1920*1080 -f image2 core-%02d.jpeg

各個參數解釋:
-i :輸入文件,這裏的話其實就是視頻,
-vf:是一個命令行,表示過濾圖形的描述, 選擇過濾器select會選擇幀進行輸出:包括過濾器常量
pict_type和對應的類型:PICT_TYPE_I 表示是I幀,即關鍵幀。
-vsync 2:阻止每個關鍵幀產生多餘的拷貝
-f image2 name_%02d.jpeg:將視頻幀寫入到圖片中,樣式的格式一般是:
“%d” 或者 “%0Nd”
-s:分辨率,1920*1080

這樣保存下來的關鍵幀的命名順序是從1開始的,數字表示第幾個關鍵幀。需要保存關鍵幀在原始視頻中的幀的位置,參考Extracting the index of key frames from a video using ffmpeg,

ffprobe -select_streams v -show_frames -show_entries frame=pict_type -of csv bbb480.avi | grep -n I | cut -d ':' -f 1 > frame_indices.txt

會生成一個 frame_indices.txt 的文件,其中保存的即爲關鍵幀在視頻中的幀的索引位置。
再將生成的關鍵幀與索引對應起來:

ls -1 core*.jpeg >core.txt
paste core.txt frame_indices.txt > combine.txt

生成的 combine.txt中每一行即爲{}\t{}.format(core1, frame1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章