如何在 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