如何实现音视频通话
摘要:本文从功能解析和功能实现两部分告诉大家如何实现音视频通话,以下为步骤说明。
功能解析
一款轻量的音视频通话需要包括的基础功能有:
(1)加入/离开通话
(2)语音/视频通话
(3)音频/视频开启与关闭
在基础类功能之上可以引入美颜、变声等更多高级的玩法,先暂不做展开。
功能实现
以iOS为例介绍如何使用 NERTC SDK 实现音视频通话,基础步骤如下:
一、集成SDK
(1)CocoaPods集成
集成前,请先前往SDK下载页面查看当前最新版本,并查询本地仓库中对应的版本是否为最新版本。若不是最新版本,建议先更新本地仓库,以确保可以集成最新的SDK版本。
至此, NERTC SDK 已经导入完成。
(2)手动导入SDK集成
1.请先前往SDK下载页获取当前最新版本。
2.将解压得到的 NERtcSDK.framework 和 NMCBasicModuleFramework.framework 文件拷贝到工程项目文件夹下。
3.以 Xcode Version 11.5 为例,进入TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content 菜单,点击 +,再点击 Add Other…,将上述解压得到的SDK文件添加进去。同时,将Embed 属性设置为 Embed & Sign,以使得SDK动态库和应用签名保持一致。
至此, NERTC SDK 已经导入完成。
二、实现音视频通话
以IOS为例介绍如何使用 NERTC SDK 实现音视频通话,主要流程如下图所示:
*此处Server指的是云信 SDK Sever
(1)初始化
引入头文件
#import <NERtcSDK/NERtcSDK.h>
执行初始化
(2)设置本地视图
启动视频流
API描述
示例代码
(3)设置本地视频画布
启动视频流后,可以设置本地视频画布,用来显示本地采集的视频画面。
API描述
示例代码
设置成功后,即可显示本地视频画面。
(4)加入频道
加入频道前,请确保已完成初始化相关事项。若您的业务中涉及呼叫邀请等机制,可以使用信令。
API描述
参数说明
1.token:频道token。
支持传入以下内容:
空字符串。该种方式需要先开通非安全模式。安全性不高,建议在产品正式上线前转为安全模式。
安全认证签名密钥。安全模式下必需。若未传入正确的token将无法进入频道。建议使用安全模式。
2.channelName:频道名称,传入相同频道名称的用户会进入同一个通话频道。
3.uId:用户的唯一标识Id,频道内每个用户的 UID 必须是唯一的。
示例代码
(4)设置远端视图
视频通话过程中,除了要显示本地的视频画面,通常也要显示参与通话的其他用户的远端视频画面。
(5)监听远端用户进出频道
API描述
(6)设置远端视频画布
监听到远端用户加入频道后,可以设置远端视频画布,用来显示远端用户的视频画面。
API描述
示例代码
(7)监听远端视频流发布
当频道中的其他用户有视频流发出/关闭时,分别会走入以下回调:
API描述
(8)订阅远端视频流
在设置完远端视频画布后,且监听到远端用户有视频发布时,可以订阅远端用户的视频流。
API描述
示例代码
订阅成功后,即可显示远端的视频画面。
(9)音频流
在 NERtcSDK 中,本地音频的采集发布和远端音频订阅播放是默认启动的,正常情况下无需开发者主动干预。
(10)离开频道
当通话结束,需要离开频道,可以调用以下接口:
API描述
示例代码
执行完 leaveChannel 方法后,SDK 会触发离开频道回调通知开发者:
API描述
示例代码
(11)销毁音视频实例
释放当前的 NERtcEngine 实例,建议在 App 确定不再需要使用 NERtcEngine 实例时,通过该接口释放 NERtcEngine 实例的对象资源。
API描述
示例代码
以上就是实现音视频通话的详细解说,按照如上步骤就可以完成。
相关阅读
1、网易云信:让每个终端都有融合通信能力
2021年,网易云信发布了全球智能路由网络WE-CAN(Communications Acceleration Network)。基于「网易云信」的分层解耦、融合通信等技术优势,WE-CAN具有动态可调节、高质量传输、大规模并发等特点,能够通过智能路由网络路线将触达全球的效率提升到至毫秒级延时级别。目前,网易云信正在将WE-CAN的技术和业务延伸至海外,进一步释放“通信数据高速公路”的技术红利。
2、网易云信:打造融合通信完整解决方案
经过21年砥砺发展的网易云信,已经形成了包含IM以及音视频技术在内的完整解决方案。在IM即时通讯方面,网易云信主要为客户提供了一整套即时通讯基础能力,通过该平台服务就可以将即时通讯能力快速集成至企业自身应用中。针对不同场景,网易提供了一系列产品、技术解决方案,包括:客户端IM组件、客户端IM基础库、全平台SDK以及服务端API 等。
3、更多推荐阅读
2.《视频教程|AOS登录登出实现》