Android獲取視訊的關鍵幀和非關鍵幀
阿新 • • 發佈:2018-12-09
public Bitmap getFrameAtTime()
//如果不加引數的話,提取第一個關鍵幀
public Bitmap getFrameAtTime() {
return getFrameAtTime(-1, OPTION_CLOSEST_SYNC);
}
getFrameAtTime引數
方法原型:public Bitmap getFrameAtTime(long timeUs, int option)
第一個引數
是傳入擷取時間,只能是us(微秒)
第二個引數 OPTION_CLOSEST 在給定的時間,檢索最近一個幀,這個幀不一定是關鍵幀。 OPTION_CLOSEST_SYNC 在給定的時間,檢索最近一個同步與資料來源相關聯的的幀(關鍵幀)。 OPTION_NEXT_SYNC 在給定時間之後檢索一個同步與資料來源相關聯的關鍵幀。 OPTION_PREVIOUS_SYNC 在給定時間之前檢索一個同步與資料來源相關的關鍵幀 這裡為了提取我們想要的幀,不使用關鍵幀,所以用 OPTION_CLOSEST
/** * 獲取視訊檔案截圖 * * @param path 視訊檔案的路徑 * @return Bitmap 返回獲取的Bitmap */ public Bitmap getVideoThumb(String path) { MediaMetadataRetriever media = new MediaMetadataRetriever(); media.setDataSource(path); Bitmap frameAtTime = media.getFrameAtTime(1 * 1000 * 1000, MediaMetadataRetriever.OPTION_CLOSEST); if (frameAtTime == null) { frameAtTime = media.getFrameAtTime(3 * 1000 * 1000, MediaMetadataRetriever.OPTION_CLOSEST); } return frameAtTime; }