|
|
|
|
|
|
|
|
|
|
|
[>>官网最新SDK下载地址](https://download.bokecc.com/#live)
|
|
|
|
|
|
|
|
[>>历史版本SDK版本下载地址](https://hdgit.bokecc.com/ccvideo/Live_Android_Play_SDK/-/releases)
|
|
|
|
|
|
|
|
## 目录
|
|
|
|
|
|
|
|
- [目录](#目录)
|
|
|
|
- [Release4.9.0](#release490)
|
|
|
|
- [Release4.8.0](#release480)
|
|
|
|
- [Release4.7.0](#release470)
|
|
|
|
- [Release4.6.1](#release461)
|
|
|
|
- [Release4.6.0](#release460)
|
|
|
|
- [Release4.5.0](#release450)
|
|
|
|
- [Release4.3.0](#release430)
|
|
|
|
- [Release4.2.0](#release420)
|
|
|
|
- [Release4.1.0](#release410)
|
|
|
|
- [Release4.0.0](#release400)
|
|
|
|
|
|
|
|
## Release4.9.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
|
|
|
|
1. TODO
|
|
|
|
|
|
|
|
2. TODO
|
|
|
|
3. demo迁移至AndroidX
|
|
|
|
4. 直播带货支持多平台链接
|
|
|
|
5. 优化播放器和回放文档画笔下载
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api 'com.bokecc.doc:docsdk:4.9.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
3. api变动
|
|
|
|
|
|
|
|
| 模块 | 调整 | API | 描述 | 备注 |
|
|
|
|
| ---- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | ---- |
|
|
|
|
| 直播 | 新增 | `sendQuestionMsg(String question, List<String> imgPathList, BaseLiveCallback<String, QaSendErrorBean> callback)` | 发送带有图片的问答(兼容纯文字问答) | |
|
|
|
|
| 直播 | 新增 | `boolean isOpenCustomEmoji()` | 获取是否开启自定义表情功能 | |
|
|
|
|
| 直播 | 新增 | `boolean isCustomEmojiDownloadComplete()` | 自定义表情是否下载完成 | |
|
|
|
|
| 直播 | 新增 | `String getEmojiByName(String name)` | 通过表情名获取单个表情,返回表情本地路径 | |
|
|
|
|
| 直播 | 新增 | `ArrayList<CustomEmoji> getCustomEmojis()` | 获取所有的自定义表情 | |
|
|
|
|
| 直播 | 过时 | `Question.time` | 此字段返回相对时间,单位为s,不利于扩展,使用millsTime字段替代,绝对时间,ms单位 | |
|
|
|
|
| 直播 | 过时 | `Answer.receiveTime` | 此字段返回相对时间,单位为s,不利于扩展,使用millsTime字段替代,绝对时间,ms单位 | |
|
|
|
|
|
|
|
|
4. 参数说明
|
|
|
|
|
|
|
|
QaSendErrorBean
|
|
|
|
|
|
|
|
```java
|
|
|
|
/**
|
|
|
|
* 错误码
|
|
|
|
*/
|
|
|
|
private int errorCode;
|
|
|
|
/**
|
|
|
|
* 错误信息
|
|
|
|
*/
|
|
|
|
private String errorMsg;
|
|
|
|
//状态码含义:
|
|
|
|
//图片文件校验失败,包括 文件不存在、接口返回文件不合法
|
|
|
|
QaSendErrorBean.ERROR_FILE_INVALID
|
|
|
|
//输入内容为空,或者输入内容长度大于1000
|
|
|
|
QaSendErrorBean.ERROR_CONTENT_INVALID
|
|
|
|
//图片数量超出6张
|
|
|
|
QaSendErrorBean.ERROR_IMG_NUMBER_INVALID
|
|
|
|
//1s防抖
|
|
|
|
QaSendErrorBean.ERROR_DEBOUNCE
|
|
|
|
//直播未开始
|
|
|
|
QaSendErrorBean.ERROR_NOT_LIVING
|
|
|
|
//网络请求失败
|
|
|
|
QaSendErrorBean.ERROR_REQUEST_FAILED
|
|
|
|
//图片上传oss 失败
|
|
|
|
QaSendErrorBean.ERROR_FILE_UPLOAD_FAILED
|
|
|
|
//发送问答失败,socket抛出错误
|
|
|
|
QaSendErrorBean.ERROR_JSON_PARSE_FAILED
|
|
|
|
//房间没有问答模板
|
|
|
|
QaSendErrorBean.ERROR_TEMPLATE_INVALID
|
|
|
|
//网络错误
|
|
|
|
QaSendErrorBean.ERROR_NETWORK_ERROR
|
|
|
|
|
|
|
|
//单个文件错误码:
|
|
|
|
//图片过大,请上传小于20M的图片
|
|
|
|
QaSendErrorBean.QaSendImgError.ERROR_IMAGE_SIZE_INVALID
|
|
|
|
//格式不支持,请选择JPG、PNG、GIF、JPEG、BMP格式的图片
|
|
|
|
QaSendErrorBean.QaSendImgError.ERROR_IMAGE_SUFFIX_INVALID
|
|
|
|
//上传文件时出现了错误,请重试
|
|
|
|
QaSendErrorBean.QaSendImgError.ERROR_IMAGE_UPLOAD_FAILED
|
|
|
|
//登录异常,请重新登录或者刷新后重试
|
|
|
|
QaSendErrorBean.QaSendImgError.ERROR_LOGIN_FAILED
|
|
|
|
//参数错误,请稍后重试,或联系客服
|
|
|
|
QaSendErrorBean.QaSendImgError.ERROR_PARAMS_INVALID
|
|
|
|
//哎呀,出了点问题。请稍后重试,或联系客服
|
|
|
|
QaSendErrorBean.QaSendImgError.ERROR_UNSPECIFIED
|
|
|
|
//图片校验失败,请重试
|
|
|
|
QaSendErrorBean.QaSendImgError.ERROR_FILE_INVALID
|
|
|
|
//图片文件不存在,请重试
|
|
|
|
QaSendErrorBean.QaSendImgError.ERROR_FILE_NOT_EXISTS
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CustomEmoji
|
|
|
|
|
|
|
|
```java
|
|
|
|
/**
|
|
|
|
* 表情名称
|
|
|
|
*/
|
|
|
|
private String name;
|
|
|
|
/**
|
|
|
|
* 表情本地路径
|
|
|
|
*/
|
|
|
|
private String img;
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Release4.8.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
|
|
|
|
1. 新增竖屏观看功能
|
|
|
|
|
|
|
|
2. 加入聊天置顶功能
|
|
|
|
3. 优化公告的显示和阅读
|
|
|
|
4. 直播带货支持多平台链接
|
|
|
|
5. 优化播放器和回放文档画笔下载
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api 'com.bokecc.doc:docsdk:4.8.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
3. api变动
|
|
|
|
|
|
|
|
| 模块 | 调整 | API | 描述 | 备注 |
|
|
|
|
| ---- | ---- | ------------------------------------------------------------ | -------------------- | ------------------------------------------------------------ |
|
|
|
|
| 直播 | 新增 | LiveDigestBean getLiveDigestInfo | 获取直播相关信息 | startLogin成功后调用,需要判空,LiveDigestBean:icon-直播间logo |
|
|
|
|
| 直播 | 新增 | DWLiveListener.onChatTop(ArrayList<CCChatTopBean> ccChatTopBeanList) | 回调聊天置顶列表 | CCChatTopBean:属性定义见参数说明 |
|
|
|
|
| 直播 | 新增 | DWLiveListener.onUnChatTop(ArrayList<String> chatIdList) | 回调取消聊天置顶列表 | |
|
|
|
|
|
|
|
|
4. 参数说明
|
|
|
|
|
|
|
|
CCChatTopBean
|
|
|
|
|
|
|
|
```java
|
|
|
|
/**
|
|
|
|
* 置顶消息id
|
|
|
|
*/
|
|
|
|
private String id;
|
|
|
|
/**
|
|
|
|
* 置顶消息内容
|
|
|
|
*/
|
|
|
|
private String content;
|
|
|
|
/**
|
|
|
|
* 置顶消息发送者id
|
|
|
|
*/
|
|
|
|
private String fromViewerId;
|
|
|
|
/**
|
|
|
|
* 置顶消息发送者昵称
|
|
|
|
*/
|
|
|
|
private String fromViewerName;
|
|
|
|
/**
|
|
|
|
* 置顶消息发送者头像
|
|
|
|
*/
|
|
|
|
private String fromViewerAvatar;
|
|
|
|
/**
|
|
|
|
* 置顶消息发送者分组id
|
|
|
|
*/
|
|
|
|
private String fromViewerGroupId;
|
|
|
|
/**
|
|
|
|
* 值为1 主讲、推流端角色(publisher)
|
|
|
|
* 值为2 助教端角色(teacher)
|
|
|
|
* 值为3 主持人角色(host)
|
|
|
|
* 值为4 学生、观看端角色(student)
|
|
|
|
* 值为0 其它角色(other)
|
|
|
|
*/
|
|
|
|
private int fromViewerRole;
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Release4.7.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
|
|
|
|
1. 新增直播文档重试功能
|
|
|
|
|
|
|
|
2. 新增直播低延迟与多人连麦解耦
|
|
|
|
3. 新增在线回放文档重试功能
|
|
|
|
4. 新增抽奖老虎机样式
|
|
|
|
5. 新增红包雨自定义封面
|
|
|
|
6. 修复其他已知问题
|
|
|
|
7. 优化Demo层UI
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api 'com.bokecc.doc:docsdk:4.7.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
3. 注意事项
|
|
|
|
|
|
|
|
对外api改动(直播和回放模块):
|
|
|
|
docLoadCompleteFailedWithIndex(int index)
|
|
|
|
修改部分状态值含义,所有状态值及含义如下:
|
|
|
|
|
|
|
|
| index 状态值 | 状态定义 | 操作 |
|
|
|
|
| ------------ | ------------------------------------------------------------ | -------- |
|
|
|
|
| 0 | 文档组件加载完成 | 无 |
|
|
|
|
| 3 | 文档组件加载失败(SDK内部已做重试逻辑,但仍失败需要退出重新进入房间) | 退出重进 |
|
|
|
|
| 1 | 动态文档翻页成功 | 无 |
|
|
|
|
| 5 | 动态文档翻页超时(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
|
|
|
|
| 2 | 非动画文档(白板 图片)文档翻页完成 | 无 |
|
|
|
|
| 4 | 静态文档翻页失败(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
|
|
|
|
| 6 | 画板翻页失败(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
|
|
|
|
| 9 | 文档翻页超时 | 无 |
|
|
|
|
| 10 | 静态文档翻页超时(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
|
|
|
|
| 11 | 动态文档动画执行成功 | 无 |
|
|
|
|
| 12 | 动态文档动画执行超时(内部重试) | 无 |
|
|
|
|
| 13 | 动态文档加载成功 | 无 |
|
|
|
|
| 14 | 动态文档加载失败(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
对外API新增:
|
|
|
|
|
|
|
|
| 模块 | 调整 | API | 描述 | 备注 |
|
|
|
|
| ---- | ---- | ------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------ |
|
|
|
|
| 直播 | 新增 | reloadPageChange(BaseCallback<String> callback) | 刷新当前页文档 | callback回调onSuccess为调用成功,回调onError为调用失败 |
|
|
|
|
| 回放 | 新增 | reloadPageChange(BaseCallback<String> callback) | 刷新当前页文档 | callback回调onSuccess为调用成功,回调onError为调用失败 |
|
|
|
|
| 回放 | 新增 | IDocManagerListener.onPageInfoList(ArrayList<ReplayPageInfo> infoList) | 回调当前回放翻页信息 | 4.7.0之前版本DWLiveReplayListener的onPageInfoList方法不再回调,使用此方法替代 |
|
|
|
|
| 回放 | 新增 | IDocManagerListener.onMetaDataLoadSuccess | 回调回放元数据下载完成 | 回放翻页、画笔等数据下载完成回调 |
|
|
|
|
| 回放 | 废弃 | ~~DWLiveReplayListener.onPageInfoList~~ | 回放翻页信息 | 使用docsdk的回放文档功能时,此方法废弃不再使用 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Release4.6.1
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
|
|
|
|
1. 新增隐私协议弹窗
|
|
|
|
|
|
|
|
2. 新增权限申请弹窗
|
|
|
|
|
|
|
|
3. 修复多人连麦流异常问题
|
|
|
|
|
|
|
|
4. 修复音频模式播放失败问题
|
|
|
|
|
|
|
|
5. 修复1v1声网连麦切换网络窗口消失问题
|
|
|
|
|
|
|
|
6. 修复切换视图文档显示不全问题
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
//文档sdk内部引用直播sdk,单独引入:api 'com.bokecc:dwlivesdk:4.6.1'
|
|
|
|
api 'com.bokecc.doc:docsdk:4.6.1'
|
|
|
|
```
|
|
|
|
|
|
|
|
3. 注意事项
|
|
|
|
|
|
|
|
```
|
|
|
|
1. CCBasePlayer.CCPlayerStatus中去除了RenderingStart状态
|
|
|
|
2. DWLiveEngine的init方法由于权限合规修改,去除了非主进程调用检查,需要确保此方法调用是在主进程
|
|
|
|
3. 全局混淆增加:
|
|
|
|
-keep class com.tencent.tbs.** {
|
|
|
|
*;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Release4.6.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
|
|
|
|
1. 文档模块优化及升级 [文档模块参考文档](文档SDK接入指南)
|
|
|
|
|
|
|
|
2. 优化回放画笔数据加载
|
|
|
|
|
|
|
|
3. 修复横屏观看直播顶部样式问题
|
|
|
|
|
|
|
|
4. 修复网络重连后文档及音频状态异常问题
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
//文档sdk内部引用直播sdk,单独引入:api 'com.bokecc:dwlivesdk:4.6.0'
|
|
|
|
api 'com.bokecc.doc:docsdk:4.6.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
3. 因类路径变化,module中ELog等类报错,请重新导入类
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Release4.5.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
|
|
|
|
1. 新增直播带货功能 [组件参考文档](module/interactive) [直播API参考文档](2.3.18.0及之后直播接入文档)
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api 'com.bokecc:dwlivesdk:4.5.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Release4.3.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
|
|
|
|
1. 新增直播邀请卡功能 [参考文档](module/interactive)
|
|
|
|
1. 新增直播问卷功能 [参考文档](module/interactive)
|
|
|
|
1. 优化已知问题
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api 'com.bokecc:dwlivesdk:4.3.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
## Release4.2.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
|
|
|
|
1. 直播新增投票功能 [参考文档](module/interactive)
|
|
|
|
1. 直播新增红包雨功能 [参考文档](module/interactive)
|
|
|
|
1. 新增鉴黄直播结束提示
|
|
|
|
1. 优化画笔流畅度
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api 'com.bokecc:dwlivesdk:4.2.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
3. api变动
|
|
|
|
|
|
|
|
1. 新增DWLive.getInteractiveOngoing(获取正在进行的组件活动,直播登录后调用)
|
|
|
|
|
|
|
|
2. 新增DWLiveListener.onLiveStop(boolean isNormal, String msg),替代原DWLiveListener.onStreamEnd(boolean isNormal) 方法,增加返回结束直播提示语
|
|
|
|
|
|
|
|
3. 过时DWLiveListener.onStreamEnd(boolean isNormal) 方法
|
|
|
|
|
|
|
|
## Release4.1.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
1. 直播新增打赏功能 [参考文档](module/interactive)
|
|
|
|
1. 直播新增点赞功能 [参考文档](module/interactive)
|
|
|
|
1. 直播新增连麦网络状态回调
|
|
|
|
1. 回放新增试看功能
|
|
|
|
1. 修复视频宽高回调无效问题
|
|
|
|
1. 文档加载失败优化
|
|
|
|
1. 修复离线回放崩溃问题
|
|
|
|
1. 修复抽奖统计问题
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api 'com.bokecc:dwlivesdk:4.1.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
3. 直播DWLive新增API
|
|
|
|
|
|
|
|
```java
|
|
|
|
//获取互动组件配置信息
|
|
|
|
public InteractionConfigure getInteractionConfigure()
|
|
|
|
//获取互动组件token
|
|
|
|
public void getInteractiveToken(BaseCallback<String> callback);
|
|
|
|
|
|
|
|
//互动组件的配置
|
|
|
|
public class InteractionConfigure {
|
|
|
|
//点赞 0:关闭 1:直播间配置 2:全局配置
|
|
|
|
private int likeSwitch = 0;
|
|
|
|
//礼物配置
|
|
|
|
private GiftConfigure giftConfigure;
|
|
|
|
}
|
|
|
|
//打赏组件的配置
|
|
|
|
public class GiftConfigure {
|
|
|
|
//0:关闭 1:直播间配置 2:全局配置
|
|
|
|
private int giftSwitch = 0;
|
|
|
|
//0:关闭 1: 左侧特效 2:全局特效
|
|
|
|
private int specialEffects;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
4. 直播连麦RTCConnectListener中新增回调
|
|
|
|
|
|
|
|
```java
|
|
|
|
/**
|
|
|
|
* 推流网络状态
|
|
|
|
* @param hdStreamQuality
|
|
|
|
*/
|
|
|
|
void onPublishQuality(HDStreamQuality hdStreamQuality);
|
|
|
|
/**
|
|
|
|
* 拉流网络状态
|
|
|
|
* @param userId 用户id
|
|
|
|
* @param hdStreamQuality 网络信息
|
|
|
|
*/
|
|
|
|
void onPlayQuality(String userId, HDStreamQuality hdStreamQuality);
|
|
|
|
|
|
|
|
public class HDStreamQuality {
|
|
|
|
/** 本机到服务器的往返时延(ms) */
|
|
|
|
private int rtt;
|
|
|
|
/**上行丢包(0~255),数值越大丢包越高,丢包率 = pktLostRate/255 */
|
|
|
|
private int pktLostRate;
|
|
|
|
/**下行丢包率*/
|
|
|
|
private int downLostRate;
|
|
|
|
/** 上行综合网络质量(0~3),分别对应优、良、中、差 */
|
|
|
|
private int txQuality;
|
|
|
|
/** 下行综合网络质量(0~3),分别对应优、良、中、差*/
|
|
|
|
private int rxQuality;
|
|
|
|
/**音频码率*/
|
|
|
|
private double akbps;
|
|
|
|
/**视频码率*/
|
|
|
|
private double vkbps;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
5. 在线回放DWLiveReplayListener新增回调
|
|
|
|
|
|
|
|
```java
|
|
|
|
/**
|
|
|
|
* 回调回放试看时长
|
|
|
|
* @param trialDuration 单位秒
|
|
|
|
*/
|
|
|
|
public void onTrialDuration(int trialDuration);
|
|
|
|
```
|
|
|
|
|
|
|
|
6. 修复直播普通模式(非连麦状态)、在线回放、离线回放视频宽高回调问题
|
|
|
|
|
|
|
|
```java
|
|
|
|
public abstract class LiveRtmpPlayerCallBack {
|
|
|
|
...
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 检测到视频宽高发生变化
|
|
|
|
*
|
|
|
|
* @param width 宽
|
|
|
|
* @param height 高
|
|
|
|
*/
|
|
|
|
public void onVideoSizeChanged(int width, int height) {
|
|
|
|
}
|
|
|
|
|
|
|
|
...
|
|
|
|
}
|
|
|
|
|
|
|
|
public abstract class PlaybackPlayerListener {
|
|
|
|
...
|
|
|
|
/**
|
|
|
|
* 检测到视频宽高发生变化
|
|
|
|
*
|
|
|
|
* @param width 宽
|
|
|
|
* @param height 高
|
|
|
|
*/
|
|
|
|
public void onVideoSizeChanged(int width, int height) {
|
|
|
|
}
|
|
|
|
|
|
|
|
...
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Release4.0.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
1. 在线回放新增自定义字段
|
|
|
|
2. 直播、在线回放新增视频LOGO
|
|
|
|
3. 修复以及优化一些已知问题
|
|
|
|
4. 新增红包雨功能
|
|
|
|
5. sdk内的图片地址链接HTTP换成HTTPS
|
|
|
|
6. 登陆字符限制为40
|
|
|
|
7. 解决频繁获取androidID导致审核不通过
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api 'com.bokecc:dwlivesdk:4.0.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
3. 4.0.0开始不再提供本地jar包支持
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. 新增方法
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
|
|
|
|
|
|
|
// region -------------------- 在线回放 ---------------------
|
|
|
|
//设置播放器监听
|
|
|
|
public void setReplayPlayerListener(ReplayPlayerListener replayPlayerListener)
|
|
|
|
//设置防录屏
|
|
|
|
public void setAntiRecordScreen(Activity activity)
|
|
|
|
//设置播放器显示模式
|
|
|
|
public void setVideoType(CCBasePlayer.VideoType videoType)
|
|
|
|
//获取视频总时长
|
|
|
|
public long getDuration()
|
|
|
|
//获取播放状态
|
|
|
|
public CCBasePlayer.CCPlayerStatus getPlayStatus()
|
|
|
|
//获取当前播放进度
|
|
|
|
public long getCurrentPosition()
|
|
|
|
//是否是播放中
|
|
|
|
public boolean isPlaying()
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region -------------------- 离线回放 ---------------------
|
|
|
|
//设置离线回放播放器回调
|
|
|
|
public void setReplayPlayerListener(ReplayPlayerListener replayPlayerListener)
|
|
|
|
//设置视频拉伸模式
|
|
|
|
public void setVideoType(CCBasePlayer.VideoType type)
|
|
|
|
//获取当前播放状态
|
|
|
|
public CCBasePlayer.CCPlayerStatus getPlayerStatus()
|
|
|
|
//当前是否是播放中
|
|
|
|
public boolean isPlaying()
|
|
|
|
//是否处于可播放状态
|
|
|
|
public boolean isInPlaybackState()
|
|
|
|
//设置播放进度
|
|
|
|
public void seekTo(long progress)
|
|
|
|
//获取当前播放进度
|
|
|
|
public long getCurrentPosition()
|
|
|
|
//获取视频总时长
|
|
|
|
public long getDuration()
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
5. 修改方法
|
|
|
|
|
|
|
|
```java
|
|
|
|
// region -------------------- 在线回放 ---------------------
|
|
|
|
//设置在线回放回调监听
|
|
|
|
public void setReplayParams(DWLiveReplayListener replayListener)
|
|
|
|
//开始播放
|
|
|
|
public void start(Context context)
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region -------------------- 离线回放 ---------------------
|
|
|
|
//设置离线回放参数
|
|
|
|
public void setReplayParams(DWLiveLocalReplayListener replayListener, DocView docView, String dir)
|
|
|
|
//开始播放
|
|
|
|
public void start(Context context)
|
|
|
|
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
6. 废弃或删除方法
|
|
|
|
|
|
|
|
```java
|
|
|
|
// region -------------------- 在线回放 ---------------------
|
|
|
|
//设置在线回放的参数
|
|
|
|
public void setReplayParams(DWLiveReplayListener replayListener, Context
|
|
|
|
context, DWReplayPlayer player, DocView docView)
|
|
|
|
//设置播放器
|
|
|
|
public void setReplayPlayer(DWReplayPlayer player)
|
|
|
|
//开始播放
|
|
|
|
public void start(Surface surface)
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region -------------------- 离线回放 ---------------------
|
|
|
|
//开始播放
|
|
|
|
public void start(Surface surface)
|
|
|
|
//释放播放器
|
|
|
|
public void releasePlayer()
|
|
|
|
// endregion
|
|
|
|
```
|
|
|
|
|
|
|
|
7. 在线回放功能升级指南
|
|
|
|
|
|
|
|
1. 播放器修改
|
|
|
|
|
|
|
|
4.0.0版本之前,需要在布局里面声明 `com.bokecc.livemodule.view.ResizeTextureView` ,并在代码层创建 `DWReplayPlayer` 对象。从4.0.0版本开始,您不需要再声明 `DWReplayPlayer` 播放器对象,在 `DWLiveReplayListener` 中,通过 `public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) ` 方法,返回播放器视图,您需要创建容器,并将返回的 `hdMediaView` 视图添加进容器即可,并在适当的回调方法中操作移除 `hdMediaView` 。
|
|
|
|
|
|
|
|
2. 播放器事件监听修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
//在DWLiveReplayListener中新增重写以下回调
|
|
|
|
@Override
|
|
|
|
public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) {
|
|
|
|
//返回的 hdMediaView 为直播播放器布局
|
|
|
|
}
|
|
|
|
//播放器注册监听修改
|
|
|
|
DWReplayPlayer.setPlayerEventListener(PlayerEvent event);
|
|
|
|
-->DWLiveReplay.getInstance().setReplayPlayerListener(ReplayPlayerListener replayPlayerListener);
|
|
|
|
```
|
|
|
|
|
|
|
|
3. 开始播放修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
DWLiveCoreHandler.getInstance().start();
|
|
|
|
-->DWLiveCoreHandler.getInstance().start(context);
|
|
|
|
```
|
|
|
|
|
|
|
|
4. 防录屏修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
DWReplayPlayer.setAntiRecordScreen(activity);
|
|
|
|
--> DWLiveReplay.getInstance().setAntiRecordScreen(activity);
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5. 其他修改
|
|
|
|
|
|
|
|
所有播放器相关的操作将放到DWLiveReplay中进行调用
|
|
|
|
|
|
|
|
8. 离线回放升级指南
|
|
|
|
|
|
|
|
1. 播放器修改
|
|
|
|
|
|
|
|
4.0.0版本之前,需要在布局里面声明 `com.bokecc.livemodule.view.ResizeTextureView` ,并在代码层创建 `DWReplayPlayer` 对象。从4.0.0版本开始,您不需要再声明 `DWReplayPlayer` 播放器对象,在 `DWLiveLocalReplayListener` 中,通过 `public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) ` 方法,返回播放器视图,您需要创建容器,并将返回的 `hdMediaView` 视图添加进容器即可,并在适当的回调方法中操作移除 `hdMediaView` 。
|
|
|
|
|
|
|
|
2. 播放器事件监听修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
//在DWLiveLocalReplayListener中新增重写以下回调
|
|
|
|
@Override
|
|
|
|
public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) {
|
|
|
|
//返回的 hdMediaView 为直播播放器布局
|
|
|
|
}
|
|
|
|
//播放器注册监听修改
|
|
|
|
DWReplayPlayer.setPlayerEventListener(PlayerEvent event);
|
|
|
|
-->DWLiveLocalReplay.getInstance().setReplayPlayerListener(ReplayPlayerListener replayPlayerListener);
|
|
|
|
```
|
|
|
|
|
|
|
|
3. 开始播放修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
DWLiveCoreHandler.getInstance().start();
|
|
|
|
-->DWLiveCoreHandler.getInstance().start(context);
|
|
|
|
```
|
|
|
|
|
|
|
|
4. 防录屏修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
DWReplayPlayer.setAntiRecordScreen(activity);
|
|
|
|
--> DWLiveReplay.getInstance().setAntiRecordScreen(activity);
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5. 其他修改
|
|
|
|
|
|
|
|
所有播放器相关的操作将放到DWLiveReplay中进行调用
|
|
|
|
另外播放完成不需要调用stop
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Release3.18.0
|
|
|
|
|
|
|
|
1. 更新日志
|
|
|
|
1. 支持多人连麦功能
|
|
|
|
2. 支持适配直播观看模式
|
|
|
|
3. 修复在线回放画笔重叠问题
|
|
|
|
|
|
|
|
2. 远端集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api 'com.bokecc:dwlivesdk:3.18.0'
|
|
|
|
```
|
|
|
|
|
|
|
|
3. 本地集成
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
删除旧版本dwlivesdk.jar,导入dwlivesdk-3.18.0.jar
|
|
|
|
CommonLib-1.1.3.jar替换为CommonLib-1.1.4.jar
|
|
|
|
删除旧版本的rtc.jar
|
|
|
|
新增CCStreamALib-1.0.9.jar
|
|
|
|
新增CCStreamPlayerLib-1.0.5.jar
|
|
|
|
新增CCStreamTLib-1.0.9.jar
|
|
|
|
新增ClassBaseLib-6.9.3.jar
|
|
|
|
新增liteavsdk-8.8.10263.jar
|
|
|
|
新增MqttService-1.1.1.jar
|
|
|
|
新增mqttv3-1.2.0.jar
|
|
|
|
新增RtsNetSDK-1.6.1.jar
|
|
|
|
jniLibs新增 libliteavsdk.so libRtsSDK.so libsoundtouch.so libtraeimp-rtmp.so libtxffmpeg.so
|
|
|
|
```
|
|
|
|
|
|
|
|
4. 新增方法
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
|
|
|
|
|
|
|
// region -------------------- 直播对外设置相关 ---------------------
|
|
|
|
//设置播放器显示模式
|
|
|
|
public void setVideoType(CCBasePlayer.VideoType videoType)
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region -------------------- 连麦对外设置相关 ---------------------
|
|
|
|
//设置流监听
|
|
|
|
public void setPublishStreamListener(LiveRtmpPlayerCallBack callBack)
|
|
|
|
//设置防录屏
|
|
|
|
public void setAntiRecordScreen(Activity activity)
|
|
|
|
//是否是多人连麦
|
|
|
|
public boolean isMultiMediaCall()
|
|
|
|
//发起多人连麦
|
|
|
|
public void callInPreviewWithType(RtcCallBack rtcCallBack,BaseRtcClient.RtcConnectType type)
|
|
|
|
//通过流id拉取远端流
|
|
|
|
public void pullRemoteStream(String userId, PullRemoteStreamCallBack baseCallback)
|
|
|
|
//通过id移除远端流
|
|
|
|
public void removeRemoteStream(String userId,BaseCallback baseCallback)
|
|
|
|
//拒绝连麦
|
|
|
|
public void rejectCall()
|
|
|
|
//同意连麦
|
|
|
|
public void agreeCallInPreview(RtcCallBack rtcCallBack,BaseRtcClient.RtcConnectType audiovideo)
|
|
|
|
//连麦过程中开启或者关闭麦克风
|
|
|
|
public void setLocalAudioEnable(boolean enable)
|
|
|
|
//连麦过程中开启或者关闭摄像头
|
|
|
|
public void setLocalVideoEnable(boolean enable)
|
|
|
|
//连麦过程中切换摄像头
|
|
|
|
public void switchLocalCamera()
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
5. 修改方法
|
|
|
|
|
|
|
|
```java
|
|
|
|
// region -------------------- 直播对外设置相关 ---------------------
|
|
|
|
//开始直播
|
|
|
|
public void start()-->public void start(Context context)
|
|
|
|
//设置播放参数
|
|
|
|
public void setDWLivePlayParams(DWLiveListener dwLiveListener, Context context, DocView docView, DWLivePlayer player)-->public void setDWLivePlayParams(DWLiveListener dwLiveListener, Context context, DocView docView)
|
|
|
|
|
|
|
|
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region -------------------- 连麦对外设置相关 ---------------------
|
|
|
|
//断开连麦
|
|
|
|
public void disConnectSpeak()-->public void hangup()
|
|
|
|
//拒绝连麦
|
|
|
|
public void disConnectApplySpeak()-->public void rejectCall()
|
|
|
|
//设置连麦回调监听
|
|
|
|
public void setRtcClientListener(RtcClientListener rtcClientListener)-->public void setRtcClientListener(RTCConnectListener rtcClientListener)
|
|
|
|
|
|
|
|
//设置直播播放音量大小
|
|
|
|
public void setVolume(float left, float right)-->public void setVolume(float volume)
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
6. 废弃或删除方法
|
|
|
|
|
|
|
|
```java
|
|
|
|
// region -------------------- 连麦对外设置相关 ---------------------
|
|
|
|
//移除本地摄像头预览。废弃原因:连麦重构,断开连麦自动停止预览,用户手动从视图树移除HDMediaView即可
|
|
|
|
public void removeLocalRender()
|
|
|
|
|
|
|
|
//关闭资源。废弃原因:连麦重构,底层自动处理,不需要用户手动调用
|
|
|
|
public void closeCamera()
|
|
|
|
|
|
|
|
//发起连麦。废弃原因:连麦重构,使用callInPreView方法替代
|
|
|
|
public void startVoiceRTCConnect()
|
|
|
|
public void startRtcConnect()
|
|
|
|
|
|
|
|
//设置预览。废弃原因:连麦重构,在发起连麦callback中返回预览视图,用户可选择性添加进视图树
|
|
|
|
public void setLocalRender(CCRTCRender localRender)
|
|
|
|
public void setRemoteRender(CCRTCRender remoteRender)
|
|
|
|
public void setRtcClientParameters(RtcClientListener rtcClientListener, CCRTCRender
|
|
|
|
localRender, CCRTCRender remoteRender)
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region -------------------- 直播对外设置相关 ---------------------
|
|
|
|
|
|
|
|
//直播设置播放view。废弃原因:重构在Callback里返回HDMediaView视图
|
|
|
|
public void start(Surface surface)
|
|
|
|
|
|
|
|
// endregion
|
|
|
|
```
|
|
|
|
|
|
|
|
7. 直播功能升级指南
|
|
|
|
|
|
|
|
1. 播放器修改
|
|
|
|
|
|
|
|
3.18.0版本之前,需要在布局里面声明 `com.bokecc.livemodule.view.ResizeTextureView` ,并在代码层创建 `DWLivePlayer` 对象。从3.18.0版本开始,您不需要再声明 `DWLivePlayer` 播放器对象,在 `DWLiveListener` 中,通过 `public void onLiveStreamViewPrepared(HDMediaView hdMediaView) ` 方法,返回播放器视图,您需要创建容器,并将返回的 `hdMediaView` 视图添加进容器即可,并在适当的回调方法中操作移除 `hdMediaView` 。
|
|
|
|
|
|
|
|
2. 播放器事件监听修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
//在DWLiveListener中新增重写以下回调
|
|
|
|
@Override
|
|
|
|
public void onLiveStreamViewPrepared(HDMediaView hdMediaView) {
|
|
|
|
//返回的 hdMediaView 为直播播放器布局
|
|
|
|
}
|
|
|
|
//播放器注册监听修改
|
|
|
|
DWLivePlayer.setPlayerEventListener(PlayerEvent event);
|
|
|
|
-->DWLive.getInstance().setPublishStreamListener(LiveRtmpPlayerCallBack event);
|
|
|
|
```
|
|
|
|
|
|
|
|
3. 开始播放修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
DWLiveCoreHandler.getInstance().start();
|
|
|
|
-->DWLiveCoreHandler.getInstance().start(mContext);
|
|
|
|
```
|
|
|
|
|
|
|
|
4. 防录屏修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
DWLivePlayer.setAntiRecordScreen(activity);
|
|
|
|
-->DWLive.getInstance().setAntiRecordScreen(activity);
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5. 其他修改
|
|
|
|
|
|
|
|
```java
|
|
|
|
//不再需要在onStreamEnd(final boolean isNormal)回调中调用以下代码段
|
|
|
|
// 暂停播放
|
|
|
|
DWLive.getInstance().pause();
|
|
|
|
```
|
|
|
|
|
|
|
|
8. 连麦功能升级指南
|
|
|
|
|
|
|
|
3.18.0版本加入了多人连麦的功能,并将单人连麦的API使用与多人连麦进行统一。如果您希望新接入多人连麦功能,在直播间管理后台开启多人连麦的功能后,您可以通过
|
|
|
|
|
|
|
|
`连麦接入文档` 进行多人连麦功能的对接。如果您已经使用了单人连麦的功能,也需要根据文档进行单人连麦功能的修改
|
|
|
|
|
|
|
|
9. 无连麦功能接入或者依赖冲突解决
|
|
|
|
|
|
|
|
如果您不使用sdk提供的多人连麦功能突,建议排除连麦库。如果您在使用sdk的过程中出现依赖冲突问题,也可以根据下面代码所示排除方案进行冲突依赖的排除。
|
|
|
|
|
|
|
|
```groovy
|
|
|
|
api('com.bokecc:dwlivesdk:' + rootProject.ext.android.SDK_VERSION) {
|
|
|
|
// // drm冲突
|
|
|
|
// exclude group: 'com.bokecc', module: 'drm'
|
|
|
|
// // webrtc冲突
|
|
|
|
// exclude group: 'com.bokecc', module: 'hdwebrtc'
|
|
|
|
// // 播放器冲突
|
|
|
|
// exclude group: 'com.bokecc', module: 'CCStreamPlayerLib'
|
|
|
|
// // 云课堂sdk冲突(多人连麦,不使用多人连麦可以排除)
|
|
|
|
exclude group: 'com.bokecc', module: 'ClassBaseLib'
|
|
|
|
// // tbs冲突(不使用x5内核,可以在初始化sdk关闭x5开关,并排除此库)
|
|
|
|
// exclude group: 'com.tencent.tbs.tbssdk', module: 'sdk'
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|