首页 > 代码库 > 视频播放-VideoVIew,Vitamio
视频播放-VideoVIew,Vitamio
播放视频文件其实并不比播放音频文件复杂,主要是使用 VideoView类来实现的。这个
类将视频的显示和控制集于一身,使得我们仅仅借助它就可以完成一个简易的视频播放器。
VideoView的用法和 MediaPlayer 也比较类似(不同点在于播放视频需要UI控件,播放音乐只需要借助MediaPlayer对象)VideoView,用于播放一段视频媒体,它继承了SurfaceView,位于"android.widget.VideoView",是一个视频控件。
- 常用监听:
- setOnCompletionListener(MediaPlayer.onCompletionListener l):监听播放完成的事件。
- setOnErrorListener(MediaPlayer.OnErrorListener l):监听播放发生错误时候的事件。
- setOnPreparedListener(MediaPlayer.OnPreparedListener l)::监听视频装载完成的事件
xml布局:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="fanggao.qf.videoview.MainActivity"> <VideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="300dp" /></RelativeLayout>
源代码:
/** * VideoView surfaceView的子类 */public class MainActivity extends AppCompatActivity { private String url = "http://qiubai-video.qiushibaike.com/G2XQOKE9T0NKSX4E_3g.mp4"; private VideoView videoView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获得videoView对象 videoView = (VideoView) findViewById(R.id.video_view); //给video填充数据 videoView.setVideoPath(url);// videoView.setVideoURI(Uri.parse(path));第二种方式 //播放本地资源// videoView.setVideoPath(new File(Environment.getExternalStorageDirectory(),"a.mp3").getPath()); /**媒体控制面版常用方法:MediaController: hide(); 隐藏MediaController; show(); 显示MediaController show(int timeout);设置MediaController显示的时间,以毫秒计算,如果设置为0则一直到调用hide()时隐藏; */ //设置媒体控制器 videoView.setMediaController(new MediaController(this));//设置该参数就有滑动条 //设置准备监听 videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { //视频播放器播放视频 mp.start(); } }); } /*videoVIew.stopPlayback()内部的方法如下, 只是将媒体播放器停止并释放资源 if (mMediaPlayer != null) { mMediaPlayer.stop(); mMediaPlayer.release(); mMediaPlayer = null; */ /*如果需要播放完毕后播放下一个视频只需要调用videoView.stopPlayback(),后再重新调用VideoVIew.setVideoPath(path)即可 * 而serfaceView 调用stop方法后将不能再播放视频*/ @Override protected void onDestroy() { //在销毁活动之前调用该方法 if(videoView != null){ //释放资源 videoView.stopPlayback(); videoView = null; } super.onDestroy(); }}
可以看出,VideoView和MediaPlayer用法上很相似,其实是因为VideoView的内部封装了MediaPlayer,使得我们何以很方便的使用它,但是VideoView 并不是一个万能的视频播放工具类,它在视频格式的支持以及播放效率方面都存在着较大的不足,只适于播放一些游戏的片头动画,或者某个应用的视频宣传等.
另外,也有第三方的包Vitamio,帮助我们轻松的播放视频
vitamio,下载地址:https://www.vitamio.org/Download/ 下载代码即可
使用方法跟VideoView基本一致
不过需要在清单文件中注册一个没有界面的Activity,还需要初始化
视频播放-VideoVIew,Vitamio
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。