騰訊視頻超級播放器接入,項目 “天天通識” ,歡迎大家下載點評(安卓各大應用市場,已經上架了)
前話:音視頻 播放是“天天通識”APP的核心,播放器尤爲重要,從1.0到3.0,前前後後換了多個播放器,從阿里雲播放器到餃子播放器,到最後的騰訊雲視頻播放器。
首先說說阿里播放器吧,這個肯定是上好的播放器了,放棄的原因是要求最低版本與本地的版本以及以來的包的版本不相符,放棄了。
然後是餃子播放器,1+手機,不支持播放,權限錯誤;華爲低版本手機,小米低配手機,播放失敗,不完全。別的全是優點,真的!這個是真的!
最後是騰訊雲視頻播放器,雖然,很多功能,是自己寫的(續播,第一次播放禁拖進度條,音視頻進度、倍數切換),並沒有封裝好,而且jar包有60+M,但是還是選擇了騰訊播放器,代碼開源,兼容性強,清晰度切換,倍數切換,等等,強大的功能都有,暫時還沒遇到機型播放不完全或者播放出錯的,比較推薦 騰訊視頻播放SDK。
1. 騰訊雲官方文檔:直達車:https://cloud.tencent.com/document/product/266/7938#.E5.BF.AB.E9.80.9F.E9.9B.86.E6.88.90
3.相關文檔:https://github.com/tencentyun/SuperPlayer_Android/wiki,https://main.qcloudimg.com/raw/document/product/pdf/881_20200_cn.pdf
下面跟大家講講視頻播放器的導入步驟以及我項目中實現的功能:
1.下載開源代碼,裏面有一個model,本地項目依賴“lib_tcsuperplayer”作爲model
2.佈局源碼
<com.tencent.liteav.demo.play.SuperPlayerView
android:id="@+id/superVodPlayerView"
android:layout_width="match_parent"
android:layout_height="200dp" />
3.代碼:
private SuperPlayerView mSuperPlayerView;
mSuperPlayerView = findViewById(R.id.superVodPlayerView);
SuperPlayerModel model = new SuperPlayerModel();
model.url = "http://200024424.vod.myqcloud.com/200024424_709ae516bdf811e6ad39991f76a4df69.f20.mp4";
mSuperPlayerView.playWithModel(model);
4.app的build.gradle中
implementation project(':lib_tcsuperplayer')
implementation(name: 'LiteAVSDK_Player_6.3.8033', ext: 'aar')
5.在項目build.gralde
中添加:
allprojects {
repositories {
flatDir {
dirs 'libs'
}
...
}
}
6.權限:
<!--網絡權限-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--點播播放器懸浮窗權限-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!--存儲-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
以上是簡單實現了播放功能的,導入以及視頻播放。是相對極其簡單的導入了。上述只實現了簡單的播放功能,下面我們把清晰度,倍數,還有續播功能加上。
7.清晰度:其實源碼裏面寫得很明白了,還可以自己定義佈局,根據自己的設計來,自己拿到後臺給的數值,一層一層放進去。
SuperPlayerModel superPlayerModel = new SuperPlayerModel();
superPlayerModel.videoURL = "http://5815.liveplay.myqcloud.com/live/5815_89aad37e06ff11e892905cb9018cf0d4.flv";
superPlayerModel.multiVideoURLs = new ArrayList<>();
superPlayerModel.multiVideoURLs.add(new SuperPlayerUrl("超清","http://5815.liveplay.myqcloud.com/live/5815_89aad37e06ff11e892905cb9018cf0d4.flv"));
superPlayerModel.multiVideoURLs.add(new SuperPlayerUrl("高清","http://5815.liveplay.myqcloud.com/live/5815_89aad37e06ff11e892905cb9018cf0d4_900.flv"));
superPlayerModel.multiVideoURLs.add(new SuperPlayerUrl("標清","http://5815.liveplay.myqcloud.com/live/5815_89aad37e06ff11e892905cb9018cf0d4_550.flv"));
mSuperPlayerView.playWithMode(superPlayerModel);
8.倍數,倍數也是一樣,可以從後臺拿到數據,一層一層放進去,佈局也可以自定義
//倍數 從後臺拿到數據
if (speedDatas != null || !speedDatas.isEmpty()) {
speedDatas.clear();
}
if (mDataBean.getPlayerMultiple() != null && !mDataBean.getPlayerMultiple().isEmpty() && mDataBean.getPlayerMultiple().size() > 0) {
for (int i = 0; i < mDataBean.getPlayerMultiple().size(); i++) {
Data speed = new Data();
speed.multiple = mDataBean.getPlayerMultiple().get(i).getMultiple();
speed.name = mDataBean.getPlayerMultiple().get(i).getName();
speedDatas.add(speed);
}
}
傳到SuperPlayerView
mSuperPlayerView.setDoubleData(speedDatas);
SuperPlayerView類:
/**
* 設置倍數
*/
public void setDoubleData(List<Data> datas) {
if (mVodControllerLarge != null)
mVodControllerLarge.setDoubleData(datas);
}
然後在控制界面:
TCVodControllerLarge類中:
數據多層傳遞,最終需要展示的地方是適配器,佈局呈現。
倍數選中的回調,源碼裏面寫得很明白,大家多看一下源碼。
以上的功能都是騰訊自帶了的,大家仔細閱讀源碼,都是能很好解決的,下面說說我們“天天通識”APP需要的一部分功能:續播
9.續播
1>、正常續播
播放類:
mSuperPlayerView.setPlayTime(mDataBean.getPlayTimes());
SuperPlayerView類:
找到
onPlayEvent方法裏面,設置續播時間點:
2>、播放完畢後續播處理,重播後續播時間點設置爲0
onReplay方法中
3>、清晰度切換的續播時間點
4>音視頻切換續播(這個點我單獨拎出來說)
10.onDestory中調用
mSuperPlayerView.resetPlayer();