我想在任何特定位置从视频中提取缩略图。我正在使用ThumbnailUtils以便从视频uri获取缩略图并分配给位图,但是位图上的值为空。
任何原因如何发生以及如何解决?
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;
}
答案 0 :(得分:0)
首先使用以下方法将视频列表及其路径加载到您的数组列表中
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_KIND和
2) MICRO -MediaStore.Images.Thumbnails.MICRO_KIND
Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath,
MediaStore.Images.Thumbnails.MINI_KIND);
BitmapDrawable bitmapDrawable = new BitmapDrawable(thumb);
contentViewHolder.videoView.setImageBitmap(thumb);
答案 1 :(得分:0)
您可以使用Glide将拇指直接加载到imageview
Glide.with(activity).load(videoPath).into(imageview);
答案 2 :(得分:0)
Android本身使用MediaPlayer SeekTo方法对此提供支持
如果只想显示视频占位符,则可以使用以下代码:
video_view.setVideoPath(videoPath);
video_view.seekTo(3000); // in milliseconds i.e. 3 seconds