腾讯随心播配置及开发

 随心播 (Andorid)

   DEMO 快速入门


版本号

1.0

WillGuo

 

1.1增加角色和权限

WillGuo

 

1.2 完善流程图

WillGuo

随心播导读 

目的 2

框架介绍 2

主线流程 2

工程导入配置 4

二次开发 4

角色和权限.................................................................................................................................5

 一、 框架介绍


应用框架随心播就是利用腾讯云提供的云服务(主要是云通信和音视频)构建的一个视频直播类应用。DEMO实现的是手机上的软件层。包括支持云通信IMSDK,支持音视频AVSDK,文件上传的SDK(可选),帐号注册服务TLSSDKCrashLog上报SDK(可选)。随心播代码的核心整合IMSDK AVSDK 进行视频直播。IMSDK负责整个消息系统,AVSDK负责音视频数据。用户服务器主要任务是分配房间ID,维护直播列表。个人资料信息可以通过用户服务器维护。也可以托管给云通信(IMSDK)后台。随心播目前做法的是后者。用户服务器由客户方维护。腾讯提供开源代码参考。

代码框架


Android代码采用主流MVP架构

 Views所有界面类,包括登录、主界面、直播界面以及一些自定义控件。

Presenters所有界面的逻辑操作,包括初始化逻辑,进出房间逻辑,直播交互逻辑,登录逻辑等。以及逻辑操作的回调接口,这些接口会被需要对应功能的界面实现。

Model数据类包括当前房间信息类,个人状态类,文本消息类,AV成员类。

AVControllers里面保留了AVSDK一些操作类包括显示控制类,AVSDK初始化类 。

 典型MVP操作流程示例 View有某些功能,持有对应功能的Presenter类,View触发功能,调用对应的Persenter方法,Presenter将处理结果通过ViewInface接口类回调给对应的View. View根据数据进行界面显示。 View类只做界面相关事情,数据逻辑都丢给Presenter处理。

直播房间 是由IMSDK的聊天室AVChatRoomAVSDK的房间AVROOM共同组成的。两者生命周期一致,创建房间就是创建一个聊天室同时创建一个AVROOM。聊天室负责直播过程中消息,包括群消息,C2C消息。文本消息,点赞,以及一些互动邀请和应答信令都是通过IMSDK的消息来实现的。AVROOM负责直播过程中音视频数据。利用成员状态的回调来请求成员音视频,虽然它也有成员上下线通知(房间成员过大不准),但一般用IMSDK消息来维护群成员。IMSDK消息:成员进出群通知,互动邀请与应答,点赞,文本消息,群解散消息。

AVSDK回调 :直播中成员音视频状态变化

 普通直播 (即两种角色,主播,观众。一个主播直播内容,多个观众观看内容)

两种角色交互通过发送文本消息和点赞。文本消息是群消息。点赞是C2C消息

 互动直播 即三种角色,主播,互动观众,普通观众。普通观众最多请求4路下行。或者3路下行,一路上行(主播侧)。互动直播的邀请与应答都是通过IMSDKC2C消息。而获取直播中的成员音视频数据以AVSDK的回调为准。一个邀请的基本流程是A通过IMSDK的发起邀请。成员B接收邀请应答一个C2C消息同时开启自己的摄像头。这时AVSDKonEndpointsUpdateInfo回调会通知成员B的状态改变,A直接发起AVSDK视频请求即可获取画面。

 二、 主线流程

1. SDK初始化
主要业务逻辑都在InitBusinessHelper这个类里面。在应用的Application里面调用initAPP()方法。它执行了包括初始化AVSDK,初始化IMSDK,初始化TLSSDK,以及初始化Bugly操作。

 2. 帐号注册和登录


 a) 随心播帐号采用的TLS String帐号托管方式的。TLS也支持其他包括手机微信QQ以及自定义方式等。具体请参考腾讯TLSDEMO

b) 房间号是用户服务器根据ID分配一个固定值(int型,因为AV房间必须是int),IM聊天室Id和AV房间Id目前是一个值,只不过前者是String后者是int。

c) 初始化AVSDK方法(startAVSDK)必须等IM登录完成才行,不能倒置。

 3. 发布一个直播


 a) 直播房间是由聊天室和AVROOM共同构成,创建一个直播就是创建一个聊天室,加入一个AVROOM。AVROOM没有创建的概念。

b) 必须的进入房间之后才能初始化界面(initAvUILayer),初始化完了之后才能打开摄像头(openCameraAndMic)。

c) 主播渲染,无需向AV后台请求自己画面,设置自己ID( setSelfId ),本地渲染(setLocalHasVideo)即可。设置ID和本地渲染也不能逆序。

 4. 加入一个直播


a) 加入聊天室,进入房间

b) 加入房间初始,通过监听OnSemiAutoRecvCameraVideo来判断已经加入房间互动观众,直接渲染互动观众画面的,无需请求,这个步骤是优化进入房间速度的。进入房间后直播过程中如果成员状态变化,通过onEndpointsUpdateInfo需要请求对方画面,再渲染。

c) 如果摄像头变化的是自己,直接本地渲染就可以了,无需请求。

 5. 互动直播流程


 a) 信令请求和应答是通过IMSDK的C2C消息。应答信令消息之后是打开或者关闭自己摄像头。

b) 直播过程中成员音视频状态发送改变会通过onEndpointsUpdateInfo回调传递给所有成员。根据Id去请求对方画面,这种请求是AVSDK的接口不再是C2C消息。请求成功渲染画面。

c) 成员状态变化回调onEndpointsUpdateInfo回调会包括自己,所以无论视频互动成员还是普通成员只需要根据回调里面的ID去请求画面即可同步,保持一致。

 三、 工程导入配置

1. 本工程是Android Studio项目,可以把代码导入到eclipse 但不推荐

2. 请在app/build.gradle 下面配置对应自己的complieSdkVersionbuildToolsVersiontargetSdkVersion 不能高于22


 3. 请注意配置jcenter库 腾讯内部是自己的maven


4. 混淆配置

如果你的项目中使用proguard等工具做了代码混淆,请保留以下选项。

-keep class com.tencent.**{*;}

-dontwarn com.tencent.**

-keep class tencent.**{*;}

-dontwarn tencent.**

-keep class qalsdk.**{*;}

-dontwarn qalsdk.**

 四、 二次开发

因为项目是基于MVP的,功能抽象出来Presenter.而Persenter的回调也是相互独立的,所以基于这些核心功能很容易做扩展。重要的核心类有

负责业务初始化类InitBusinessHelper

进出房间的管理类EnterLiveHelper

房间交互管理类 LiveHelper

用户后台请求类 OKhttpHelper

 AVSDK界面控制类 GLVideoVidew,AVUIControl (其中EnterLiveHelper和LiveHelper 是有对应回调接口 StepInOutView ,LiveView的)

这些功能是和页面完全分离,是即插即用的。方便用户自定义界面逻辑。

关于一些通用控件我们也抽象了一个自定义的控件包。客户可以方便重用


 五、 角色和权限

配置地址 http://console.qcloud.com/ilvb/trafficControl/1400001692  后面改成自己APPID)

配置角色和权限的好处是可以自定义几个模版,根据成员的状态动态的切换配置参数。主播获得最大资源优势,低延时高分辨率。互动直播能力次之低延时低分辨率,普通观众权限最低。

配置三种角色

1. 主播角色 权限全开 低延时 高分辨率


2. 普通成员角色 高延时 只有接受的权限没有发送权限


3. 互动观众角色 低延时 低分辨率


1. 加入房间时 加载角色和权限


2. 上麦升级权利(普通观众角色 》互动直播观众角色)

步骤: 修改权限 >修改角色>打开摄像头


3. 下麦恢复状态(互动直播观众角色 》普通观众角色)

步骤:修改权限>修改角色>关闭摄像头

类似上图

猜你喜欢

转载自blog.csdn.net/ydc0128/article/details/80843672
今日推荐