||
大家好,欢迎大家来到「云信小课堂 」。
本栏目致力于解答有关IM和音视频的一切问题,产品特点、使用场景、技术名词、接入指南、功能实现......欢迎大家留言提问,我们每节课会选取大家感兴趣的问题进行解答。
概述微信的火热让网络语音/视频通话逐步替代了传统手机通话,那么如果快速实现一款轻量的音视频通话应用呢?其实并不复杂,几十行代码就能实现。
开学第一课,我们一起聊一聊如何快速实现音视频通话。
功能解析我们先来定义一下一款轻量的音视频通话应用需要哪些功能,首先基础类功能可能包含
加入/离开通话
语音/视频通话
音频/视频开启与关闭
具体可参见下图,当然在基础类功能之上我们也可以引入美颜、变声等更多高级的玩法,本期暂不做展开,后面会陆续为大家介绍哦!
功能实现
本章以 iOS 为例介绍如何使用 NERTC SDK 实现音视频通话,更多终端参见网易云信官方 Github 以下内容为大家介绍如果基于 网易云信 音视频通话2.0 SDK 快速实现音视频通话功能,基本步骤如下:
集成SDK(网易云信音视频2.0 SDK)
设置本地视图
加入频道
设置远端视图
音频流
离开频道
销毁音视频实例
集成前,请先前往SDK下载页面查看当前最新版本,并查询本地仓库中对应的版本是否为最新版本。若不是最新版本,建议先更新本地仓库,以确保可以集成最新的SDK版本。
pod search NERtcSDK //本地仓库中查询 NERtcSDK 信息至此, NERTC SDK 已经导入完成。
手动导入 SDK 集成请先前往 SDK 下载页获取当前最新版本;
将解压得到的 NERtcSDK.framework 和 NMCBasicModuleFramework.framework 文件拷贝到工程项目文件夹下;
以 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 实现音视频通话,主要流程如下图所示: (更多终端参见 网易云信官方 Github)
*此处 Server 指的是云信 SDK Sever。
初始化引入头文件
执行初始化
初始化的参数类 NERtcEngineContext 属性说明:
@interface NERtcEngineContext : NSObject启动视频流
API 描述
示例代码
启动视频流后,可以设置本地视频画布,用来显示本地采集的视频画面。
API 描述
示例代码
设置成功后,即可显示本地视频画面。
加入频道加入频道前,请确保已完成初始化相关事项。若您的业务中涉及呼叫邀请等机制,可以使用信令。
API 描述
参数说明
token:频道 token。支持传入以下内容:
空字符串。该种方式需要先开通非安全模式。安全性不高,建议在产品正式上线前转为安全模式;
安全认证签名密钥。安全模式下必需。若未传入正确的 token 将无法进入频道。建议使用安全模式;
channelName:频道名称,传入相同频道名称的用户会进入同一个通话频道;
UID:用户的唯一标识 Id,频道内每个用户的 UID 必须是唯一的;
示例代码
视频通话过程中,除了要显示本地的视频画面,通常也要显示参与通话的其他用户的远端视频画面。
监听远端用户进出频道
API 描述
设置远端视频画布
监听到远端用户加入频道后,可以设置远端视频画布,用来显示远端用户的视频画面。
API 描述
示例代码
监听远端视频流发布
当频道中的其他用户有视频流发出/关闭时,分别会走入以下回调:
API 描述
订阅远端视频流
在设置完远端视频画布后,且监听到远端用户有视频发布时,可以订阅远端用户的视频流。
API 描述
示例代码
订阅成功后,即可显示远端的视频画面。
音频流在 NERtcSDK 中,本地音频的采集发布和远端音频订阅播放是默认启动的,正常情况下无需开发者主动干预。
离开频道当通话结束,需要离开频道,可以调用以下接口:
API 描述
示例代码
执行完 leaveChannel 方法后,SDK 会触发 离开频道回调通知开发者:
API 描述
示例代码
释放当前的 NERtcEngine 实例,建议在 App 确定不再需要使用 NERtcEngine 实例时,通过该接口释放 NERtcEngine 实例的对象资源。
API 描述
@interface NERtcEngine : NSObject <INERtcEngineEx> /** 释放当前的 NERtcEngine 实例 建议在 App 确定不再需要使用 NERtcEngine 实例时,通过该接口释放 NERtcEngine 实例的对象资源; 1. 该接口的工作方式为同步调用方式,必须在子线程中才能调用,否则会调用失败;如: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [NERtcEngine destroyEngine]; }); 2. 该接口不得在 SDK 的回调中调用,在接口返回前也不允许调用 SDK 的其他任何接口;3. 接口调用返回之后,如果需要再次使用 SDK,可以重新调用 sharedEngine 来获取一个新的 NERtcEngine 实例。 */ + (int)destroyEngine;@end
示例代码
为了便于大家学习理解,我们将上文内容作为开源项目发布在了 Github 上,各位有兴趣可以前往查看示例项目。
了解更多: 网易云信
深圳SEO优化公司平凉网页制作哪家好廊坊网站优化推广哪家好蚌埠网站优化按天扣费重庆SEO按效果付费价格龙华网站制作哪家好滨州百度网站优化排名多少钱温州企业网站改版哪家好松原网页设计哪家好木棉湾网站推广系统公司广元网络推广公司毕节网络广告推广和县网站制作价格鹤壁百搜标王报价文山网络广告推广价格昌吉关键词按天扣费价格鹰潭营销网站价格诸城百度网站优化排名哪家好黔西南模板制作株洲网站制作莆田企业网站制作价格临沂英文网站建设推荐思茅网站推广方案多少钱长治关键词按天计费哪家好张掖阿里店铺运营公司阿里网站优化按天收费湘西阿里店铺运营推荐邯郸网站seo优化价格绥化阿里店铺运营公司铜川网站推广系统多少钱嘉兴外贸网站制作公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运