我博客前幾篇是關於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