更新时间: 2021-03-03
融云音视频提供多种音视频通信 SDK,所有 SDK 依赖于融云 IM SDK,分别为 音视频通话(呼叫)、音视频会议(房间)、低延迟直播,可结合自身业务进行选择。
有呼叫场景就用 音视频通话 ,没呼叫场景使用 音视频会议 。
分类 | 音视频通话(呼叫) | 音视频会议(房间) | 低延迟直播 |
---|---|---|---|
SDK | CallKit、CallLib | RTCLib | RTCLib |
场景 | 类似微信音视频通话等必须含有呼叫流程的应用场景 | 适用于在线视频会议、小班课、在线视频面试、远程面签等场景 | 直播社交、大型发布会、语聊房、线上大班课等场景 |
差异 | 音视频通话 SDK 区别于音视频会议 SDK,音视频通话(呼叫)SDK 不需要双方约定房间号,SDK 内部自动处理房间号 | 音视频会议 SDK 区别于音视频通话 SDK,会议 SDK 必须使用相同房间号 后可进行通信 | 低延迟直播 SDK 区别于音视频会议 SDK,存在主播、观众概念,观众默认只能观看不能发言,观众发言可通过连麦方式实现 |
# 音视频会议介绍
音视频会议 SDK 基于房间模型设计,可以实现一对一、多人通话等场景,音视频会议 SDK 区别于音视频通话 SDK,会议 SDK 使用相同房间可进行通信
# 功能特性
连接稳定
: 底层基于 IM 信令通讯,可保障在长时间音视频通话及弱网情况下的保持正常连通,智能 DNS 解析、多链路最优接入策略,为客户提供优质的通信质量保障消息通道
: 支持用户向房间中发送自定义消息,可根据消息指令实现自身业务逻辑处理,使用灵活方便,扩展性强,可满足多种业务场景,如:远端控制、会控管理高质量、低延迟
:- 视频属性:SDK 采集最大支持 1080p 分辨率,30fps 帧率
- 音频属性:音频采样率默认 48kHz,支持单声道
- 抗丢包:音频通话 100% 回声消除,1s 降噪,音频对抗 50% 丢包,视频对抗 30% 丢包
- 低延迟:正常网络下,延迟可达 66ms 内
- 网络自适应,根据当前网络状况自动切换最合适的码率控制、传输策略
多平台互通
: iOS、Android、Web、Mac、Windows、Linux- 备注: Mac、Windows、Linux 基于 Electron (opens new window) 开发实现,暂不提供 C++ 版本的原生 SDK
# SDK分类
SDK | 依赖 | 说明 |
---|---|---|
RTCLib | IMLib | 音视频核心引擎 |
CallLib | RTCLib | 基于 IMLib 和 RTCLib 封装的音视频通信库 |
CallKit | CallLib 、IMKit | 音视频通话界面组件 |
- IMLib: IM 通信能力库,不含 UI,适用于对 UI 有较高订制需求的 IM 开发者
- IMKit: IM 通信组件,包含 UI,适用于快速集成,对 UI 定制需求交少的开发者,IMKit 依赖 IMLib
- RTCLib: 音视频核心引擎,不含 UI、呼叫流程,适用于对 UI 有较高订制需求的音视频开发者,RTCLib 依赖 IMLib
- CallLib: 音视频通话通信库,不含 UI,包含呼叫流程,适用于音视频通话场景,CallLib 依赖 RTCLib、IMLib
- CallKit: 音视频通话界面组件,包含 UI,适用于快速集成音视频通话,对 UI 定制需求交少的开发者,CallKit 依赖 CallLib、IMKit
融云音视频服务通过 RongRTClib 提供音视频通讯能力,支持一对一和多对多的实时音视频通话,支持自定义视频流,修改本端采集的音视频原始数据,修改接收到的音频原始数据,自定义渲染视频视图,纯语音通话和视频通话等功能。详细功能列表如下:
# 主要功能
类别 | 功能 | 描述 |
---|---|---|
房间管理 | 加入房间 | 用户直接发起音视频之前需要加入同一个房间 |
离开房间 | 结束音视频通话之后退出房间,退出后默认关闭音视频功能及订阅信息,清空当前用户房间中所有信息 | |
当前房间信息 | 获取当前房间信息,如当前房间 ID、当前用户、加入房间的其他用户 | |
设置房间属性 | 自定义房间信息,如标识当前房间中用户的身份标识,通过获取房间属性进行相关业务处理 | |
音视频流控制 | 发布音视频流 | 加入房间之后可以把采集的音视频流推送到 MediaServer,并且广播给同一个房间里的用户,其他人收到通知可以选择订阅来接收流 |
取消发布音视频流 | 关闭摄像头、麦克风或结束音视频通话时可取消发布音视频流 | |
视频流预处理 | 视频采集后回调给开发者进行再处理,实现美颜、磨皮、水印等功能 | |
音频流预处理 | 音频采集后回调给开发者进行再处理,实现均衡器、个性化音效等功能 | |
发布自定义视频流 | 发布自定义视频流,如:屏幕共享、本地视频共享功能实现 | |
房间代理协议 | 用户加入回调 | 开发者可以实现监控房间内的人员进出情况 |
监控房间内音视频流的变化 | 在会议控制、远程指导等场景中,实现用户音频流状态变更通知其他参会者 | |
数据流第一个关键帧到达 | 用于当用户加入房间后视频画面的初始图片显示使用 | |
视频预览帧回调 | 在实现视频水印效果时,可通过此功能实现水印效果的预览 | |
设备控制 | 摄像头控制 | 开关或切换设备摄像头; |
关闭/打开麦克风 | 关闭/打开当前使用的麦克风 | |
切换使用外放/听筒 | 切换使用当前设备外放/听筒 |
# 依赖关系
RTC SDK 强依赖 IM SDK,使用 RTC SDK 前必须引入 IM SDK,引入方式可参考 示例 (opens new window),
# 兼容性
# 移动端兼容性
平台 | 系统版本 |
---|---|
iOS | 8.0 及以上系统 |
Android | 4.3 及以上系统 |
# Web兼容性
平台 | Chrome 57+ | Safari 12 | Electron 2.0+ |
---|---|---|---|
Windows 7+ | Yes | N/A | Yes |
macOS | Yes | N/A | Yes |
# 注意事项
- 3.0.0 及之后版本的 RTCLib SDK 与 3.0.0 之前版本的 RTCLib SDK 不能互通。
- 如果您使用移动端 RTCLib 3.0.0 SDK 时必须使用 IMLib 2.9.13 及以上版本进行集成。
- 如果您使用Web端 RTCLib 3.0.0 SDK 时必须使用 IMLib 2.5.0 及以上版本进行集成。
# 同时通话人数说明
为确保终端用户音视频通话质量,同一房间建议最多音视频同时通话人数,如下:
类型 | 人数 |
---|---|
视频通话 | 16 |
音频通话 | 32 |
# 服务开通
使用融云的音视频服务,包括 CallKit、CallLib、RTCLib 需要在融云开发者后台开通音视频服务 (opens new window)