总结:除了一些线程调度和线程模型的调整外,业务逻辑,包括减少高消耗低反馈的业务模块,减少消耗,增加业务逻辑队列的内存分配来限制空间。 在某些业务场景下,内存持续增长会导致系统崩溃。
1. HaaS RTC 背景说明
HaaS RTC 是阿里云物联网开发的物联网设备实时通信。是。 视频云 该服务主要面向直播、音视频通话等多种场景。 HaaS700是HaaS家族推出的一款新型多媒体开发板。 它运行AliOS Things操作系统(RTOS),集成摄像头、音频和视频等多媒体功能。 HaaS700 现在拥有集成的 HaaS RTC 音视频对讲解决方案。
介绍整个HaaS RTC(实时音视频通信)解决方案
当今最具代表性的RTC技术解决方案是WebRTC。 WebRTC是Google的标准开源项目,致力于网页上的实时通信。 它仅提供基本前端功能的实现,例如编码、解码和抖动缓冲。 如果开发者想要开发基于WebRTC的商业项目,就需要提供自己的服务。 端实施与部署、前端与前端选择与实施信令、手机适配等一系列具体工作。 另外,要给自己的开发能力设定极限,需要在可用性和高质量方面进行很多改进和打磨,要求非常高。 一个专业的RTC技术服务系统除了覆盖以上通信链路外,还需要专用的通信网络来解决互联网的不稳定问题以及互联网通道高容忍的音视频信号处理算法。
从技术角度来看,两个设备之间的通信可以是设备到设备(P2P)、设备-服务器-设备、设备到设备也可以做它与 -device 这个解决方案看起来是一个非常直观的想法,但是也节省了流量(不需要通过服务器转发),但这种模式有一定的局限性。 而是重要的是提供一对一的音视频对讲,而且这类设备不宜太低端。 尤其是在物联网领域,低端设备无需服务器干预即可适应不同场景(网络丢包保护、NetEQ、音频3A等算法)是不现实的。 设备- 服务器- 设备模型允许将一些CPU和内存密集型工作放在服务器端,满足具有多种功能的物联网设备的用户体验。 同时,整体技术解决方案也能平滑适配当前直播等新兴领域。 HaaS RTC 使用设备 - 服务器 - 设备的整体解决方案。
HaaS RTC 技术解决方案建立在视频云之上。 它主要关注低端物联网用途。 在设备端创建跨设备、跨系统的音视频解决方案,为数千万物联网多媒体设备带来高可靠性、低成本的实时通信能力。 。 目前HaaS700开发板支持设备对设备对讲、设备对手机对讲、设备对PC对讲。
HaaS实现实时语音视频通话
1.1. 设备之间
这里指的是设备的概念除了手机、平板电脑和 PC 等其他 IoT 设备之外的所有设备。 事实上,一些常见的语音视频通话设备包括可穿戴手表(儿童手表)、公网对讲机、智能门禁对讲机等。 这些设备上具有语音和视频通话功能。 它具有关键属性,不同的设备场景对商业化过程的技术要求有很大差异。 例如,儿童手表需要考虑功耗问题。 通过调整音视频编码格式、帧率、软硬件编解码器及参数,可以尽可能降低设备功耗,保证通话时间。 同时,还需要保证视频通话的高分辨率和高保真度。 在视频通话的情况下,孩子们经常走动,因此4G信号往往很不稳定,但家长和孩子在视频通话时需要能够顺利沟通。清晰的沟通尤为重要。 门禁对讲机不需要特别注意功耗问题,因为设备本身是持续供电的。 同时,家庭可视对讲系统通常用于大型住宅小区。 其中不少拥有数千甚至数万户,对接入户数、容量、稳定性有较高要求。 可视对讲系统主流仍采用RS-485总线信号传输,且是定向数字化。 从发展趋势来看,采用TCP/IP的大型家庭、大容量家庭可视对讲系统正逐渐走向成熟。 因此,在门禁对讲领域,更应该关注大容量、稳定性等问题。 HaaS700考虑到了这些场景的需求,从功耗和稳定性角度做了很多优化。 适用于各种音视频对讲及直播场景。
1.2. 从设备到手机
随着互联网的加速和设备的智能化程度不断提高,设备与手机之间的通信变得越来越普遍。已经成为了。 例如手表与手机之间的视频通话、直播设备与手机之间的直播视频通话、智能音箱与手机之间的视频通话等。 在这些场景下,设备和手机之间存在比较大的差异,包括屏幕。 分辨率、视频编解码能力、CPU计算能力、网络带宽等方面的差异。 这些差异决定了语音和视频通话的整体解决方案。 ,技术方面,如常见音视频编解码格式的适配、屏幕分辨率的适配、网络拥塞控制算法传输码率的调整等,要解决网络带宽变化带来的数据传输问题,需要实现各种差异屏蔽。从 NetEQ算法解决了网络抖动等造成的音频播放不均匀的问题。 同时,不同的场景对音视频延迟的要求也不同。 例如,语音、视频通话场景的时延要求高于直播场景的时延要求。 在音视频通话场景中,您希望保证音视频发送方到接收方的延迟尽可能大。 延迟小于1秒,这对于用户体验尤为重要。
1.3. 设备到PC
移动互联网时代,用户与移动设备的通信越来越多,通信也变得越来越复杂。 产业化趋势,特别是近两年直播的增多以及疫情的影响,加速了各类电商直播、在线教育、在线会议的普及。与设备之间、设备与手机之间一对一的语音视频通话场景不同,电商直播主要是一对N的关系,而在线教育、在线会议更是N对N的关系。 .-N关系。 这意味着您必须实现N路推流和N路拉流来支持在线会议等场景。 从技术角度来看,相对成熟的技术解决方案已经存在,但设备侧的主要挑战是设备性能(CPU、内存、带宽等),特别是在一些低端设备上。 这样的话,一些对性能和内存要求较高的操作就可以放在服务器端。 例如,服务器端映射N个通道的推送流,设备端只推送一个通道,服务器端拉取N个通道。 它们被组合成一个通道,然后发送到设备。 即使这些对性能要求比较高的操作转发到服务器后,设备实际上还是一直在继续拉流、推流。 性能要求与 1:1 语音和视频通话相同。 HaaS RTC打通了设备和PC之间的语音和视频通话,进一步促进了HaaS设备跨系统和硬件平台的通信能力,实现真正的三端互操作。
2. HaaS RTC技术解决方案
HaaS RTC支持在RTOS级系统中建立语音和视频通话能力。 为此,我们进行了整体架构调整和性能优化。 与 Android 和 Linux 系统不同,RTOS 操作系统通常具有较弱的 CPU 能力和较小的内存。 例如,HaaS700的CPU是ARM A7单核800Hz,剩余可用内存约为24MB。 这就需要尽可能减少内存消耗并重构线程模型。 这包括串行和耗时较少的操作的线程合并,以及减少简单线程的线程堆栈空间。 同时,由于RTOS系统是单进程,其线程调度与Android和Android有很大不同。 Linux。 为了让需要及时响应的线程能够发送和接收数据,必须显式提高线程调度优先级,使得需要及时响应的线程不会被长时间调度。 除了调整线程调度和线程模型之外,业务逻辑,包括减少CPU消耗高、反馈低的业务模块、减少CPU消耗、增加业务逻辑队列的内存分配、限制空间、避免内存分配等也需要进行优化。 。 具体业务场景。 如果媒体内存不断增加,系统就会崩溃。
>
在架构层面,为了快速适配不同的系统平台, ,我们创建了一个集成的系统和驱动适配层,其中包括HaaS RTC摄像头、显示器、渲染、编码和解码、系统线程、时钟等。 这样做的好处是HaaS RTC核心代码不需要在不同的系统平台上进行更改,并且只应在必要时进行更改。 进行简单的底层适配。 适配层之上是音视频推流、音视频拉流、视频云SDK、信令系统模块。 音视频推流模块主要负责建立推流通道、推送编码后的音视频数据、音视频。 流媒体模块负责建立流媒体通道并接收服务器发送的音视频流。 视频云SDK主要负责音视频数据的传输以及适应传输过程的网络抖动算法的实现,包括带宽估计、NetEQ等信令。 该系统负责信令呼叫控制,包括电话呼叫。 控制和管理接听、接听电话、挂断电话以及流程中涉及的其他信息。 音视频对讲场景需要与服务器交互,包括双方建立会话的过程。 ,服务器必须查询并验证主叫和被叫的账户和设备信息。 确认后,将通知被叫方。 被叫方可以接听电话或挂断电话。 服务器根据被叫方的反馈建立会话通道。 中止会话流。 RTC Manager是基于音视频推送、音视频拉取、信令、系统功能的RTC管理模块。 在推送场景中,负责音视频数据采集、音视频编码、编码器输出。 代码被传输到推送模块并上传到服务器。 在拉取场景下,负责接收音视频推送模块发送来的音视频数据,通过音视频解码器进行解码,最后通过播控模块播放音频。 还有视频片段。 另外,RTC管理器负责将RTC场景的所有功能暴露给应用层,应用层通过RTC管理器暴露的接口实现视频通话功能。
HaaS RTC设备端技术方案只是满足 RTOS 和 Linux 设备的技术支持。 完整的RTC解决方案还需要对移动设备的支持和强大的服务器能力。 移动终端需要解决不同手机平台的功能适配,才能让用户拥有一致的用户体验。 服务器必须提供大规模、实时的音视频推拉能力,并能够与设备协同工作。 它处理由于网络波动导致的丢包、延迟等各种问题。
3、性能优化
常见的RTC场景大多基于IOS、Android、Windows等成熟系统。 这些系统一般都有比较高性能的处理器和比较大的内存容量,而且RTC场景本身对CPU和内存的要求也比较高(经过一段时间的微信视频通话、电话通话)是一次暖心的体验(我的回忆)婴儿还是新鲜的)。 对于低端设备,如果想要集成RTC功能,需要针对RTC场景做大量的性能和内存调优工作。 与通常具有 4 核 CPU 和 2G 内存的 Android 设备相比,HaaS700 CPU 是 Arm A7 单核,频率仅为 800 MHz,剩余可用内存不足 24 MB。
性能指标
数据值
CPU 使用率
100%
内存
24MB
帧速率
10fps
分辨率
320x240
码率
100K
视频延迟
6S
音频延迟
>3S
音频 3A
启用
HaaS700 RTC 性能(优化前)
从 HaaS700 开始,其中 RTC、CPU使用率100%,音视频滞后大于6秒,系统正常运行时间不超过1分钟。 由于内存快速增加并超过24MB,系统崩溃。 特别是对于弱网络,数据包的传输速率下降,因此带宽估计模块必须持续工作。 这不仅会增加CPU的占用,还会在发送队列中堆积大量的码流,导致内存占用不断增加,本质上使整个系统不可用。 因此,简单地将Android或Linux等高端设备端系统的操作体验复制到RTOS层面的低端系统上并不现实。 需要线程级代码重构、功能模块缩减、整体性能和内存。 优化。
性能指标
数据值
CPU 使用率
85%
内存
12.5MB
帧速率
> p > p>
20fps
分辨率
640x360
码率
400K
p>
视频延迟
评论前必须登录!
注册