我博客前几篇是关于JieCaoVideoPlayer的源码分析。有兴趣可以看看
JieCaoVideoPlayer是我所见到的最简单的开源解决方案
先附上项目主页https://github.com/lipangit/JieCaoVideoPlayer
其实项目主页上介绍的够明白了。我就象征意义的Copy下
真正实现Android的全屏功能,立志成为Android平台使用最广泛的视频播放控件
主要特点
- 全屏时启动新
Activity
实现播放器真正的全屏功能 - 可以完全自定义UI
- 能在
ListView
、ViewPager
和ListView
、ViewPager
和Fragment
等多重嵌套模式下全屏工作 - 手势修改进度和音量
- 视频大小的屏幕适配,宽或长至少有两个对边是充满屏幕的,另外两个方向居中
- 可以在加载、暂停、播放等各种状态中正常进入全屏和退出全屏
- 支持hls,rtsp
- 占用空间非常小,不到60k
- 设置http头信息
效果
jiecaovideoplayer-3.3-demo.apk
使用
1.添加类库
compile 'fm.jiecao:jiecaovideoplayer:3.3'
或直接下载
2.添加布局
<fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
android:id="@+id/custom_videoplayer_standard"
android:layout_width="match_parent"
android:layout_height="200dp"/>
3.设置视频地址、缩略图地址、标题
JCVideoPlayerStandard jcVideoPlayerStandard = (JCVideoPlayerStandard) findViewById(R.id.custom_videoplayer_standard);
jcVideoPlayerStandard.setUp("http://2449.vod.myqcloud.com/2449_bfbbfa3cea8f11e5aac3db03cda99974.f20.mp4"
, "嫂子想我没");
jcVideoPlayerStandard.thumbImageView.setThumbInCustomProject("http://p.qpic.cn/videoyun/0/2449_43b6f696980311e59ed467f22794e792_1/640");
4.在包含播放器的Fragment
或Activity
的onPause()
方法中调用JCVideoPlayer.releaseAllVideos();
其他接口
直接进入全屏,比如在webview中视频播放的适配很麻烦很无头绪,调用此接口直接全屏播放
JCFullScreenActivity.startActivity(this,
"http://video.jiecao.fm/5/1/%E8%87%AA%E5%8F%96%E5%85%B6%E8%BE%B1.mp4",
JCVideoPlayerStandard.class,
"嫂子别摸我");
用代码控制播放按钮的点击,如果是普通状态会播放视频,如果是播放中会暂停视频
jcVideoPlayerStandard.startButton.performClick();
混淆
无需添加
自定义UI
参照JCVideoPlayerSimple,JCVideoPlayerStandard,JCVideoPlayerStandardWithShareButton
- 继承JCVideoPlayer,JCVideoPlayer中包含所有关于播放的代码,不包含任何UI的代码
- getLayoutId();布局的id
- Override init(Context context);这里初始化自定义控件
- Override setStateAndUi(int state);是重点,自定义各个状态的UI,如果在其他地方修改UI应该保持谨慎
- Override onTouch(),onClick();如果有需要
- 在自定义UI之后,应该依然按照README.md中的4步骤来调用播放器
关于控件id的问题,在Base simple ui example中的所有最基础的id是写死在JCVideoPlayer中的,下面的控件id已经findViewById过了不需要再findViewById
控件 | id |
---|---|
开始按钮 | start |
全屏按钮 | fullscreen |
进度条 | progress |
总共时间 | total |
下方layout | layout_bottom |
上方layout | layout_top |
SurfaceView的容器 | surface_container |
如果想快速的集成视频播放功能,建议参照JCVideoPlayerStandardWithShareButton来做,它继承JCVideoPlayerStandard,JCVideoPlayerStandard的目标是和今日头条的细节保持一致
如果想完全自定义UI,参照JCVideoPlayerStandard
如果在JCVideoPlayer之外写任何关于控制视频的代码不是我们的初衷,请提issue