使用ffmpeg進行抽幀


一、背景

二、基本方式

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

原文

原文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM