用TextureView播放网络视频
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用TextureView播放网络视频相关的知识,希望对你有一定的参考价值。
参考技术A 用VideoView播放视频的话,嵌套ScrowView会有滑动的问题,所以选择用TextureView和MediaPlayer来播放网络视频。1:给textureView添加监听,创建Surface实例,用来交给MediaPlayer
textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener()
//textureView可用
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height)
//添加集合的原因是用来区分列表中不同的surface
mSurfaces.add(new Surface(surface));
2:给点击事件用来播放网络视频
textureView.ivThumbnail.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
try
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.reset();
mPlayer.setDataSource(list.get(position).getUrl());
//让MediaPlayer和TextureView进行视频画面的结合
mPlayer.setSurface(mSurfaces.get(videoPosition));
//设置监听
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
@Override
public void onPrepared(MediaPlayer mp)
mp.start();
//开始播放后隐藏图片,防止空白情况发生
ivThumbnail.setVisibility(View.GONE);
);
mPlayer.setScreenOnWhilePlaying(true);//在视频播放的时候保持屏幕的高亮
//异步准备
mPlayer.prepareAsync();
catch (Exception e)
e.printStackTrace();
);
3:完成以上两步就可以播放视频了,最后是获取缩略图
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
int kind = MediaStore.Video.Thumbnails.MINI_KIND;
if (Build.VERSION.SDK_INT >= 14)
retriever.setDataSource(url, new HashMap<String, String>());
else
retriever.setDataSource(url);
Bitmap thumbnail = retriever.getFrameAtTime();
Android 视频播放
1.用MEDIAPLAYER+TEXTUREVIEW封装好的视频播放器,可直接使用(附DEMO)
2.一个视频播放第三方(JCvideoPlayer)以及部分调整
GitHub - Jzvd/JZVideo: 高度自定义的安卓视频框架 MediaPlayer exoplayer ijkplayer ffmpeghttps://github.com/Jzvd/JZVideo 3.GitHub - ashLikun/JCVideoPlayer
https://github.com/ashLikun/JCVideoPlayer
4. https://github.com/qiushi123/VideoDemoQclhttps://github.com/qiushi123/VideoDemoQcl
以上是关于用TextureView播放网络视频的主要内容,如果未能解决你的问题,请参考以下文章