腾讯视频超级播放器接入,项目 “天天通识” ,欢迎大家下载点评(安卓各大应用市场,已经上架了)
前话:音视频 播放是“天天通识”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
2.腾讯超级播放器开源代码:https://github.com/tencentyun/SuperPlayer_Android/blob/master/app/src/main/java/com/coolapk/superplayertest/superplayer/SuperPlayerActivity.java
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.布局源码
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.权限:
以上是简单实现了播放功能的,导入以及视频播放。是相对极其简单的导入了。上述只实现了简单的播放功能,下面我们把清晰度,倍数,还有续播功能加上。
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 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();