如何在 android 中获取视频的缩略图
How do I get thumbnail of a video in android
我需要一些帮助来创建从我的 android phone 录制的视频的缩略图,我从这个 Link 获得了这段代码,我修改了这部分代码生成缩略图,但不知何故未生成缩略图,因此我们将不胜感激。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == VIDEO_CAPTURED) {
videoFileUri = data.getData();
if (videoFileUri != null) {
Bitmap image= ThumbnailUtils.createVideoThumbnail(videoFileUri.toString(),MODE_APPEND);
ImageView imageView=(ImageView)findViewById(R.id.image);
imageView.setImageBitmap(image);
}
playVideoButton.setEnabled(true);
}
}
这是经过测试的完整工作解决方案:
试试吧。
if (videoFileUri != null) {
Bitmap bitmapThumb = null;
try {
bitmapThumb = ThumbnailUtils.createVideoThumbnail(videoFileUri.toString(),
MediaStore.Video.Thumbnails.MINI_KIND);// MINI_KIND, size: 512 x 384 thumbnail | MICRO_KIND, size: 96 x 96 thumbnail
ImageView imageView = (ImageView) findViewById(R.id.image);
// imageView.setImageBitmap(bitmapThumb);
Uri uri = getImageUri(context, bitmapThumb);
Picasso.with(context)
.load(uri)
.placeholder(R.drawable.ic_imagedefault)
.error(R.drawable.ic_imagedefault)
.resize(350, 200)//as per need.
.centerCrop()
.into(imageView);
} catch (Exception e) {
e.printStackTrace();
} finally {
bitmapThumb = null;
}
}
}
这是 getImageUri 的静态方法:
public static Uri getImageUri(Context inContext, Bitmap inImage) {
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.PNG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
} catch (Exception e) {
e.printStackTrace();
return Uri.parse("");
}
}
您可以使用glide.
它自动设置的视频缩略图。
Glide 还可以显示视频的缩略图,只要它们存储在 phone。 假设您通过让用户 select 视频:基于此文档 https://futurestud.io/tutorials/glide-displaying-gifs-and-videos
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide
.with(context)
.asBitmap()
.load(Uri.fromFile(new File(filePath)))
.into(imageViewGifAsBitmap);
Uri uri = getImageUri(context, bitmapThumb);
Glide.with(getContext()).
load(uri).
thumbnail(0.1f).
into(imageView);
Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.MICRO_KIND);
这对我来说很好用。
https://developer.android.com/reference/android/media/ThumbnailUtils
我需要一些帮助来创建从我的 android phone 录制的视频的缩略图,我从这个 Link 获得了这段代码,我修改了这部分代码生成缩略图,但不知何故未生成缩略图,因此我们将不胜感激。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == VIDEO_CAPTURED) {
videoFileUri = data.getData();
if (videoFileUri != null) {
Bitmap image= ThumbnailUtils.createVideoThumbnail(videoFileUri.toString(),MODE_APPEND);
ImageView imageView=(ImageView)findViewById(R.id.image);
imageView.setImageBitmap(image);
}
playVideoButton.setEnabled(true);
}
}
这是经过测试的完整工作解决方案:
试试吧。
if (videoFileUri != null) {
Bitmap bitmapThumb = null;
try {
bitmapThumb = ThumbnailUtils.createVideoThumbnail(videoFileUri.toString(),
MediaStore.Video.Thumbnails.MINI_KIND);// MINI_KIND, size: 512 x 384 thumbnail | MICRO_KIND, size: 96 x 96 thumbnail
ImageView imageView = (ImageView) findViewById(R.id.image);
// imageView.setImageBitmap(bitmapThumb);
Uri uri = getImageUri(context, bitmapThumb);
Picasso.with(context)
.load(uri)
.placeholder(R.drawable.ic_imagedefault)
.error(R.drawable.ic_imagedefault)
.resize(350, 200)//as per need.
.centerCrop()
.into(imageView);
} catch (Exception e) {
e.printStackTrace();
} finally {
bitmapThumb = null;
}
}
}
这是 getImageUri 的静态方法:
public static Uri getImageUri(Context inContext, Bitmap inImage) {
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.PNG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
} catch (Exception e) {
e.printStackTrace();
return Uri.parse("");
}
}
您可以使用glide.
它自动设置的视频缩略图。
Glide 还可以显示视频的缩略图,只要它们存储在 phone。 假设您通过让用户 select 视频:基于此文档 https://futurestud.io/tutorials/glide-displaying-gifs-and-videos
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide
.with(context)
.asBitmap()
.load(Uri.fromFile(new File(filePath)))
.into(imageViewGifAsBitmap);
Uri uri = getImageUri(context, bitmapThumb);
Glide.with(getContext()).
load(uri).
thumbnail(0.1f).
into(imageView);
Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.MICRO_KIND);
这对我来说很好用。 https://developer.android.com/reference/android/media/ThumbnailUtils