音视频服务开发指南

    概述

    融云提供稳定的实时音视频通讯能力,提供一对一,多对多的音视频通讯功能,支持千人会议模式,可实现会议控制、多方实时互动白板和高清屏幕共享、美颜等功能,满足多方异地实时在线交流需求,适用于各种实时音视频场景,如:社交行业一对一,多对多音视频聊天、在线教育、智慧医疗、远程服务、企业内部团队会议等等。

    新功能特性:

    • 连接稳定性:基于 IM 通讯信令的连接方式,保障了在长时间音视频通话及弱网情况下的连通情况。智能 DNS 解析与多链路最优接入策略,为客户提供优质的通信质量保障。

    • 音视频通道内消息发送功能:支持用户向房间中发送自定义消息,可根据消息指令实现自身业务逻辑处理,使用灵活方便,扩展性强,可满足多种业务场景,如:远端控制、会控管理。

    高质量、低延迟:

    • 视频属性:SDK 采集最大支持 1080p 分辨率,30fps 帧率;

    • 音频属性:音频采样率默认 48kHz;支持单声道;

    • 抗丢包:音频通话 100% 回声消除,1s 降噪,采用先进的抗丢包技术,音频能对抗 70% 丢包,视频对抗高达30%丢包,正常网络下,延迟可达 66ms 内,支持网络自适应技术,根据当前的网络状况选择最好的码率控制和传输策略。

    支持平台:

    • 支持 iOS、Android、Web、Mac、Windows、Linux,并支持平台间互通。

    注:Mac、Windows、Linux 版本可基于 Electron 开发实现,暂不支持 C++ 版本的原生 Mac、Windows、Linux 版本 SDK。

    SDK 架构介绍

    image

    融云音视频 SDK 分为三个:RTCLib、CallLib、CallKit

    RTCLib - 音视频基础能力库:

    RTCLib 是融云底层音视频核心引擎,该层为 CallLib 和 CallKit 提供音视频通话的能力,通过房间号方式进行单人、多人音视频通话。 立即下载

    注:由于底层引擎技术升级,3.0.0 及之后版本的 RTCLib SDK 与 3.0.0 之前版本的 RTCLib SDK 不能互通。

    CallLib - 音视频通话模式能力库:

    基于 IMLib 和 RTCLib 封装的通话模式组件,通过信令控制可以实现类似微信的单人音视频通话和多人音视频通话逻辑。立即下载

    注:由于底层引擎技术升级,2.9.13 及之后版本的 CallLib SDK 与 2.9.13 之前版本的 CallLib SDK 不能互通。

    CallKit - 音视频通话模式 UI 库:

    基于 IMLib、IMKit 以及 CallLib 开发的融云音视频通话界面组件,包含了单人、多人音视频通话的界面的各种场景和功能。您可以通过集成该组件来实现丰富的音视频通话界面,并进行自己的 UI 定制开发。同时我们开源了 CallKit,您可以根据您的需要去使用。集成时需要依赖于 IMKit。下载源码

    注:由于底层引擎技术升级,2.9.13 及之后版本的 CallKit SDK 与 2.9.13 之前版本的 CallKit SDK 不能互通。

    开通方式

    音视频服务为付费服务,申请开通音视频服务,音视频账户充值不能低于 ¥500.00 元(现金)。

    服务计费说明

    赠送规则

    ​ 每应用每月赠送音频和视频共 20,000 分钟,免费分钟数先结算音频部分,不足 20,000 分钟,再结算视频部分(扣除按照分辨率从低到高顺序扣除),当月未使用完毕的免费分钟数不累计到下月。

    • 举例 1 :整月音频和视频通话时长超过 20,000 分钟

    ​ 音频通话 15,000 分钟,视频通话 6,000 (480p 2000分钟 720p 4000分钟 ) 分钟,当月使用总计:21,000 分钟 ,超出免费分钟数,只结算 1000 分钟(720p)内视频费用。

    • 举例 2:整月音频和视频通话时长不足 20,000 分钟

    ​ 音频通话 14,000 分钟,视频通话 2,000 分钟,当月使用总计:16,000 未超过免费赠送分钟数,则剩余未使用的免费分钟数不累计到下月。

    计费方式

    通讯类型 规格 单价
    音频通话 标准语音规格 6 元/千分种
    标清视频 分辨率 ≤ 640×480 16 元/千分钟
    高清视频 640 × 480 <分辨率 ≤1280 × 720 26 元/千分钟
    超高清视频 1280×720<分辨率 66 元/千分钟
    • 媒体类型(语音、视频)、规格( 480p 及以下、720p 及以下等)由发布端的配置决定。
    • 订阅音视频数据,只以视频数据收费,该路流音频不再重复计费。
    • 视频通话按照每个终端订阅的视频流累计时长计算,订阅多条视频流时,每条流独立计算时长。
    • 语音通话按照终端订阅时长计算,该终端的订阅时长计算从第一个订阅开始到最后一个订阅结束,同时订阅多个终端时不重复计算。
    • 单次会话结束,核算每人通话累计时长。
    • 会话按天进行结算,跨天,跨月的会话,在晚上 00:00:00 进行系统自动结算。
    • 单次通话不足 1 分钟,按 1 分钟核算。
    • 计费周期:按月计费。

    计费模式

    计费分钟数按照全部用户累计使用音视频服务的时长进行计算,双方或者多方同时进行通话时,分别计算每一方实际进行通话的时长。

    计费规则

    • 音频费用计算:

      总费用为每个人的费用相加。每个人的费用 = 音频价格 X 对应的通话时长

    • 音频通话示例说明:

      如 A、B、C 三人进行音频通话 10 分钟,其中 A 通话 10 分钟,B、C 分别通话 8 分钟和 6 分钟。

      A 费用 = 音频价格 × A 的通话时长 ,0.006 元/分钟 × 10 分钟 = 0.06 元

      B 费用 = 音频价格 × B 的通话时长 ,0.006 元 /分钟 × 8 分钟 = 0.048元

      C 费用 = 音频价格 × C 的通话时长, 0.006元/分钟 × 6 分钟 = 0.036元

      此次会话总费用 = A 的费用 + B 的费用 + C 的费用 , 0. 06 元 + 0.048 元 + 0.036 元 = 0.14 元

    • 视频费用计算:

      总费用为每个人的费用相加。每个人的费用 = 累加(各路下行对应上行分辨率的单价 × 通话时长

      1、纯视频通话时,不合算音频费用。(参看示例一)

      2、音频和视频混合时,多条音频,合并计算,只算一条音频。(参看示例二)

      3、音视转换时,按照时段划分,采用纯音频,纯视频、音视频混合规则计算。(参看示例三)​

    • 视频通话示例说明:

      1、示例一:纯(全)视频 - 费用计算

      如 A、B、C 三人进行视频通话 10 分钟,A 发布规格为视频 640 × 480,B发布的规格为视频 1280 × 720,C 发布的规格为视频 480 × 360,其中 A 订阅了 B C ,B 订阅了 A C,C 订阅了 A B。

      A 订阅了 B C

      A 的实际花费 = B(发布视频规格 × 通话时长) + C(发布的视频规格 × 通话时长),0.026 元/分钟× 10 分钟 + 0.016 元/分钟 × 10 分钟 = 0.42 元 。

      B 订阅了 A C

      B 的实际花费 = A(发布视频规格 × 通话时长)+ C(发布的视频规格 × 通话时长), 0.016 元/分钟 × 10 分钟+ 0.016 元/分钟 × 10 分钟 = 0.32 元。

      C 订阅了 A B

      C 的实际花费 =A(发布视频规格 × 通话时长) + B(发布的视频规格 × 通话时长),0.016 元/分钟× 10 分钟 + 0.026 元/分钟 × 10 分钟 = 0.42 元

      此次通话总费用 = A 费用 + B 费用 + C 费用,0.42 元+ 0.32 元 + 0.42 元 = 1.16 元

      2、示例二:音视频混合-费用计算:

      A B C D 四人, A B两人视频通话,C D 音频通话,会话总计 10 分钟。其中 A 发布的规格为视频 1280×720

      B 发布的规格为视频 480×360 。其中 A 订阅了 B C D , B 订阅了 A C D,C 订阅了 A B D,D 订阅了A B C

      A 订阅了 B C D

      A 的实际花费 = B(发布视频规格 × 通话时长)+ (一路的音频单价 × 通话时长),0.016 元/分钟 × 10 分钟 + 0.006 元/分钟 × 10 分钟 = 0.22 元

      B 订阅了 A C D

      B 的实际花费 = A(发布视频规格 × 通话时长)+ (一路的音频单价 × 通话时长),0.026 元/分钟 × 10分钟 + 0.006 元/分钟 × 10 分钟 = 0.32 元

      C 订阅了 A B D

      C 的实际花费 = A(发布视频规格 × 通话时长)+ B(发布视频规格 × 通话时长)+ D (音频单价 × 通话时长),0.026 元/分钟 × 10 分钟 + 0.016 元/分钟 × 10 分钟 + 0.006 元/分钟 × 10 分钟 = 0.48 元

      D 订阅了 A B C

      D 的实际花费 = A(发布视频规格 × 通话时长)+ B(发布视频规格 × 通话时长)+ C (音频单价 × 通话时长),0.026 元/分钟 × 10 分钟 + 0.016 元/分钟 × 10 分钟 + 0.006 元/分钟 × 10 分钟 = 0.48 元

      此次通话总费用:A 费用 + B 费用 + C 费用 + D 费用 ,0.22 元 + 0.32 元 + 0.48 元 + 0.48 元 =1.5元

      3、示例三:音视切换-费用计算:

      如 A 、B 进行一对一视频通话,会话时长总计:10分钟,A发布的规格为视频1280 × 720 ,B发布的规格为视频 640 × 480,B在通话 4 分钟后视频切换为音频。

      A 的实际花费 = B(发布的视频规格 × 视频通话时长)+ B (音频单价 × 音频通话时长),0.016 元/分钟 × 4 分钟 + 0.006 元/分钟 × 6 分钟 =0.10 元

      B 的实际花费 = A(发布的视频规格 × 视频通话时长),0.026 元/分钟 × 10 分钟 = 0.26 元

      此次通话总费用:A 费用 + B 费用 ,0.10 元 + 0.26 元 = 0.36 元

    集成方式介绍

    基于 RongCallKit 开发

    基于 RongCallKit 开发需要引入 RongIMLib、RongIMKit 和 RongRTCLib 三个类库,详细请参考:

    基于 RongCallLib 开发

    基于 RongCallLib 开发需要引入 RongIMLib 和 RongRTCLib 两个类库,详细请参考:

    基于 RongRTCLib 开发

    基于 RongRTCLib 开发只需要引入 RongRTCLib、RongIMLib,详细请参考:

    主要功能

    RongRTClib 音视频核心引擎,基础功能如下:

    类别 功能 描述
    房间管理 加入房间 用户直接发起音视频之前需要加入同一个房间
    离开房间 结束音视频通话之后退出房间,退出后默认关闭音视频功能及订阅信息,清空当前用户房间中所有信息
    当前房间信息 获取当前房间信息,如当前房间 ID、当前用户、加入房间的其他用户
    设置房间属性 自定义房间信息,如标识当前房间中用户的身份标识,通过获取房间属性进行相关业务处理
    基础设置 大小流 多人音视频通话过程中,为了减少下行带宽占用,可以开启大小流模式,每个用户会上传一大一小两个视频流,接收方可以根据显示需要来选择接收大流或是小流。小流分辨率 176X144,帧率为 15FPS,开发者可以选择关闭小流,默认为开启
    音频采样率 默认 48kHz
    视频码率 默认帧率为 15 FPS 不同分辨率的码率为:
    分辨率 256x144:最小码率为 120kbps,最大为 350kbps
    分辨率 320x240:最小码率为 150kbps,最大为 500kbps
    分辨率 480x360:最小码率为 200kbps,最大为 650kbps
    分辨率 640x360:最小码率为 250kbps,最大为 800kbps
    分辨率 640x480:最小码率为 350kbps,最大为 1000kbps
    分辨率 720x480:最小码率为 400kbps,最大为 1200kbps
    分辨率 1280x720:最小码率为 750kbps,最大为 2500kbps
    分辨率 1920x1080(部分手机支持):最小码率为 1500kbps,最大为 4500kbps
    视频帧率 通话过程中设置自已采集的帧率,支持 15 FPS、24 FPS、30 FPS,默认是 15 FPS
    视频分辨率 发起通话前设置自已采集的视频分辨率,支持 256x144、320x240、480x360、640x360、640x480、720x480、1280x720、1920X1080(部分手机支持)
    编码方式 支持 H.264 编解码方式
    音视频流控制 发布音视频流 加入房间之后可以把采集的音视频流推送到 MediaServer,并且广播给同一个房间里的用户,其他人收到通知可以选择订阅来接收流
    取消发布音视频流 关闭摄像头、麦克风或结束音视频通话时可取消发布音视频流
    订阅音视频流 订阅后可接收其他用户发布的音视频流
    取消订阅音视频流 取消后不再接收其他用户发布的音视频流
    发送视频流预处理 视频采集和渲染前回调给开发者进行再处理,实现美颜、磨皮、水印等功能
    发送音频流预处理 音频采集和渲染前回调给开发者进行再处理,实现均衡器、个性化音效等功能
    接收音视流再处理 接收到音视频流的回调,可以选择自己编辑收到的音视频数据
    发布自定义视频流 发布自定义视频流,如:屏幕共享、本地视频共享功能实现
    取消发布自定义视频流 取消发布自定义视频流
    取消接收自定义视频流 取消接收自定义视频流
    房间内指令消息发送 音视频通话指令消息发送 房间内用户向房间中发送指令消息,房间内其他用户收到消息后,可根据消息类型实现自身业务逻辑处理,如:远端控制
    房间代理协议 用户加入的回调 有用户加入房间时 SDK 通知上层,开发者可在此基础上实现自身业务逻辑,如提示其他用户 “xxx 加入房间”
    有用户离开时的回调 有用户离开房间时 SDK 通知上层,开发者可在此基础上实现自身业务逻辑,如提示其他用户 “xxx 离开房间”
    数据流第一个关键帧到达 用于当用户加入房间后视频画面的初始图片显示使用
    取消发布资源的回调 用户取消发布资源的回调
    某个流对象,音频关闭或者打开时回调 用于房间中某用户关闭、打开音频时通知房间中的其他用户,在会议控制、远程指导等场景中,实现用户音频状态展示时可使用功能
    某个流对象,视频关闭或者打开时回调 用于房间中某用户关闭、打开视频时通知房间中的其他用户,在会议控制、远程指导等场景中,实现用户音频状态展示时可使用功能
    视频预览帧回调 在实现视频水印效果时,可通过此功能实现水印效果的预览
    设备控制 设置视频采集参数 设置视频采集参数
    关闭/打开麦克风
    切换前后摄像头 切换前后摄像头,默认为前置摄像头
    切换使用外放/听筒 切换使用当前设备外放/听筒
    开启摄像头 开启当前设备摄像头
    关闭摄像 关闭当前设备摄像头

    体验 Demo

    SealRTC 是融云打造的音视频会议应用程序,通过输入房间号进行实时音视频通话,通话清晰稳定、低延迟,欢迎大家下载体验

    开源项目地址: