首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

FFmpeg 視頻截圖實戰:按時間間隔、幀率、關鍵幀提取縮略圖

     編輯:Java 綜合教學

常用截圖需求對照表

需求參數/濾鏡適用場景
指定時間點單張-ss -vframes 1生成封面圖
固定頻率連續截圖-vf fps=1每秒一張,時間軸預覽
固定間隔截圖-vf fps=1/60每分鐘一張,長視頻摘要
僅提取關鍵幀(I幀)-vf select='eq(pict_type,PICT_TYPE_I)'體積最小、畫質關鍵點

1. 指定時間點單張截圖(-vframes)

ffmpeg -i input.flv -ss 00:00:14.435 -vframes 1 out.png
  • -ss:定位時間點(支援 HH:MM:SS.mmm 或秒數)
  • -vframes 1:僅輸出 1 幀
  • 輸出單張 PNG,畫質無損

2. 固定幀率連續截圖(fps 濾鏡)

每秒一張,檔名遞增

ffmpeg -i input.flv -vf fps=1 out%d.png

產生 out1.png、out2.png…

每分鐘一張,三位數序號

ffmpeg -i myvideo.avi -vf fps=1/60 img%03d.jpg

%03d 表示 3 位數字,不足補零:img001.jpg、img002.jpg…

每十分鐘一張,四位數序號 BMP

ffmpeg -i test.flv -vf fps=1/600 thumb%04d.bmp

3. 僅提取關鍵幀(select 濾鏡)

ffmpeg -i input.flv -vf "select='eq(pict_type,PICT_TYPE_I)'" -vsync vfr thumb%04d.png
  • select:幀過濾表達式,PICT_TYPE_I 為關鍵幀
  • -vsync vfr:變幀率輸出,保持原幀時間戳,避免重複/丟幀
  • 輸出數量 = 視頻關鍵幀數,體積極小且代表性強

進階技巧

  • 加速定位:將 -ss 放在 -i 之前(輸入定位),速度提升數十倍,但可能不精確;放在 -i 後為輸出定位,精確但較慢。
  • 指定畫質:-q:v 2 (JPEG 品質 1-31,越小越好)
  • 縮放輸出:-vf "fps=1,scale=320:-1" 寬 320px 高自適應
  • 硬體加速:-hwaccel cuda -c:v h264_cuvid (需 NVIDIA GPU)

總結

根據業務選擇:單張封面用 -ss -vframes;時間軸預覽用 fps=1;長視頻摘要用 fps=1/60;壓縮存儲關鍵幀用 select。善用 -ss 前置與硬體加速可大幅提升批次處理效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved