如何在Android中获取视频的缩略图

时间:2018-06-20 05:45:13

标签: android android-videoview video-thumbnails

我需要一些帮助来创建从我的Android手机录制的视频的缩略图,并且我已经从此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);
    }
}

4 个答案:

答案 0 :(得分:2)

您可以使用glide.自动设置的视频缩略图。

Glide还可以显示视频的缩略图,只要它们存储在手机上即可。让我们假设您通过允许用户选择视频来获取文件路径:基于此文档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);

答案 1 :(得分:0)

这是经过测试的完整的工作解决方案:

尝试一下。

    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("");
    }

}

答案 2 :(得分:0)

 Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.MICRO_KIND);
        

这对我来说很好用。 https://developer.android.com/reference/android/media/ThumbnailUtils

答案 3 :(得分:-3)

Uri uri = getImageUri(context, bitmapThumb);
Glide.with(getContext()).
load(uri).
thumbnail(0.1f).
into(imageView);