您的位置:首页 > 理论基础 > 计算机网络

Android 获取网络视频第一帧的图片

2017-12-28 13:48 423 查看
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private Bitmap createVideoThumbnail(String url, int width, int height) {
Bitmap bitmap = null;
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
int kind = MediaStore.Video.Thumbnails.MINI_KIND;
try {
if (Build.VERSION.SDK_INT >= 14) {
retriever.setDataSource(url, new HashMap<String, String>());
} else {
retriever.setDataSource(url);
}
bitmap = retriever.getFrameAtTime();
} catch (IllegalArgumentException ex) {
// Assume this is a corrupt video file
} catch (RuntimeException ex) {
// Assume this is a corrupt video file.
} finally {
try {
retriever.release();
} catch (RuntimeException ex) {
// Ignore failures while cleaning up.
}
}
if (kind == MediaStore.Images.Thumbnails.MICRO_KIND && bitmap != null) {
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
}
return bitmap;
}


这个方法还是有效的,但是我在使用的过程中发现了一个‘’适配‘’的问题,我在Vivo的手机上使用这个方法,获取不到第一帧的图片。大部分手机都可以。最后解决的办法就是改接口 - -。。 

具体的思路就是在本地录制视频的时候,将本地视频的第一帧图片同时上传到服务器。在显示图片的时候,如果有这个方法返回的bitmap不为null,则用这个图片,如果为null的话,就用上传的那张图片。 是不是很无奈。。。

如果各位有遇到相同的问题,还望留言指点一番。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息