RTC SDK C++版开发指南

V3.0

1、修订记录

*修订日期**描述**作者**版本号*
2019.6.5初始文档刘柱3.0.0
2021.1.15 刘柱3.1.0
    

2、概述

RTC SDK提供人与人实时沟通协作过程中需要用到的所有基本能力,涵盖了网络会议系统、IM即时通讯系统及直播系统三大类终端产品音视频通讯的主要功能。

RTC SDK由业界资深工程师精心打造,稳定可靠,第三方团队拿来就能用,不必自己去造“轮子”,从而降低了第三方团队的技术风险,减少了项目的开发投入,尤其是能大幅缩短第三方团队开发具有多方音视频+数据协作能力的App/Web应用的时间。

RTC SDK可用于几乎所有行业,很多业务场景中需要用到人与人实时沟通与协作的能力,而类似QQ,微信或会议系统这种通用沟通工具又不能直接使用或不能满足功能,这种情况下,RTC SDK就是您最好的选择。市场调研表明,RTC SDK在医疗、教育、金融、能源、交通等各个领域,都有巨大的市场需求。

2.1、简介

RTC SDK 为移动、桌面和互联网应用提供一个完善的音视频及数据互动开发框架,屏蔽掉互动系统的复杂细节,对外提供较为简洁的 API 接口,方便第三方应用快速集成互动功能。

RTC SDK Android版提供如下功能:

2.2、面向读者

本指南是提供给具有一定的 C++编程经验和了解面向对象概念的产品经理及程序员使用,Open-AVD SDK 已很好的封装了音视频相关的底层技术细节,因而读者不需要具备音视频开发方面的经验。

2.3、获取SDK Demo

公司的github网址(https://github.com/3tee)上会提供各类基于RTC SDK的实例 Demo,包括基本音视频能力Demo。

2.4、技术支持

您在使用本SDK的过程中,遇到任何困难,请与我们联系,我们将热忱为你提供帮助。你可以通过如下方式与我们取得联系。

Ø 技术支持工程师: 186XXXXXXXX

3 编写说明

本指南编写目的是为了帮助使用 AVD SDK 的用户快速搭建 SDK 的开发环境、熟悉开发流程、掌握 SDK 开发功能接口而编写的。 本指南基于 Visual Studio,导入 baseVideo Demo 进行最简单的音视频能力进行编写,如果需要更多的功能,请参阅 SDK API 接口开发手册。

4 环境准备

4.1 工程准备

4.1.1 开发工具 Visual Studio

本指南默认的开发工具为 Visual Studio 2017 ,它是微软推出的一款支持 C++的开发 IDE,运行以及修改 SDK Demo 非常方便。安装时选择插件如下图 4-1。

4-1

4.1.2 SDK Demo 工程导入

2.3 中下载的 SDK Demo,通过下面截图导入:

image-20240319143258547

image-20240319143348101

4.1.3 SDK Demo 工程运行

SDK Demo 导入工程后,于下图 4-4 处,将环境设置为 Release,再点击本地windows 调试器,即可很方便运行,截图如下:

image-20240319143456525

4.2 非工程环境运行

5 音视频基本功能开发流程

本开发流程只涉及到音视频的基本功能,以 baseVideo Demo 的能力加以说明,关于其它的功能,如桌面共享、多摄像头的支持,可以参阅 SDK API 接口开发手册或咨询我们的技术支持工程师。

5.1 获取授权信息

针对正式客户及测试客户,公司会提供一对有效的 Access Key 和Secret Key,这对密钥可以产生访问令牌(24 小时有效),用于生成会议房间号,及加会房间等操作。目前 SDK Demo 提供的测试的授权信息及服务器地址如下,公司会不定期的更新,有问题请咨询。 服务器地址,依据当前 web 服务协议(http,https)指定对应的端口,默认是https

通过调用 initSdkWithToken(),可以产生访问令牌,参考代码如下:

代码 5-2 产生访问令牌

5.2 引擎初始化

5.3 获取房间

5.4 音视频

默认已打开音视频。

5.5 房间回调事件

5.6 用户回调事件

5.7 订阅/取消订阅视频

5.8 音视频渲染

6 附录

6.1 名词解释

名词解释备注
room房间对象,是实时沟通功能的一个管理单元,房间中会有多个沟通参与者即用户,房间有各种沟通功能,如文字聊天、语音视频等,沟通是基于房间的。不同房间沟通是隔离的 
user用户对象,每个加入到房间的客户端作为一个房间用户,用户将会根据权限和设备情况执行房间中各种沟通功能。用户Id:唯一标示一个房间用户的Id,由应用层来设置。 

7 错误码

*错误码**描述**出现原因**处理方法**备注*
1000基本错误一些基本的无法细分错误提供sdk日志排查 
1001参数错误参数是否填错检查传参 
1002没有初始化没有初始化引擎检查是否初始化 
1003已经初始化sdk内部逻辑通知对应用层无影响
1004未实现该方法未实现反馈客户端开发排查 
1005空指针代码逻辑反馈客户端开发排查 
1006未知异常代码逻辑反馈客户端开发排查 
1007内存越界代码逻辑反馈客户端开发排查 
1008非法参数代码逻辑反馈客户端开发排查 
1009操作无效代码逻辑反馈客户端开发排查 
     
1011对象没找到代码逻辑反馈客户端开发排查 
     
1014超时可能网络异常,或者服务器访问不了先检查网络或端口是否有问题 
1015对象错误状态代码逻辑反馈客户端开发排查 
1016网络错误1在媒体通道还未连接上时去调用发布视频导致错误2或者初始化引擎报错1等媒体通道连接上后再做音视频的操作2检查是否认证失败 
1017没有token未用
1018图像转换失败主要是导入视频时报错检测导入数据是否有问题 
1019缓存不够使用C接口返回错误c++到c转换数据时长度不够,反馈c++开发 
1020设备被占用比如摄像头已经被其他应用正在使用,当前sdk无法使用。先检查是哪个应用正常使用摄像头,先关闭掉后sdk再使用 
1021操作以及完成sdk内部通知,不影响应用层
     
1025函数未认证服务端验证是否有使用权限找客户端排查 
1026 未用
1027mcu服务器连接失败由于媒体服务未连上产生的发布视频错误检查下媒体链接是否有问题 
1028视频不支持的分辨率   
1029房间已经关闭未用
1030媒体流连接超时媒体服务连接超时检查下媒体链接是否有问题 
1031集群模式下获取mcu失败初始化引擎返回的错误  
1032房间信令连接失败连接服务端的信令通道失败检查自己网络或者服务器是否可连 
1033房间数据连接失败未用
1034等待数据抓图时,数据还没有重复调用即可 
     
     
     
*错误码**描述**出现原因**处理方法**备注*
401初始化引擎时未认证认证的token或者key有问题检查是否token或key使用错误,如果无误则需要找服务端排查 
402客户端重复加入房间内部逻辑,不会返回到应用层不影响应用层
     
404房间号不存在房间号在服务器是不存在的客户端先确认房间号,如果房间号正确,需要服务端排查 
405license 不够用户数超过最大license 个数找我们技术支持申请license 
406 ~422   未用到,可以不用关心
     
434  未出现过,可以不用关心
445主持人不在房间主要使用token初始化引擎的用户可以让主持人先加入房间或者修改后台设置 
     
503~508  未出现过,可以不用关心
     
601  未出现过,可以不用关心
602  未出现过,可以不用关心
     
612该mcu服务器没有找到指定的房间服务端的配置或者逻辑问题需要服务端排查 
613  未出现过,可以不用关心
     
700  未出现过,可以不用关心
701  未出现过,可以不用关心
     
800  未用到,可以不用关心
801  未用到,可以不用关心
802发布视频或音频时重复的设备id没有出现过如果出现反馈日志,需要检查sdk逻辑 
803房间错误的token没有出现过如果出现,需要sdk和服务端排查下 
804使用相同id加入房间,已经在房间的那个相同用户id会被踢出房间。多个用户使用重复id的,则会被服务器踢出重复的。保证每个加入房间用户id唯一 
805 暂未用
806 暂未用
807sdk无法链接上服务端的媒体通道,而被服务器踢出房间可能网络或者服务端端口配置问题,sdk无法连上服务端的媒体通道检查网络或者检查服务器端口 
808被其他用户踢出房间某个用户通过sdk接口把自己踢出房间了 
809    
810房间被关闭某个用户通过sdk接口关闭了房间 
811服务器关闭可能服务器正在重启等服务器重启成功后重连 
812自己收到其他用户连接超时后被踢出房间的通知某个用户可能网络异常导致无法链接服务器而被服务器踢出房间了忽略
     
815房间被关闭了可能是其他用户通过rest接口关闭了房间这个是正常逻辑,不影响应用层