
下载项目 添加qsvideoplayer文件夹为自己的项目依赖即可 [下载apk]
源码有4个,根据需求自行选择需要的:
1.一般简单播放视频AndroidMedia足够(体积最小,无依赖)
2.有点需求可选择AndroidMedia+ExoMedia(1MB)

3.需求高的可选AndroidMedia+(ijkMedia+ijkExoMedia)(2MB单v7a包)
目前测试解码效果ijkMedia兼容性最好,AndroidMedia个别视频有半途中断BUG,exo无明显缺陷
ps:
解决办法是(我摸索出的,不一定最好),打开(缺省)位于c:\program files\microsoft visual studio 8\vc\platformsdk\include目录中的gdiplusbase.h头文件,并注释掉里面gdiplusbase类的内容(该类其实只含new、new[]、delete和delete[]这四个运算符的重载),使其成为一个空类(不要删除整个类)。在一个.java文件中可以一个public类和多个非public类,如果要将这些类组织在一个包当中,则在.java文件中除注释以外的第一行使用关键字package即可实现。解决办法是:打开(缺省)位于c:/program files/microsoft visual studio 8/vc/platformsdk/include目录中的gdiplusbase.h头文件,并注释掉里面gdiplusbase类的内容(该类其实只含new、new[]、delete和delete[]这四个运算符的重载),使其成为一个空类(不要删除整个类)。

删除exo: libs里删除jar,media包里删除ExoMedia即可
//DemoQSVideoView的ui用的jc播放器
DemoQSVideoView qsVideoView = (DemoQSVideoView) findViewById(R.id.xxx);
qsVideoView.setUp(url, "这是一一一一一一一一一个标题");
qsVideoView.getCoverImageView().setImageResource(R.mipmap.cover);//封面
//设置
qsVideoView.setPlayListener(new PlayListener() {
@Override
public void onStatus(int status) {//播放器的ui状态
if (status == IVideoPlayer.STATE_AUTO_COMPLETE)
qsVideoView.quitWindowFullscreen();//播放完成退出全屏
}
@Override//全屏/普通...
public void onMode(int mode) {
}
@Override//播放事件 初始化完成/缓冲/出错/...
public void onEvent(int what, Integer... extra) {
}
});
qsVideoView.enterFullMode=1;//进入全屏的模式 0默认是横屏 1是竖屏,随传感器自动切换横屏
qsVideoView.play();//
@Override
public void onBackPressed() {
if (qsVideoView.onBackPressed())
return;
super.onBackPressed();
}
0.read source code.

1.可直接修改DemoQSVideoView改造自己的播放器
2.继承QSVideoViewHelp参考DemoQSVideoView,源码均有注释,不用写一行播放逻辑
1) 子类提供layout布局,布局里需要help类实现逻辑的控件,设置id为以下特定id即可
<!--ImageView播放按钮1 2-->
<!--TextView播放时间 视频时长-->
<!--ProgressBar进度条 SeekBar拖动条-->
<!--ImageView全屏按钮 View返回按钮-->
//如播放按钮定义,注意: @id 没有加号,这样定义父类会自动完成该按钮逻辑

2) java代码里设置各个状态的ui即可完成自己的播放器,具体参考DemoQSVideoView
3.直接使用QSVideoView,自己写控制ui和逻辑
即使一个程序中不做继承,系统仍然有一个继承,就是和object构上关系。2.个人将通过继承、遗嘱、离婚、赡养关系、直系亲属赠与方式取得的住房,该住房的购房时间按照继承、遗嘱、离婚、赡养关系、直系亲属赠与行为前的购房时间确定。这里复用代码的方式应该是has-a关系而不是is-a关系,另一方面容器都属于工具类,继承工具类本身就是一个错误的做法,使用工具类最好的方式是has-a关系(关联)或use-a关系(依赖)。
void setUp(String url, Object... objects);//设置视频地址
void play();//播放
void pause();//暂停
void seekTo(int duration);//进度调节
void setPlayListener(PlayListener playListener);//播放
void setAspectRatio(int aspectRatio);//设置视频比例
void setiMediaControl(int i);//设置解码模块
boolean onBackPressed();//返回键退出全屏
boolean isPlaying();//是否播放中
int getPosition();//获取播放进度
int getDuration();//获取视频时长
int getCurrentMode();//获得播放器当前的模式(全屏,普通...)
int getCurrentState();//获得播放器当前的状态(播放,暂停,完成...)
void enterWindowFullscreen();//全屏
void quitWindowFullscreen();//退出全屏
void release();//销毁
最后开个坑:模仿bili写个弹幕播放器,期限?不存在的
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-97648-1.html
这真是事实