public void getBitmapsFromVideo() { String dataPath = Environment.getExternalStorageDirectory() + "/11211015_1555.mp4"; MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource(dataPath); // 取得视频的长度(单位为毫秒) String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); // 取得视频的长度(单位为秒) int seconds = Integer.valueOf(time) / 1000; // 得到每一秒时刻的bitmap比如第一秒,第二秒 for (int i = 1; i <= seconds; i++) { Bitmap bitmap = retriever.getFrameAtTime(i * 1000 * 1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC); String path = Environment.getExternalStorageDirectory() + File.separator+"_car_vedio_capture"+ File.separator + i + ".jpg"; saveBitmap(bitmap,path); } }
public void saveBitmap(Bitmap bm, String path) { String dir = path.substring(0,path.lastIndexOf("/")); File dirFile = new File(dir); if (!dirFile.exists()) { dirFile.mkdirs(); } File f = new File(path); if (f.exists()) { f.delete(); } FileOutputStream out = null; try { out = new FileOutputStream(f); bm.compress(Bitmap.CompressFormat.JPEG, 100, out); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (out != null) { try { out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } } }