文档中心 移动直播 SDK 小直播 App 本地快速跑通“小直播”

本地快速跑通“小直播”

最近更新时间:2019-12-12 16:05:37

“小直播”是什么?

小直播 App 是一套开源的完整的在线直播解决方案,它基于云直播服务(LVB)、即时通信(IM)和对象存储服务(COS)构建,并使用云服务器(CVM)提供简单的后台服务,可以实现登录、注册、开播、房间列表、连麦互动、文字互动和弹幕消息等功能。

快速搭建自己的“小直播”

按照实现功能计算,搭建一个自己的“小直播”预估实现耗时如下:

功能 预计实现耗时
1. 实现推流、播放和聊天室等基本功能 30分钟
2. 增加视频连麦功能 5分钟
3. 定制自己想要的 UI 风格 5分钟
4. 增加登录注册和精彩回放功能 1小时

1. 实现推流、播放和聊天室等基本功能

小直播的基础功能包括一个简单的房间列表,主播端的推流功能,观众端的播放功能和文字互动聊天室(包括弹幕消息),其界面效果如下图所示:

要实现下图中的这些效果,只需要执行如下的几个步骤:

step 1.1 开通视频直播服务

登录腾讯云官网,进入 云直播管理控制台,如果服务还没有开通,单击【申请开通】。

step 1.2 绑定直播域名

按照相关政策要求,您需要添加自有的已备案域名才能使用腾讯云的 CDN 播放功能,请参见 域名管理CNAME 配置 进行配置。

step 1.3 获取 SDK 的测试 License

“小直播”是基于腾讯云 LiteAVSDK 实现推流和播放功能的,但您需要提前绑定 License 才能使用其提供的推流功能,您可以先按照如下步骤获取“小直播”所需要的测试 License:

  1. 云直播管理控制台 中单击进入 移动直播 License 页面。
  2. 填写【Package Name】为 Android 的包名,【Bundle Id】为 iOS 的 Bundle Id。
  3. 单击【免费创建】,创建成功后,页面会显示生成的 License 信息。请记录 Key 和 LicenseUrl,便于在 SDK 初始化时使用。

step 1.4 在应用管理中添加一个新的应用

“小直播”基于腾讯云 TIMSDK 实现了文字聊天室和弹幕消息等互动功能,需要您先创建一个 IM 应用才能使用其提供的聊天室功能,您可以先按照如下步骤获取“小直播”所需要的 SDKAppID 和 SecretKey 两个重要信息:

  1. 进入【云直播控制台】>【直播SDK】>【应用管理】,单击【创建应用】,待应用创建完成后,记录其 SDKAppID 信息。
  2. 单击目标应用的 SDKAppID,进入应用详情页面。
  3. 选择【应用管理】页签,单击【编辑】,输入一个管理员名称(例如“admin”),单击【添加】按钮,之后再单击【确定】按钮。
  4. 单击【查看密钥】,复制保存密钥信息 SecretKey。

step 1.5 下载“小直播”的官方源代码

小直播 App 的源码位于 Github/Github 仓库中,可以在Android/XiaoZhiBoiOS/XiaoZhiBo分别获取到 Android 和 iOS 的源码。

ZIP 包 Github Gitee
DOWNLOAD Github Gitee

step 1.6 替换“小直播” 中的 License 配置

我们在 step 1.3 中拿到的 LiteAVSDK 的测试版 License 在这一步可以发挥作用了,参照如下的说明替换源代码中的两行字符串(License URL 和 Key) 即可:

  • iOS 版替换方案
    打开iOS/XiaoZhiBo/XiaoZhiBoApp/Classes/App/目录下的TCGlobalConfig.h文件,将文件里的LICENCE_URLLICENCE_KEY分别替换为 step 1.3:获取 SDK 的测试 License 中记录的 License URL 和 Key。

  • Android 版替换方案
    打开Android/XiaoZhiBo/app/src/main/java/com/tencent/qcloud/xiaozhibo目录下的TCGlobalConfig.java文件,将文件里的LICENCE_URLLICENCE_KEY分别替换为 step 1.3:获取 SDK 的测试 License 中记录的 License URL 和 Key。

step 1.7 替换“小直播” 中的 TIM 相关配置

我们在 step 1.4 中拿到的 SDKAppID 和 SecretKey 在这一步可以发挥作用了,参照如下说明替换源代码中的两行字符串(SDKAppID 和 SecretKey)即可:

注意:

直接将 SecretKey 写在客户端源码中的做法是不安全的,本文档中的步骤仅仅是帮您快速运行起“小直播”源代码。如果真正要把这款 App 上线,建议您参考文档 服务端计算 UserSig 签名 替换源码中的GenerateTestUserSig模块。

替换完终端配置后编译运行,您即可拥有一个属于自己的“小直播”,它包含的功能有主播推流、观众观看,弹幕消息、文字聊天室等功能,我们还配套提供了一个简单的直播间列表。

如果您还有更多需求,请接着往下看。

2. 增加视频连麦功能

视频连麦界面效果如下图所示:

“小直播”的源码中已经默认实现了视频连麦功能,要将其打开非常简单,您只需要如下两步:

step 2.1 购买连麦套餐包

由于连麦功能使用了比较昂贵的 BGP 专用线路,所以是按照通话时长进行收费的。单击 购买连麦套餐包,即可以购买“连麦互动功能”套餐包。最初级的体验包包含 3000 分钟的连麦时长,只需要 9.8 元。

注意:

更多价格及购买相关内容请参见 价格总览

step 2.2 打开终端源代码中的连麦开关

  • iOS 版设置方案
    打开iOS/XiaoZhiBo/XiaoZhiBoApp/Classes/App/目录下的TCGlobalConfig.h文件,将文件里的kEnableLinkMic改为YES

  • Android 版设置方案
    打开Android/XiaoZhiBo/app/src/main/java/com/tencent/qcloud/xiaozhibo目录下的TCGlobalConfig.java文件,将文件里的ENABLE_LINKMIC改为true

3. 定制自己想要的 UI 风格

“小直播”源码中默认的配色和图标可能不符合您的要求,房间列表中默认的主播信息也比较少(只有主播名称和地理位置等等),您可以按照如下步骤对其进行修改:

step 3.1 修改 App 的主色调

  • iOS 版设置方案
    打开iOS/XiaoZhiBo/XiaoZhiBoApp/Classes/App/目录下的TCGlobalConfig.h文件,将文件里的kMainColor改为您希望使用的颜色。

  • Android 版设置方案
    打开Android/XiaoZhiBo/app/src/main/java/com/tencent/qcloud/xiaozhibo目录下的TCGlobalConfig.java文件,将文件里的MAIN_COLOR改为您希望使用的颜色。

step 3.2 更换 App 中的图标

  • iOS 版设置方案
    iOS 的图标资源放在iOS/XiaoZhiBo/XiaoZhiBoApp/Images.xcassetsiOS/XiaoZhiBo/XiaoZhiBoApp/Assets.xcassets下,您可以根据需要选择修改。

  • Android 版设置方案
    Android 的图标资源放在Android/XiaoZhiBo/app/src/main/res目录下,您可以根据需要选择修改。

step 3.3 增加房间列表中的信息

“小直播”使用了一个叫做MLVBLiveRoom的 class 来实现房间列表的功能, 其中的createRoom函数的第二个参数为一个字符串类型的roomInfo,主播端可以定制这个字符串(例如通过 JSON 格式组装出自己想要的数据内容),观众端会在getRoomList时拿到这个字符串。

您可以搜索“小直播”源码, 找到源代码中对此函数的调用位置,通过修改这里的代码来加入自己期望的定制逻辑。

- (void)startRtmp{
    NSError *parseError = nil;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:@{@"title":_liveInfo.title,
                                                                 @"frontcover":_liveInfo.userinfo.frontcover,
                                                                 @"location":_liveInfo.userinfo.location
                                                                 } options:NSJSONWritingPrettyPrinted error:&parseError];
    NSString *roomInfo = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    __weak typeof(self) weakSelf = self;
    [self.liveRoom createRoom:@"" roomInfo:roomInfo completion:^(int errCode, NSString *errMsg) {
        NSLog(@"createRoom: errCode[%d] errMsg[%@]", errCode, errMsg);
    //...

4. 增加登录注册和精彩回放功能

完成前三步之后,“小直播”的基础功能就已经可以运行了,但是此时的运行的“小直播”只依托于腾讯云的基础部分,并不具备登录、注册以及精彩回放功能。

说明:

精彩回放是指您可以把主播的整个直播过程录制下来,然后作为点播视频用于回看。在 App 上线的初期阶段,由于主播数量比较少,所以在直播列表中加入录制回看,能够在一定程度上丰富直播内容,并且起到内容沉淀的作用。

精彩回放功能依赖腾讯云的点播(VOD)服务,且点播服务仅提供了供服务端调用的 REST API 接口,所以为了实现回放的能力,您需要搭建一台简单的列表服务器来接收来自腾讯云的录制回调。

同时,我们在 step 1.7 中提到了客户端代码中直接写死 SecretKey 的安全隐患,因此我们也可以把 服务端计算 UserSig 签名 的逻辑做到这台列表服务器上,从而可以省去搭建多个服务器的麻烦。

说明:

更多具体操作,请参见 搭建自己的“小直播”后台