更新日志
远端集成
//下述两种方式集成:
//1. UI sdk集成,demo源码aar,内部依赖docsdk与dwlivesdk,套用demoUI,不可修改
api 'com.bokecc:CCLiveUILib:4.19.1'
//2. doc sdk集成,内部依赖dwlivesdk,可参考demo源码自定义界面
api 'com.bokecc.doc:docsdk:4.19.1'
更新日志
远端集成
//下述两种方式集成:
//1. UI sdk集成,demo源码aar,内部依赖docsdk与dwlivesdk,套用demoUI,不可修改
api 'com.bokecc:CCLiveUILib:4.19.0'
//2. doc sdk集成,内部依赖dwlivesdk,可参考demo源码自定义界面
api 'com.bokecc.doc:docsdk:4.19.0'
更新日志
远端集成
//下述两种方式集成:
//1. UI sdk集成,demo源码aar,内部依赖docsdk与dwlivesdk,套用demoUI,不可修改
api 'com.bokecc:CCLiveUILib:4.18.0'
//2. doc sdk集成,内部依赖dwlivesdk,可参考demo源码自定义界面
api 'com.bokecc.doc:docsdk:4.18.0'
更新日志
远端集成
//下述两种方式集成:
//1. UI sdk集成,demo源码aar,内部依赖docsdk与dwlivesdk,套用demoUI,不可修改
api 'com.bokecc:CCLiveUILib:4.17.0'
//2. doc sdk集成,内部依赖dwlivesdk,可参考demo源码自定义界面
api 'com.bokecc.doc:docsdk:4.17.0'
更新日志
远端集成
//下述两种方式集成:
//1. UI sdk集成,demo源码aar,内部依赖docsdk与dwlivesdk,套用demoUI,不可修改
api 'com.bokecc:CCLiveUILib:4.16.0'
//2. doc sdk集成,内部依赖dwlivesdk,可参考demo源码自定义界面
api 'com.bokecc.doc:docsdk:4.16.0'
更新日志
远端集成
//下述两种方式集成:
//1. UI sdk集成,demo源码aar,内部依赖docsdk与dwlivesdk,套用demoUI,不可修改
api 'com.bokecc:CCLiveUILib:4.14.0'
//2. doc sdk集成,内部依赖dwlivesdk,可参考demo源码自定义界面
api 'com.bokecc.doc:docsdk:4.14.0'
新增混淆策略
-dontwarn com.badlogic.gdx.**
-keep class com.aliyun.ams.ipdetector.Inet64Util{*;}
-keep class com.alibaba.sdk.android.**{*;}
-keep class com.ut.**{*;}
-keep class com.ta.**{*;}
API 变动
模块 | 调整 | API | 描述 |
---|---|---|---|
直播 | 新增 | LiveDigestBean.getLiveScene() | 0大班课、1研讨课,目前聊天组件需要使用 |
更新日志
远端集成
//文档sdk内部引用直播sdk:'com.bokecc:dwlivesdk:4.12.0,如果使用直播间带有文档的模板,建议使用文档 sdk
api 'com.bokecc.doc:docsdk:4.12.0'
更新日志
远端集成
xxxxxxxxxx
//文档sdk内部引用直播sdk:'com.bokecc:dwlivesdk:4.11.0
api 'com.bokecc.doc:docsdk:4.11.0'
注意事项
xxxxxxxxxx
1. VR 直播、VR 回放功能仅支持具有 GPU 的设备(需要开启硬件加速)
2. VR 直播、VR 回放功能需要设备支持陀螺仪传感器
API 变动
模块 | 调整 | API | 描述 |
---|---|---|---|
直播 | 新增 | enableVrSensorControl(boolean enable) | 设置 vr 重力感应开关,默认开启 |
直播 | 新增 | enableVrSplitView(boolean enable) | 设置 vr 分屏开关,默认关闭 |
直播 | 新增 | LiveDigestBean.isVrLive() | 获取是否是 vr 直播,通过DWLive.getInstance().getLiveDigestInfo()获取 |
回放 | 新增 | enableVrSensorControl(boolean enable) | 设置 vr 重力感应开关,默认开启 |
回放 | 新增 | enableVrSplitView(boolean enable) | 设置 vr 分屏开关,默认关闭 |
回放 | 新增 | boolean getIsVr() | 获取是否是 vr 视频 |
更新日志
新增:
优化:
修复:
远端集成
xxxxxxxxxx
api 'com.bokecc.doc:docsdk:4.10.0'
api变动
模块 | 调整 | API | 描述 | 备注 |
---|---|---|---|---|
直播 | 过时 | 模版信息名称、描述、状态不再对外提供 | ||
直播 | 删除 | 删除此字段,使用 encryptId 替代 | ||
直播 | 修改类型 int-->long | LiveInfo.liveDuration | 增加精度 | |
直播/回放 | 新增 | LoginInfo.secondaryVerify/ReplayLoginInfo.secondaryVerify | startLogin-主次验证场景设置字段 | |
直播 | 新增 | Viewer.avatar、customInfo、updateNameSwitch | 直播用户头像、自定义信息、修改昵称开关 | |
回放 | 新增 | Viewer.avatar | 回放用户头像 | |
直播 | 过时 | 使用DWLiveLoginListener.onLoginFailed | ||
直播 | 新增 | DWLiveLoginListener.onLoginFailed | 替代DWLiveLoginListener.onException | |
回放 | 过时 | 使用DWLiveReplayLoginListener.onLoginFailed | ||
回放 | 新增 | DWLiveReplayLoginListener.onLoginFailed | 替代DWLiveReplayLoginListener.onException | |
文档 | 过时 | 文档截图(不带画笔) | ||
文档 | 新增 | IDocView.captureBitmap(BaseDocCallback<Bitmap,String> callback) | 文档截图(带画笔) |
对接说明
新增登录方式对接
x本期迭代新增加支持:免登录验证(不输入昵称、密码)、新白名单验证、主次验证登录方式
其中主次验证登录方式,如果为次验证登录,则需要设置`LoginInfo.secondaryVerify/ReplayLoginInfo.secondaryVerify` 字段的值为 1
直播与回放登录方法 startLogin
新增onLoginFailed
回调,回调错误码与错误描述,如下:
错误码 | 描述 | 备注 |
---|---|---|
10000000 | 请求参数不正确,请检查后重试。 | |
20270008 | 您的Token不存在,请重新登录。 | |
10000001 | 系统出现异常,请稍后再试。 | |
20200002 | 您的账户已过期,请联系客服处理。 | |
10000034 | 您还未登录,请先登录后再试。 | |
10000005 | 该回放不存在或已被删除,请检查后重试。 | |
10000007 | 该直播不存在或已被删除,请检查后重试。 | |
10000006 | 该直播间不存在或已被删除,请检查后重试。 | |
20290005 | 请求参数错误,请检查后重试。 | |
20270000 | api登录调用失败,请检查网络连接后重试。 | |
20270011 | api登录调用超时,请检查网络连接后重试。 | |
20270002 | 名称或密码错误,请检查后重试。 | |
20270001 | 请求参数错误,请检查后重试。 | |
20270003 | 登录失败,请联系管理员添加你至白名单 | |
20270004 | 该视频不属于当前账户,请联系客服。 | |
20270005 | 该视频不可用,请联系客服。 | |
20270006 | 获取播放地址失败,请检查网络连接后重试。 | |
20270010 | 获取打点信息失败,请联系客服。 | |
20270007 | 该播放地址不存在或已被删除,请联系客服。 | |
20290009 | 不合法的产品线,请联系客服。 | |
20270012 | 手机号验证失败,请检查输入后重试。 | |
20270013 | 登记观看失败,请联系客服。 | |
20270014 | 手机号验证失败,请检查输入后重试。 | |
20270015 | 发送短信失败,请稍后再试。 | |
20270016 | 该直播间未开启直播转回放功能,请联系客服。 | |
20270017 | 回放直播间与登录直播间不符,请联系客服。 | |
20270018 | 批量获取视频信息失败,请联系客服。 | |
20270019 | 视频信息错误,请联系客服。 | |
20270020 | 该极速回放视频没有内容,请联系客服。 | |
20290015 | 企微绑定已失效,请重新绑定。 | |
20290016 | 非法的企微绑定关系,请重新绑定。 | |
20290017 | 该企微用户未在当前直播间下被授权,请联系管理员授权。 | |
20290001 | - | 接口验证返回 message,直接展示 |
更新日志
远端集成
xxxxxxxxxx
api 'com.bokecc.doc:docsdk:4.9.0'
api变动
模块 | 调整 | API | 描述 | 备注 |
---|---|---|---|---|
直播 | 新增 | sendQuestionMsg(String question, List<String> imgPathList, BaseLiveCallback<String, QaSendErrorBean> callback) | 发送带有图片的问答(兼容纯文字问答),question:问答文字,必填;imgPathList:图片本地地址(可读取地址),callback:回调 | |
直播/在线回放 | 新增 | boolean isOpenCustomEmoji() | 获取是否开启自定义表情功能 | |
直播/在线回放 | 新增 | boolean isCustomEmojiDownloadComplete() | 自定义表情是否下载完成 | |
直播/在线回放 | 新增 | String getEmojiByName(String name) | 通过表情名获取单个表情,返回表情本地路径 | |
直播/在线回放 | 新增 | ArrayList<CustomEmoji> getCustomEmojis() | 获取所有的自定义表情 | |
直播 | 新增 | Question.ExtraDTO | 新增extra数据字段,包含图片链接地址 | |
直播 | 新增 | Answer.ExtraDTO | 新增extra数据字段,包含图片链接地址 | |
直播 | 过时 | Question.time | 此字段返回相对时间,单位为s,不利于扩展,使用millsTime字段替代,绝对时间,ms单位 | |
直播 | 过时 | Answer.receiveTime | 此字段返回相对时间,单位为s,不利于扩展,使用millsTime字段替代,绝对时间,ms单位 |
参数说明
QaSendErrorBean
xxxxxxxxxx
/**
* 错误码
*/
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
xxxxxxxxxx
/**
* 表情名称
*/
private String name;
/**
* 表情本地路径
*/
private String img;
ExtraDTO
xxxxxxxxxx
/**
* 图片数组
*/
private List<ImgDTO> img;
ImgDTO
xxxxxxxxxx
/**
* 图片排序编号
*/
private int order;
/**
* 图片链接地址
*/
private String url;
更新日志
远端集成
xxxxxxxxxx
api 'com.bokecc.doc:docsdk:4.8.0'
api变动
模块 | 调整 | API | 描述 | 备注 |
---|---|---|---|---|
直播 | 新增 | LiveDigestBean getLiveDigestInfo | 获取直播相关信息 | startLogin成功后调用,需要判空,LiveDigestBean:icon-直播间logo |
直播 | 新增 | DWLiveListener.onChatTop(ArrayList | 回调聊天置顶列表 | CCChatTopBean:属性定义见参数说明 |
直播 | 新增 | DWLiveListener.onUnChatTop(ArrayList | 回调取消聊天置顶列表 |
参数说明
CCChatTopBean
xxxxxxxxxx
/**
* 置顶消息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;
更新日志
远端集成
xxxxxxxxxx
api 'com.bokecc.doc:docsdk:4.7.0'
注意事项
对外api改动(直播和回放模块): docLoadCompleteFailedWithIndex(int index) 修改部分状态值含义,所有状态值及含义如下:
index 状态值 | 状态定义 | 操作 |
---|---|---|
0 | 文档组件加载完成 | 无 |
3 | 文档组件加载失败(SDK内部已做重试逻辑,但仍失败需要退出重新进入房间) | 退出重进 |
1 | 动态文档翻页成功 | 无 |
5 | 动态文档翻页超时(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
2 | 非动画文档(白板 图片)文档翻页完成 | 无 |
4 | 静态文档翻页失败(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
6 | 画板翻页失败(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
9 | 文档翻页超时 | 无 |
10 | 静态文档翻页超时(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
11 | 动态文档动画执行成功 | 无 |
12 | 动态文档动画执行超时(内部重试) | 无 |
13 | 动态文档加载成功 | 无 |
14 | 动态文档加载失败(展示文档刷新按钮,用户可手动触发文档重载) | 手动重试 |
对外API新增:
模块 | 调整 | API | 描述 | 备注 |
---|---|---|---|---|
直播 | 新增 | reloadPageChange(BaseCallback | 刷新当前页文档 | callback回调onSuccess为调用成功,回调onError为调用失败 |
回放 | 新增 | reloadPageChange(BaseCallback | 刷新当前页文档 | callback回调onSuccess为调用成功,回调onError为调用失败 |
回放 | 新增 | IDocManagerListener.onPageInfoList(ArrayList | 回调当前回放翻页信息 | 4.7.0之前版本DWLiveReplayListener的onPageInfoList方法不再回调,使用此方法替代 |
回放 | 新增 | IDocManagerListener.onMetaDataLoadSuccess | 回调回放元数据下载完成 | 回放翻页、画笔等数据下载完成回调 |
回放 | 废弃 | 回放翻页信息 | 使用docsdk的回放文档功能时,此方法废弃不再使用 |
更新日志
远端集成
xxxxxxxxxx
//文档sdk内部引用直播sdk,单独引入:api 'com.bokecc:dwlivesdk:4.6.1'
api 'com.bokecc.doc:docsdk:4.6.1'
注意事项
xxxxxxxxxx
1. CCBasePlayer.CCPlayerStatus中去除了RenderingStart状态
2. DWLiveEngine的init方法由于权限合规修改,去除了非主进程调用检查,需要确保此方法调用是在主进程
3. 全局混淆增加:
-keep class com.tencent.tbs.** {
*;
}
更新日志
远端集成
xxxxxxxxxx
//文档sdk内部引用直播sdk,单独引入:api 'com.bokecc:dwlivesdk:4.6.0'
api 'com.bokecc.doc:docsdk:4.6.0'
因类路径变化,module中ELog等类报错,请重新导入类
更新日志
远端集成
xxxxxxxxxx
api 'com.bokecc:dwlivesdk:4.5.0'
更新日志
远端集成
xxxxxxxxxx
api 'com.bokecc:dwlivesdk:4.3.0'
更新日志
远端集成
xxxxxxxxxx
api 'com.bokecc:dwlivesdk:4.2.0'
api变动
更新日志
远端集成
xxxxxxxxxx
api 'com.bokecc:dwlivesdk:4.1.0'
直播DWLive新增API
xxxxxxxxxx
//获取互动组件配置信息
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;
}
直播连麦RTCConnectListener中新增回调
xxxxxxxxxx
/**
* 推流网络状态
* @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;
}
在线回放DWLiveReplayListener新增回调
xxxxxxxxxx
/**
* 回调回放试看时长
* @param trialDuration 单位秒
*/
public void onTrialDuration(int trialDuration);
修复直播普通模式(非连麦状态)、在线回放、离线回放视频宽高回调问题
xxxxxxxxxx
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) {
}
...
}
更新日志
远端集成
xxxxxxxxxx
api 'com.bokecc:dwlivesdk:4.0.0'
4.0.0开始不再提供本地jar包支持
新增方法
xxxxxxxxxx
// 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
修改方法
xxxxxxxxxx
// 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
废弃或删除方法
xxxxxxxxxx
// 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
在线回放功能升级指南
播放器修改
4.0.0版本之前,需要在布局里面声明 com.bokecc.livemodule.view.ResizeTextureView
,并在代码层创建 DWReplayPlayer
对象。从4.0.0版本开始,您不需要再声明 DWReplayPlayer
播放器对象,在 DWLiveReplayListener
中,通过 public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView)
方法,返回播放器视图,您需要创建容器,并将返回的 hdMediaView
视图添加进容器即可,并在适当的回调方法中操作移除 hdMediaView
。
播放器事件监听修改
xxxxxxxxxx
//在DWLiveReplayListener中新增重写以下回调
public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) {
//返回的 hdMediaView 为直播播放器布局
}
//播放器注册监听修改
DWReplayPlayer.setPlayerEventListener(PlayerEvent event);
-->DWLiveReplay.getInstance().setReplayPlayerListener(ReplayPlayerListener replayPlayerListener);
开始播放修改
xxxxxxxxxx
DWLiveCoreHandler.getInstance().start();
-->DWLiveCoreHandler.getInstance().start(context);
防录屏修改
xxxxxxxxxx
DWReplayPlayer.setAntiRecordScreen(activity);
--> DWLiveReplay.getInstance().setAntiRecordScreen(activity);
其他修改
所有播放器相关的操作将放到DWLiveReplay中进行调用
离线回放升级指南
4.0.0版本之前,需要在布局里面声明 com.bokecc.livemodule.view.ResizeTextureView
,并在代码层创建 DWReplayPlayer
对象。从4.0.0版本开始,您不需要再声明 DWReplayPlayer
播放器对象,在 DWLiveLocalReplayListener
中,通过 public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView)
方法,返回播放器视图,您需要创建容器,并将返回的 hdMediaView
视图添加进容器即可,并在适当的回调方法中操作移除 hdMediaView
。
播放器事件监听修改
xxxxxxxxxx
//在DWLiveLocalReplayListener中新增重写以下回调
public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) {
//返回的 hdMediaView 为直播播放器布局
}
//播放器注册监听修改
DWReplayPlayer.setPlayerEventListener(PlayerEvent event);
-->DWLiveLocalReplay.getInstance().setReplayPlayerListener(ReplayPlayerListener replayPlayerListener);
开始播放修改
xxxxxxxxxx
DWLiveCoreHandler.getInstance().start();
-->DWLiveCoreHandler.getInstance().start(context);
防录屏修改
xxxxxxxxxx
DWReplayPlayer.setAntiRecordScreen(activity);
--> DWLiveReplay.getInstance().setAntiRecordScreen(activity);
其他修改
所有播放器相关的操作将放到DWLiveReplay中进行调用 另外播放完成不需要调用stop
更新日志
远端集成
xxxxxxxxxx
api 'com.bokecc:dwlivesdk:3.18.0'
本地集成
xxxxxxxxxx
删除旧版本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
新增方法
xxxxxxxxxx
// 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
修改方法
xxxxxxxxxx
// 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
废弃或删除方法
xxxxxxxxxx
// 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
直播功能升级指南
播放器修改
3.18.0版本之前,需要在布局里面声明 com.bokecc.livemodule.view.ResizeTextureView
,并在代码层创建 DWLivePlayer
对象。从3.18.0版本开始,您不需要再声明 DWLivePlayer
播放器对象,在 DWLiveListener
中,通过 public void onLiveStreamViewPrepared(HDMediaView hdMediaView)
方法,返回播放器视图,您需要创建容器,并将返回的 hdMediaView
视图添加进容器即可,并在适当的回调方法中操作移除 hdMediaView
。
播放器事件监听修改
xxxxxxxxxx
//在DWLiveListener中新增重写以下回调
public void onLiveStreamViewPrepared(HDMediaView hdMediaView) {
//返回的 hdMediaView 为直播播放器布局
}
//播放器注册监听修改
DWLivePlayer.setPlayerEventListener(PlayerEvent event);
-->DWLive.getInstance().setPublishStreamListener(LiveRtmpPlayerCallBack event);
开始播放修改
xxxxxxxxxx
DWLiveCoreHandler.getInstance().start();
-->DWLiveCoreHandler.getInstance().start(mContext);
防录屏修改
xxxxxxxxxx
DWLivePlayer.setAntiRecordScreen(activity);
-->DWLive.getInstance().setAntiRecordScreen(activity);
其他修改
xxxxxxxxxx
//不再需要在onStreamEnd(final boolean isNormal)回调中调用以下代码段
// 暂停播放
DWLive.getInstance().pause();
连麦功能升级指南
3.18.0版本加入了多人连麦的功能,并将单人连麦的API使用与多人连麦进行统一。如果您希望新接入多人连麦功能,在直播间管理后台开启多人连麦的功能后,您可以通过
连麦接入文档
进行多人连麦功能的对接。如果您已经使用了单人连麦的功能,也需要根据文档进行单人连麦功能的修改
无连麦功能接入或者依赖冲突解决
如果您不使用sdk提供的多人连麦功能突,建议排除连麦库。如果您在使用sdk的过程中出现依赖冲突问题,也可以根据下面代码所示排除方案进行冲突依赖的排除。
xxxxxxxxxx
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'
}