private static Bitmap createVideoThumbnail(String newf) {
Bitmap bitmap = null;
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
if (Build.VERSION.SDK_INT >= 14) {
retriever.setDataSource(newf, new HashMap<String, String>());
} else {
retriever.setDataSource(newf);
}
bitmap = retriever.getFrameAtTime(1000,MediaMetadataRetriever.OPTION_CLOSEST);
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
} catch (RuntimeException ex) {
ex.printStackTrace();
} finally {
try {
retriever.release();
} catch (RuntimeException ex) {
ex.printStackTrace();
}
}
return bitmap;
}
同样的代码放到小米和华为还有模拟器上都可以返回bitmap有值,而华为返回来的是null?仕么原因
public Bitmap getBitmapsFromVideo(String newf) {
Bitmap bitmap = null;
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setDataSource(newf, new HashMap<String, String>());
} catch (Exception e) {
e.printStackTrace();
}
//// 取得视频的长度(单位为毫秒)
// String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
//// 取得视频的长度(单位为秒)
// int seconds = Integer.valueOf(time) / 1000;
// 得到每一秒时刻的bitmap比如第一秒,第二秒
for (int i = 1; i <2; i++) {
bitmap = retriever.getFrameAtTime(i * 1000 * 1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
String path = Environment.getExternalStorageDirectory() + File.separator + i + ".jpg";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(path);
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return bitmap;
}