首页 新闻 会员 周边

三星机子获取视频第一帧失败?

0
悬赏园豆:15 [已关闭问题] 关闭于 2017-01-12 13:17
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?仕么原因
mufengqiang的主页 mufengqiang | 初学一级 | 园豆:124
提问于:2017-01-12 09:30
< >
分享
所有回答(1)
0

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;
}

mufengqiang | 园豆:124 (初学一级) | 2017-01-12 13:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册