Android视频播放器

来源:互联网 发布:js如何获取父节点 编辑:程序博客网 时间:2024/03/29 23:07

实现:
可以调整大小位置,有进度条
没WIFI不会加载,有WIFI会自动加载 待完善~


播放器选择
一、MediaPlayer
原生的Android系统视频以及音频播放器
二、VideoView
将MediaPlayer,SurfaceView封装在一起的VideoView

以上两者都只是使用硬解播放,基本上只支持本地和HTTP协议的视频播放,扩展性都较差,只适合简单的视频播放需求

三、ExoPlayer
谷歌公司的开源了播放器项目,提供了更好的扩展性和定制能力,并加入了对DASH和HLS等直播协议的支持,但也只支持硬码,如果项目中只需要支持对H264格式的视频播放,以及流媒体协议比较常规(比如HTTP,HLS),基于ExoPlayer定制也是不错的选择

四、ijkplayer
Bilibili公司开源的播放器实现,整合了FFMpeg, ExoPlayer, MediaPlayer等多种实现,提供了类似于MediaPlayer的API,可以实现软硬解码自由切换,自定义TextureView实现,同时得益于FFMpeg的能力,也能支持多种流媒体协议(RTSP,RTMP,HLS等),多种视频编码格式(h264, mpeg4, mjpeg),具有很高的灵活性,可以定制实现自己特色的播放器(比如支持视频缩放,视频翻转等)
五 其他开源的组件
如Vitamio,VDPlayerSDK


视频播放的流程
常规的视频播放分为传输,解封装,解码,绘制四个步骤,以下按播放网站上(HTTP)的mp4文件为例:
这里写图片描述


VideoView的使用:
1 xml中

<VideoViewandroid:id="@+id/video_view"android:layout_width="match_parent"android:layout_height="match_parent" />

2 java中

private VideoView videoView;videoView=itemView.findViewById(R.id.video_view);//加载本地视频videoView.setVideoPath("");//加载网络视频videoView.setVideoURI(Uri.parse("http://t.cn/RYqnBvs"));//retrofitUtil.video_urls[0]videoView.start();

3 Manifest.xml中

<!-- 允许程序打开网络套接字 --> <uses-permission android:name="android.permission.INTERNET" />

4 添加控制器
可以实现播放,暂停,倒带快进,进度条移动等功能

MediaController controller = new MediaController (context);// VideoView绑定控制器videoView.setMediaController(controller);

参考文章:
https://appkfz.com/2017/08/27/ijkplayer-sutdy-1/