Java 在android中从视频uri生成缩略图并将其转换为base64
我正在尝试从视频(缩略图)中获取一帧并将其转换为base64。我使用了以下代码,但有时不起作用:Java 在android中从视频uri生成缩略图并将其转换为base64,java,android,Java,Android,我正在尝试从视频(缩略图)中获取一帧并将其转换为base64。我使用了以下代码,但有时不起作用: Uri selectedVideo = Uri.parse(intent.getStringExtra("trimmedVideo")); MediaMetadataRetriever mMMR = new MediaMetadataRetriever(); mMMR.setDataSource(this, selectedVid
Uri selectedVideo = Uri.parse(intent.getStringExtra("trimmedVideo"));
MediaMetadataRetriever mMMR = new MediaMetadataRetriever();
mMMR.setDataSource(this, selectedVideo);
Bitmap thumbnail = mMMR.getFrameAtTime();
Log.d(Global.getTag(), "thumbnail: "+thumbnail);
我在logcast中也遇到了这个错误:
E/MediaMetadataRetrieverJNI: getFrameAtTime: videoFrame is a NULL pointer
缩略图为空。提前谢谢
注:
我也尝试使用下一个代码,但它不起作用
Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath, Thumbnails.MICRO_KIND);
参考:
第一种方法
Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath, Thumbnails.MICRO_KIND);
缩略图部分决定缩略图的类型。(大或小)
第二种方法
Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath, Thumbnails.MICRO_KIND);
这是一个库,它将使您更容易实现
第三种方法
Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath, Thumbnails.MICRO_KIND);
使用Glide库
RequestOptions requestOptions = new RequestOptions();
Glide.with(getContext())
.load("video_url")
.apply(requestOptions)
.thumbnail(Glide.with(getContext()).load("video_url"))
.into("yourimageview");
我尝试使用它,但它返回null(1),我需要有缩略图才能将其转换为base64,因此我不能使用2。您是否添加了Yes,并请求API>=23,但现在我正在使用带有API 22的手机,所以这无关紧要。此外,崩溃有时也会发生,我了解到MediaMetadataRetriever有时不工作。添加了另一个使用glide库的实现我不能使用glide,因为我需要缩略图将其加载到ImageView,但我还需要将该缩略图转换为base64,