Android 将缩略图设置为视频视图的目的
我必须在我的一个Android屏幕上播放一段视频,我正在使用视频查看意图。播放视频,但启动屏幕时没有出现缩略图 我的代码是这样的Android 将缩略图设置为视频视图的目的,android,video,android-videoview,mediacontroller,Android,Video,Android Videoview,Mediacontroller,我必须在我的一个Android屏幕上播放一段视频,我正在使用视频查看意图。播放视频,但启动屏幕时没有出现缩略图 我的代码是这样的 @OnClick(R.id.icon_play) protected void playVideo(){ String videoUrl="https://someUrl/Video/v07.mp4"; if(!videoUrl.isEmpty()) { Intent intent = new Inten
@OnClick(R.id.icon_play)
protected void playVideo(){
String videoUrl="https://someUrl/Video/v07.mp4";
if(!videoUrl.isEmpty()) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(videoUrl));
intent.setDataAndType(Uri.parse(videoUrl), "video/mp4");
startActivity(intent);
}
}
通过缩略图,我的意思是当屏幕启动时,每个视频都应该有自己的图像。(类似于YouTube)
我尝试了seekTo()
来附加缩略图,但没有成功。
请帮忙。谢谢。这可能会被使用。我正在使用此方法在我的视频播放器列表视图中显示视频的缩略图
Cursor cursor = mContext.getContentResolver().query(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, proj,
MediaStore.Video.Media.DISPLAY_NAME + "=?",
new String[]{localItem._display_name}, null);
cursor.moveToFirst();
long ids = cursor.getLong(cursor
.getColumnIndex(MediaStore.Video.Media._ID));
ContentResolver crThumb = mContext.getContentResolver();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(
crThumb, ids, MediaStore.Video.Thumbnails.MICRO_KIND,
options);
itemHolder.thumbImage.setImageBitmap(curThumb);
curThumb = null;
cursor.close();
试着这样做可能会有帮助
以上ans现在已不推荐使用。
使用fast one解决方案更新新答案
我们只需要给出视频数据路径
Bitmap bmThumbnail;
bmThumbnail = ThumbnailUtils.createVideoThumbnail(arraylist.get(i)._data, MediaStore.Video.Thumbnails.MICRO_KIND);
itemHolder.thumbImage.setImageBitmap(bmThumbnail);
其中arraylist.get(i)。\u data=>视频路径
最好的方法是使用Glide或任何其他异步库来平滑滚动listview。不是100%确定它是否会起作用,但值得一试
Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail("URL", MediaStore.Images.Thumbnails.MINI_KIND);
BitmapDrawable bitmapD = new BitmapDrawable(thumbnail);
VideoView.setBackground(Drawable bitmapD);
请注意,我是通过电话写的,所以可能会有拼写错误。
让我知道这是否有效,或者您是否找到了其他替代方法我使用
MediaMetaDataRetriever
解决问题
代码是这样的-
public static Bitmap retriveVideoFrameFromVideo(String videoPath)
throws Throwable
{
Bitmap bitmap = null;
MediaMetadataRetriever mediaMetadataRetriever = null;
try
{
mediaMetadataRetriever = new MediaMetadataRetriever();
if (Build.VERSION.SDK_INT >= 14)
mediaMetadataRetriever.setDataSource(videoPath, new HashMap<String, String>());
else
mediaMetadataRetriever.setDataSource(videoPath);
// mediaMetadataRetriever.setDataSource(videoPath);
bitmap = mediaMetadataRetriever.getFrameAtTime(-1,MediaMetadataRetriever.OPTION_CLOSEST);
}
catch (Exception e)
{
e.printStackTrace();
throw new Throwable(
"Exception in retriveVideoFrameFromVideo(String videoPath)"
+ e.getMessage());
}
finally
{
if (mediaMetadataRetriever != null)
{
mediaMetadataRetriever.release();
}
}
return bitmap;
}
希望这对别人有帮助 这将帮助您尝试使用位图和/或缩略图?不,我没有;我没有试过那些@neropopular的复制品,因为你必须在相同尺寸的框架布局内将视频视图和图像视图放在一起。之后,您必须在视频开始播放时隐藏imageview。对于图像,您可以使用任何方法..我使用下面的答案..我尝试了这个方法,但BitmapDrawable现在不推荐使用!有没有替代方案?做了一些研究,是的,它被弃用了。尝试BitmapDrawable bitmapD=新的BitmapDrawable(getResources(),缩略图);是的,我只使用了bitmap thumb=ThumbnailUtils.createvideothumboil(videoUrl,MediaStore.Images.Thumbnails.MINI_-KIND);BitmapDrawable drawable=新的BitmapDrawable(getResources(),thumb);mVideoview.立根台(可拉深);您是否尝试过mVideoview.setBackground(可拉伸);如最初的答复所述?
Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail("URL", MediaStore.Images.Thumbnails.MINI_KIND);
BitmapDrawable bitmapD = new BitmapDrawable(thumbnail);
VideoView.setBackground(Drawable bitmapD);