实时音视频选型 开发者应该避开哪些坑?
云栖网:实时音视频技术的专业度和复杂度都很高,通过PaaS服务商来集成实时音视频,快速开发App,是时下开发者的优先选择。所选RTC是否好用易用、契合所需场景,将直接影响项目开发进度和后期运维成本。
开发者需要了解实时音视频技术选型中要避开的坑点,以便提高开发集成效率。具体来说,以下四个方面要综合考虑。
一、实时音视频与IM能力不宜分散
几乎100%的实时音视频在线应用都有文字/语音消息、文件传输、图片显示等IM需求。
目前市场上PaaS服务商这两方面能力强弱不一:有的大厂虽然两方面能力都提供,但不能确保两种能力同样高质量;有的专业RTC厂商,只能提供RTC能力,IM能力还得由第三方专业服务商提供。
这样,便迫使开发者在集成过程中不得不分别选择服务商。当实时音视频与IM质量不稳定时,需要逐一协调各个服务商,逐一排查问题,无形中增加了后期的运营成本。其实,IM和音视频在很多场景下有耦合,建议开发者在选型一开始就要考虑具有RTC+IM双重高保障能力的通信云厂商,尽量“用一套SDK,解决所有通信场景”。
对开发者来说两项功能同时开发,开发包相对比较小;如果前期只用到了IM,没有用到RTC,那么只需要学习IM方面的开发文档就可以了,一旦有了RTC需求,再去学习RTC文档,开发者只需接入相关接口,快速与IM能力做对接和匹配,即可完成两类功能在App生命周期里的全覆盖。
除了开发上的易快速上手外,选择“IM+RTC+推送”整合的解决方案,开发者还可以享受一致的网络架构,提高传输的效率和质量,获得一致的服务保障。例如,融云近期升级了实时音视频能力,RTC的通信信令是复用IM信令通道,可以确保消息100%的连通率和到达率,使底层的通信优势发挥到最大。
二、延时、卡顿、抖动的质量问题要解决好
通过调研发现,用户最不能接受实时音视频的三个质量问题是延时、卡顿、抖动。
低延时要靠两个方面解决,一个是传输协议,一个是优化整体传输环节。实时音视频的主流传输协议有RTMP和UDP两种,一种支持CDN技术,一种支持WebRTC技术,相对来说,CDN技术延时性在3-5秒,WebRTC可以在几百毫秒以内,现在很多厂商可以同时支持这两种技术,分别适用于不同的场景。
整体传输环节中,采集/渲染、编解码/网络往返都会有一定的延时,有些是硬件的物理延迟,需要靠5G这样底层网络技术的提升,或者布更多的数据中心、边缘结点,便于就近接入;有些要针对实际场景,在具体形态上做一些权衡,比如在处理粒度上粗细的考虑,越细的粒度传输的数据包相对较大,延迟也会更高。
当音视频出现卡顿时,有一个视频流畅优先的原则。我们通过降低一些码率和帧率,即使画面模糊一点,也要让用户视觉上是流畅不卡顿的。这样在选型时候,要考虑几个方面:一个是优化低码率下的视频清晰度;二是要有带宽估算能力,当预判到这个带宽没法承受高清晰视频传输时,自动转化成低码率并通过优化算法,使低码率视频清晰度能媲美高清视频。
另外,数据包通常会以错误的顺序到达,从而产生抖动相关问题,或者直接丢失,造成音视频空白。谷歌一份资料显示,视频聊天应用Duo99%的通话都有数据包丢失、过度抖动或网络延迟情况。20%的通话丢失了超过3%的音频,10%的通话丢包率超过8%,也就是说每次通话都有很多音频需要替换。
处理上述问题,很多厂商会采用抗丢包及抗网络抖动能力的NACK(丢包重传)、FEC(前向纠错)、自适应带宽调整(动态调整码)、接收端JitterBuffer(媒体流平稳)等各种机制,有些是组合使用,有些是单独使用,开发者在选型前一定要做到深入了解。
三、拥有全球通信和场景化能力
刚才谈到低延时、抗丢包的解决策略,有些是与网络接入路径长短直接相关的。比如中美两地的音视频连接,没有全球通信网络支持、数据中心和节点布局的厂商是提供不了服务的。开发者选型开发前,就要考虑到自己业务的所属范围。
选择全球化服务的云厂商,除了看数据中心和节点分布外,还要仔细考察全球网络布局的品质,简单说,有的厂商提供了全球网络优化能力,中美之间的音视频连接在未优化前要经过100多跳,而优化后仅6跳就能完成连通。这是由于,这些厂商拥有自有的路径最优算法,通过智能路由就近接入,即使在异国/地网络环境较差的情况下,仍然能够及时切换到更好的线路上去。比如融云拥有全球优化加速网络,实时音视频通话可做到全球端到端延时小于400ms,最低延时66ms,保障端到端之间延迟无感知的实时互动。
在场景化能力上,实际上相比IM,实时音视频更加通道化,在各个场景中复用的程度也相对较高,能力也更基础。优秀的PaaS厂商会按场景提供不同的Demo,音视频技术的升级也针对解决更多的应用场景去优化,便于开发者拿来即用,这种方式对入门级的开发者都十分友好。各种API接口相对独立,开发者只需关注和使用所需要的SDK,就可以实现想要的场景,大大降低集成开发的难度。
四、开发者服务足够完善
在一些社区中,我们常常会看到一些技术文档下,开发者提出问题而没有回复。开发者为提高开发效率,越来越倾向于自助完成工作,因此,开发文档是否易懂,Demo是否易用,都显得十分重要。
另外,工单回复的速度,微信群、社区的值守和响应程度等都能反映PaaS厂商服务意识的强弱。通常来说,7×24小时技术支持服务,1小时工单快速回复、快速远程接入、快速恢复的故障应急响应机制,这些都是对开发者很完善的服务支持。
有些厂商还会提供特色的质量监控服务,比如融云“北极星”的质量问题排查平台,通过可视化图表,快速定位卡顿位置,实时统计丢包率,使开发者可以自助排查每一次音视频通话过程中的丢包率、网络带宽等通信技术参数。可以直接定位用户问题,提高排查效率,提升用户体验。