2020年注定是一个不平凡的一年,因为疫情的原因,让我们每个人的生活都受到了影响,春节假期延长、人员流动受限、各地延迟复工。好在利用现有技术、大人们在家办公,学生们在家上网课,让我们的生活恢复了正常。
回顾2020年,感觉就像按了加速键,在如此艰难的一年,我们每个人都奋力前行,用坚强的毅力坚守住自己的工作岗位,坚持到了最后,我们凭自己的实力赢得了别人的认可。anyRTC在这一年里,也经历了质的蜕变,从SDK架构的升级到官网的全面更新,并落实AI在音视频场景中的应用等等。下面就让我们一起回顾anyRTC在2020年的改变和升级。
SD-RTN: SD-RTN(Software Defined Real-time Network) 软件定义实时网,专为双向实时音视频互动而设计。超高清音视频的传输需要稳定的网络和充足的带宽,任何的网络波动都会对音视频质量造成影响。在实时通讯的场景下,如何高速地检测网络状态并根据网络状态制定合适的抗性和传输策略,一直是学术界和业界的难题。我们的团队具有丰富的学术界和业界经验,为此提供了能适应各种复杂场景的高品质高可靠性的解决方案。
系统采用分布式、分层架构,利用数十万个边缘可控节点提供服务。它融合基础网络能力、CDN分发能力、媒体处理能力、MCU、多码率的对齐和处理、压缩和转码、SVC等能力。
拥塞控制:基于延迟和丢包拥塞控制算法,结合我们丰富的网络状态数据库,提出了新的实时拥塞控制算法,在不同网络场景下都能迅速给出可靠的带宽预测。
损伤抗性:互联网网络不稳定因素有很多,我们的智能抗性算法可以在极低的延时下抵御住各种突发性的网络波动及网络损伤,将有限资源的能力最大化,确保优质的播放体验。
QoS/QoE最优化:在网络带宽受限的情况下,清晰度、流畅性和延时不可兼得。我们根据应用的上下文和网络状态,实时自动做出最优的取舍,让最终用户能获得最好的体验。
多人通讯流控:多人通讯环境,既要保证重要通话的清晰度,又要兼顾他人的体验。我们使用了两套策略:在决策空间有限的情况下使用人工智能进行流控;在更复杂的场景下提供基于主观体验调整策略。
网络度量:网络策略的制定离不开现网大量数据支持。我们有丰富的去隐私数据集用来提取和学习网络的状态,可以在离线场景下复现差网状态,与在线场景下迅速判断网络状态。
动态路由:网络状态变化多端,跨运营商、跨区域、跨国等多重复杂网络环境,需要实时对网络状况进行检测和调整;基于实时状态数据进行分析和计算,获取最优的传输线路。
全新网络架构能端到端延迟平均在200ms左右;基于UDP私有协议传输,延时可控;能够承受超强的抗丢包能力,80%的丢包能够正常通话;超强网络拓扑,单频道人数可支撑1000W同时在线。
SDK:它提供音视频通信、消息通信、媒体处理控制等基础能力。此外,我们面向不同的业务应用场景提供同一套SDK,包括视频会议、直播连麦、视频客服、低延时直播等SDK。
SDK采用模块化设计,分为网络传输层、音视频编解码层、引擎API层。
接口模块化设计:
核心方法:SDK的初始化以及加入房间的方法配置、离开房间等相关方法。
音频核心方法:音频模块的相关配置:使用音频模块、禁用音频模块、是否发送自己的音频、是否接收别人的音频、音量设置等等。
视频核心方法: 视频模块的相关配置:使用视频模块、禁用视频模块、是否发送自己的视频、是否接收别人的视频、本地采集分辨率、帧率设置等等。
视频前处理及后处理: 视频美颜、超分等相关功能。
音频播放路由: 扬声器管理。
耳返设置: 耳返设置管理。
多频道管理: 一个用户可以进入多个频道。
屏幕共享: 屏幕共享相关管理,用户可区域屏幕共享,也可以应用窗口共享,以及共享屏幕的声音模块等等。
音乐文件播放与混音: 播放音乐文件,以及对文件的状态操作等。
变声和混响: 男变女、女变男、大房间、KTV音效等设置。
CDN推流: 本地CDN推流和服务端CDN推流,满足万人频道观看的需要。
跨频道流媒体转发: 主播PK连麦场景的设置。
在线输入媒体流: 适合一起看电影,观看网络摄像头等场景的需求。
视频双流模式: 大小流无缝切换,多人互动场景下节省用户流量以及减少设备性能消耗的必备功能。
通话前网络检测: 通话前检测当前客户端的上下行网络。
视频自采集自渲染: 当本地采集渲染无法满足自身需求的时候,比如手机屏幕共享,需要使用第三方美颜等功能。
音频自采集自渲染: 当本地采集渲染无法满足自身需求的时候,比如变声,自定义音频输出等功能。
直播水印: 对输出的视频进行加水印处理,防止视频盗链。
等等。
各个模块可参考API文档
2020年8月,anyRTC官网进行了一次全面的升级,从官网样式,内容,到用户后台管理,都焕然一新。
anyRTC官网:https://www.anyrtc.io/
官网更加简洁明了,即便是第一次浏览的用户也能准确快速的找到所需的目标。新增首页客服,可直接通过官网咨询客服,线上客服体验趋于完善。
用户后台管理中心新增监控大厅与用量统计,并进一步优化了费用中心,可供实时查看动态数据,调整运营方案,消费明细,让客户更放心,更安心。
如果把各位开发者想象成战士,那么文档中心可以说是必不可少的弹药。开发者们可以从文档中心,了解到各个参数与接口。今年我们为各个平台、框架添加demo文档,新增场景、功能简介、开发注意事项等介绍,帮助不同水平的开发者更好的使用SDK。
同时anyRTC文档中心,全面优化了UI,文档内容更加全面、分类更加细致。目前分为六大类:语音通话、视频通话、互动直播、实时消息、云端录制、anyRTC平台。方便开发者们快速找到自己所需要的文档,提升用户体验。
anyRTC Native SDK支持多频道与人脸检测
anyRTC Native SDK增加了对多频道的支持,可以实现更多更复杂的实时互动场景。多频道的典型场景就是超级小班课。超级小班课,是将互动大班课里的学生进行分组,各组的学生会同时订阅老师的主频道Channel A和各自小班的频道Channel(B, C … N),各小组内学生不仅可以接收老师教学的实时音视频流,同时小组内成员彼此可见、可聊天,极大提高大班课的教学质量和学生体验。多频道功能可在单进程中实现,不仅降低了集成的复杂度,还减少对系统资源的消耗。anyRTC对进入的频道数量不限制,单频道同时上麦人数最大支持50人,观看人数不限制。
增加人脸检测功能,通过 enableFaceDetection 方法开启人脸检测后,SDK 会实时触发 onFacePositionChanged 回调,向本地用户报告检测出的一系列结果,包括人脸距设备屏幕的距离。通过这个功能可以实现许多新的场景,比如在线教育场景下,可在检测到学生距离屏幕过近后,发出提醒,保护用户视力;如果检测到学生不在摄像头范围内,则可以提醒老师该学生有可能“逃课”了。目前该功能仅支持 iOS、Android 平台。
RTC SDK for WeChat
RTC SDK for WeChat是一个全新的SDK,能够支持微信小程序实现如下场景:
1、视频通话&语音通话
2、互动直播&语音聊天室
RTC SDK for WeChat的优点是高效,简洁,快速,易操作,而微信小程序更是将这个RTC SDK的这个优点发挥到了极致。
低门槛快速接入:仅需 2 行代码即可跑通测试 Demo,10 行代码完成通用能力接入。最快1分钟即可从零开始快速搭建低延时、低卡顿、高品质的实时音视频互动产品。同时支持 720P、1080P 高清画质,60%丢包率可正常视频。音频方面支持 48kHz 采样率,192kpbs 码率,70%丢包率可正常语音,更有领先行业的3A 处理(回声消除 AEC、自动噪声抑制 ANS、自动增益控制 AGC),杜绝回声和啸叫,无损音质媲美纯正 CD 效果。
总的来说RTC SDK for WeChat适用于各种互动的应用场景,使用该SDK开发成本低,开发周期短,基本和H5的开发难度差不多;很容易传播和获客,充分利用好微信的优质流量。
RTC新增自渲染
当默认的音视频模块无法满足开发需求时,开发者可以使用外部渲染器对音视频数据进行渲染。例如:
功能介绍:
实时视频传输过程中,anyRTC SDK 通常会启动默认的视频模块进行采集和渲染。在以下场景中,你可能会发现默认的视频模块无法满足开发需求:
app中已有自己的视频模块
希望使用非 Camera 采集的视频源,如录屏数据
需要使用自定义的美颜库或有前处理库
某些视频采集设备被系统独占。为避免与其它业务产生冲突,需要灵活的设备管理策略
基于此,anyRTC SDK 支持使用自定义的视频源或渲染器,实现相关场景。
数据流转图
当默认的音视频模块无法满足开发需求时,开发者可以使用外部渲染器对音视频数据进行渲染。例如:
跨平台开发一直都是这几年最重要的技术趋势之一。跨平台的框架每年都在更新,但是热度却从未降低。采用跨平台开发技术让软件开发者几乎可以用同一套代码就为不同平台构建应用程序,节省了时间、人力,以及不必要的工作。2020年anyRTC新增了,uni-app移动端插件和Flutter移动端插件。在跨平台覆盖这方面anyRTC一直走在整个行业的前端。
anyRTC uni-app移动端插件目前适配了RTC和RTM SDK。uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台。因为扩展能力强,学习成本低,所以深受开发者们的喜爱。
uni-app 跨平台SDK应用场景非常广泛,比如在在线教育、在线金融、智能终端、移动执法和交通物流方面都有良好的应用。
anyRTC uni-app RTC SDK 集成指引及示例DEMO
参考地址:https://github.com/anyRTC/uni-app-SDK
anyRTC uni-app RTM SDK 集成指引及示例DEMO
参考地址:https://github.com/anyRTC/uni-app-rtm
anyRTC Flutter移动端插件目前适配了RTC和RTM SDK,开发者基于anyRTC Flutter SDK可以简单高效的实现跨平台音视频和实时消息功能。
Flutter是Google一个新的用于构建跨平台的手机App的SDK。写一份代码,在Android 和iOS平台上都可以运行。Flutter的优势是具备快速开发、富有表现力和灵活的UI、以及原生性能。
anyRTC Flutter SDK 集成指引及示例DEMO
参考地址:https://github.com/anyRTC/Flutter-SDK
anyRTC考虑到了用户的应用创建了实时消息Flutter-RTM
参考地址:https://github.com/anyRTC/Flutter-RTM
到目前为止anyRTC全平台覆盖,支持Windows、macOS、Android,iOS、Web、小程序等多平台覆盖、支持Flutter、APICloud、uni-app、Electron跨平台开发。
当下,5G和AI时代已至,音视频技术已经上升到一个全新的高度,新场景、新应用、新标准也必将出现。anyRTC紧跟时代的步伐,成立AI实验室,将自身的平台技术跟AI深度结合,全新架构了服务端和客户端音视频引擎-下一代音视频SDK以及下一代音视频引擎。
1、SD-RTN全球实时传输网
SD-RTN(Software Defined Real-time Network) 软件定义实时网,专为双向实时音视频互动而设计。
SD-RTN的优势
高延时传输方案 | SD-RTN |
---|---|
端到端单向延时 > 1s | 端到端单向延时 < 400ms |
基于 TCP 协议,延时不可控 | 基于 UDP 协议,延时可控 |
抗丢包能力差,在丢包 2% 时明显卡顿,达到 30% 可能断开连接 | 通过定制具有超强抗丢包能力,80% 丢包率也可通话 |
层层缓存,就近下发 | 基于自定义路由,选择最优传输路径,实时端到端传输 |
适用于单向直播、视频点播等无互动需求场景 | 适用于互动课堂、互动直播、音视频社交、游戏对讲等对实时互动高需求场景 |
SD-RTN是一种可承载任何点到点(peer-to-peer)实时数据传输需求的业务架构:只要调用开放的API,无论是实时视频(会议、教育、直播、社交、监控、VR)、文件传输(短视频、办公)还是高速数据同步(游戏、AI、IOT、物联网)都可以很方便的接入SD-RTN的实时数据传输云服务。
2、音频处理模块
核心技术效果对应与试听
智能语音增强解决方案,集成了AI智能降噪、回声消除、混响消除、自动增益等核心技术。该方案创新性地应用深度学习技术,实时分离语音和背景噪声,清晰提取人声,有效消除环境中的各类噪音,让用户畅享更清晰高效的在线音视频通话体验。
anyRTC自19年初成立AI实验室以来,经过长达一年多的时间,收集公开语音数据资源,以及第三方提供的数据和自己的内部会议来训练AI模型。噪音抑制功能将分析用户的音频输入,并使用经过特殊训练的深度神经网络来减少背景声音,例如键盘的敲击声、风扇产生的噪音等。目前我们anyRTC已经配备了全套工具和环境,我们现在已经自己采集了很多数据集,并且应用到了我们AI算法中。下面就是我们anyRTC在AI音频模型中取得的成就:
anyRTC AI 降噪技术规划的关键策略包括音频通信核心体验、声音场景分类和处理、音频痛点难点问题及差异化体验,最终目标则是提升语音可懂度、自然度、舒适度。
3、视频处理模块
核心技术
最高支持 1080P,分辨率、码率可自由切换,融合多种领先的视频编码处理算法,画质更好、码率更低,支持移动端实时超分,实现低分辨率视频到高分辨率视频的实时重建,全面提升源视频画质和分辨率。AI 辅助功能:支持实时暗光增强算法,即使在较暗的环境下,也能提供清晰、明亮的图像。
anyRTC在其他领域也有所涉及:AI 智能传输,超分辨率,智能插帧,图像增强等。
AI智能传输
由于网络传输线路上有丢包,接收的数据有失真,所以 AI 智能传输被用来做算法补偿,提升传输质量。
超分辨率
实时通信视频在接收端提高原有图像的分辨率,得到高分辨率的图像,该功能有效减少了网络传输带宽,为移动端为用户带来极致视频体验。
智能插帧
智能插帧是通过运动估算,计算出画面中物体的运动轨迹,生成新的帧来进行插补。可以将普通常见的30fps进行智能插帧计算,可以获得60fps的顺滑视频,让眼睛看到的自然形象更为自然。
图像增强
图象增强是数字图象处理常用的技术之一。图象增强技术的目的是为了改进图象的质量,以达到赏心悦目的效果。通常要完成的工作是除去图象中的噪声,使边缘清晰以及突出图象中的某些性质等。
anyRTC目前官方维护的Github有两个:
1、anyrtcIO:https://github.com/anyRTC-UseCase
只要是提供一些场景demo,比较有针对性。目前是提供一些场景demo,比较有针对性。比如语音开黑,聊天室,语音通话等场景。
2、anyRTCIO:https://github.com/anyRTC
提供了一些基础的代码示例,以及一部分由官方维护的面向跨平台、第三方框架的 SDK 版本。
伴随着互动场景的增加,以及产品功能的新增,anyRTC会继续扩充GitHub资源库,保证开发者们可以方便快捷的找到示例代码。
直播连麦PK目前是目前非常火热的一种直播方式,主播PK就是一个主播在直播时,可以对另一个直播间的主播发起挑战。一旦挑战接受,两个直播间的主播就开始进行连麦互动,直播界面一分为二,同时显示两个主播的画面,两方粉丝也会进入到同一个直播间中。
anyRTC提供以下两种推流方法:
1、服务端旁路推流
单主播模式
适合Web网页端直播的主播或者直播间无连麦需求的用户
多主播模式
多人连麦直播时,推流到 CDN 需要开启转码功能,将多路流合并为一路流。CDN 观众通过该路流的 CDN 地址(URL)即可观看连麦直播。
2、客户端旁路推流
单主播模式
不调用setLiveTranscoding
即可,SDK内部直接推流不在进行转码合流。
多主播模式
主播调用setLiveTranscoding
进行本地转码推流,将多路流合并为一路流。CDN 观众通过该路流的 CDN 地址(URL)即可观看连麦直播。
1、用户无需结算旁路推流的消费,可以在客户端直接推流。
2、延迟小:主播端直接推流,减少了传输过程中的延迟损耗。
输入在线媒体流能可以将音视频流作为一个发送端输入正在进行的直播房间。通过将正在播放的音视频输入到直播频道中,主播和观众可以一起收听/观看该媒体流并实时互动。
输入在线媒体流的应用场景十分广泛,以下为大家列举出了一些;
1、直播视频共享
比赛直播中,主播可以直接拉比赛的音视频流,可以实现主播和观众一起看比赛,一起点评的功能。增加了主播与观众之间的互动性。
2、一起娱乐
在同一个直播间内,主播可以与观众一起看电影,听音乐,打游戏,并且可以实时交流讨论。提供给用户一种沉浸式的观感。
3、无人机或网络摄像头视频源
无人机或网络摄像头直接采集视频,该视频作为在线媒体流输入直播频道中。
伴随着技术的不断提升,更多的场景方案也逐渐落地实施。
anyRTC为多国儿童智能手表厂商提供智能手表视频通话解决方案,在儿童手表场景中,保障每一位小朋友与父母之间可以进行高质量、低功耗、低延时的实时互动交流。anyRTC为智能手表提供了轻量级视频通话SDK。保证弱网的情况下可以正常通话,同时支持超清画质与高音质,支持1080P 60FPS 超清视频,48kHz全频带音频编码,优秀的3A算法。
以往的合唱都是用户开启合唱功能之后先一个人和伴奏演唱,完成之后上传,其他用户可以使用这个已经有人声的伴奏再唱一遍,实现“合唱”,而anyRTC要做到的合唱是两位用户同时在线唱歌,合唱的伴奏是同时通过网络发送给两位歌手的,而且两位歌手在演唱的同时可以听到彼此的声音。anyRTC提供的在线合唱解决方案,保证用户可以像在线下KTV一样,有声临其境的感觉,极大的提高了用户的体验感。
比赛直播中,主播可以直接拉比赛的音视频流,可以实现主播和观众一起看比赛,一起点评的功能。增加了主播与观众之间的互动性。
疫情还未完全过去,我们还需要互相帮扶,砥砺前行。2020年充满了复杂以及不确定性。面对这个快速发展的时代,我们能做的就是保持思考,坚持钻研,茁壮成长。2021年,希望能与各位开发者继续前行,共同进步。一起让音视频行业发展的更好。