Android:如何从视频中获取缩略图(Uri)
我想从任何特定位置的视频缩略图。我使用ThumbnailUtils从视频uri获取缩略图并分配给位图,但位图上的值为空 这是怎么发生的,我该如何解决Android:如何从视频中获取缩略图(Uri),android,android-thumbnail,Android,Android Thumbnail,我想从任何特定位置的视频缩略图。我使用ThumbnailUtils从视频uri获取缩略图并分配给位图,但位图上的值为空 这是怎么发生的,我该如何解决 selectedVideoUri = data.getData(); bitmap = ThumbnailUtils.createVideoThumbnail(getRealPathFromURI(videoUri), MediaStore.Images.Thumbnails.MINI_KIND);
selectedVideoUri = data.getData();
bitmap = ThumbnailUtils.createVideoThumbnail(getRealPathFromURI(videoUri),
MediaStore.Images.Thumbnails.MINI_KIND);
public String getRealPathFromURI(Uri contentUri) {
String res = null;
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
if(cursor.moveToFirst()){;
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
res = cursor.getString(column_index);
}
cursor.close();
return res;
}
首先使用以下方法加载视频列表及其在阵列列表中的路径
private void loadData(String currentAppPath) {
hiddenpath = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + currentAppPath);
String[] fileName = hiddenpath.list();
try{
for(String f : fileName){
if(HelpperMethods.isVideo(f)){
videoFiles.add(hiddenpath.getAbsolutePath()+"/"+f);
}
}
new Loader().loadImages(Environment.getExternalStorageState());
}catch (Exception e){
}
}
您需要Loader().loadImages方法,所以我在单独的类文件中声明此方法。请参见下面的代码
public class Loader {
String[] imagieFiles;
public void loadImages(String path){
Log.e("path",path);
System.out.println(path);
} }
之后,您可以使用下面的代码获取视频缩略图。默认情况下,每个视频存储都有两个大小的缩略图。
1) MINI——MediaStore.Images.Thumbnails.MINI\u KIND和
2) MICRO——MediaStore.Images.Thumbnails.MICRO\u KIND
Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath,
MediaStore.Images.Thumbnails.MINI_KIND);
BitmapDrawable bitmapDrawable = new BitmapDrawable(thumb);
contentViewHolder.videoView.setImageBitmap(thumb);
您可以使用Glide将thumb直接加载到imageview
Glide.with(activity).load(videoPath).into(imageview);
Android本机使用方法支持这一点 如果您只想显示要显示的视频占位符,则可以使用以下代码:
video_view.setVideoPath(videoPath);
video_view.seekTo(3000); // in milliseconds i.e. 3 seconds
这个问题是有效的,仍然没有回答lol