一、背景
略
二、基本方式
2.1 抽取視頻中關鍵幀(IPB幀)
Video keyframes是視頻編解碼中關鍵幀。
- I幀信息最為豐富,是具有完整信息的幀,一般視頻封面都選擇I幀。
- P幀是單向預測幀,一般依賴前面的I或者P幀進行進行幀間預測。
- B幀數雙向預測幀,一般利用雙向幀進行預測。
2.1.1 使用ffprobe提取幀pts信息
ffprobe -i input.mp4 -v quiet -select_streams v -show_entries frame=pkt_pts_time,pict_type
ffmpeg抽取幀無法按照時間戳進行命令,需要將ffprobe提取的幀時間與抽取幀的圖片進行對應的重命。
#抽取I幀
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
#抽取P幀
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,P)" -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
#抽取B幀
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,B)" -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
2.2 抽取視頻場景轉換幀
在場景轉換過程中會出現相鄰場景相似差異比較大的情況,可以用相似度差異來判斷是否轉換到新的場景。
ffmpeg -i input.mp4 -filter:v "select='gt(scene,0.1)',showinfo" -f null - 2>&1
2.3 均勻抽幀
# -r 指定每秒抽取圖片的數量,1 frame/sec
ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 ./%08d.jpg
2.4 指定時間點抽幀
ffmpeg -i test_text_detect.mp4 -ss 00:00:01 -vframes 1 ./%08d.jpg