7

在我的应用程序中,我需要显示存储在 res/raw 文件夹中的视频缩略图。我搜索了一下。我得到以下代码。

int id = **"The Video's ID"**
ImageView iv = (ImageView ) convertView.findViewById(R.id.imagePreview);
ContentResolver crThumb = getContentResolver();
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, id,    MediaStore.Video.Thumbnails.MICRO_KIND, options);
iv.setImageBitmap(curThumb);

通过此代码,我从 sdcard 获取视频缩略图。但 res/raw 文件夹中的视频不显示视频缩略图。我尝试了很长时间,但我找不到解决方案。我尝试了以下方式。

我创建一个数组并存储资源 id(例如:)int[] videoid={R.raw.vi1,...}并将 id 放入 MediaStore.Video.Thumbnails.getThumbnail(crThumb, videoid[position], MediaStore.Video.Thumbnails.MICRO_KIND, options);.

请帮我。提前致谢。

4

3 回答 3

19

您可以尝试从视频中提取一些帧,如下所示:

Uri  videoURI = Uri.parse("android.resource://" + getPackageName() +"/"
        +R.raw.cashword_video);
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(this, videoURI);
Bitmap bitmap = retriever
        .getFrameAtTime(100000,MediaMetadataRetriever.OPTION_PREVIOUS_SYNC);
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
于 2013-02-11T20:56:19.327 回答
2

您的应用程序的 res/raw 文件夹中的视频不由 Android Media Content Provider 管理,因此您无法从中获取它们的缩略图。

或者,您可以尝试将它们保存为 SD 中的普通文件,然后向媒体提供商索取缩略图或直接通过ThumbnailUtils.createVideoThumbnail类创建它(仅限 Android 2.2 或更高版本)

于 2011-10-12T16:25:14.377 回答
0

为此使用 Android Glide 库

在项目 Gradle 中

repositories {
  mavenCentral()
  google()
}

在应用程序 Gradle

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.10.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
}

在您的活动中使用以下代码

Glide.with(this).load(R.raw.demo).diskCacheStrategy(NONE).into(imageView);
Glide.with(this).load("file:///android_asset/demo.mp4").diskCacheStrategy(NONE).into(imageView);
Glide.with(this).load("android.resource://" + context.getPackageName() + "/raw/demo").diskCacheStrategy(NONE).into(imageView);
于 2019-11-13T09:23:19.273 回答