质量透明那些事儿(一):你知道你用户为什么会“卡了”么?
在最近这个疫情持续的特殊时期,大部分人都在家里憋了一个月。这一个月里,很多人把办公室搬到了线上,几乎所有的老师都开始在视频里给学生传道、受业、解惑,就连“云碰杯”新姿势都被开发了出来。
不过在这一个月里,有些对话,变得更加常见了。或许,你也听过,或说过。
“老板,你刚说什么?卡了”
“主播你画面好卡”
“这道题可以再讲一下么?老师?老师!听得到我么?”
是的,你的视频不是卡了,就是模糊了,要不就是声音听不清。用户想知道“还能不能愉快地视频聊天”,开发应用的也想知道“怎么就你一个人听不清?问题出在哪儿?”。
1.实时音视频中的那些质量问题
在实时场景下,你可能遇到的问题无非这几种:
- 视频卡
- 视频模糊或有马赛克
- 绿屏、花屏或黑白屏
- 声音有回声、杂音
- 看不到视频或听不到声音
出现视频卡顿,一般是因为网络带宽不足,或设备性能遇到瓶颈,还有可能是主播操作有误。以上任何一种情况发生时,都有可能造成一些视频帧无法得到正确解码,那就会感到明显卡顿。
通常想要减少卡顿的可能性,有三种方法,一种是降低码率,使得更多的帧得到正确解码。码率其实是单位时间内传输的数据量而不是帧,可以理解为降低了视频的信息量,清晰度也会有所下降。另一种方法就是提高算法复杂度,让相同质量的视频获得更高的压缩比。还有一种方法,就是切换网络,因为有些时候就是因为出在带宽实在太低,用户又实在太多。
正如刚刚所说,降低视频码率是可以防止出现卡顿,但是一味地降低码率,就容易出现视频模糊或马赛克。而且,如果由于丢失的帧,导致后续 P 帧无法根据丢失的这一帧进行画面重建,就会出现绿屏、花屏之类的现象。
至于回声、看不到视频、听不到声音,很多情况下都是与设备有关,如型号老旧、系统兼容性差、故障,有时也可能是因为集成问题,如错误的 API 调用、使用了有问题的库。如果两人通话时候,如果你发现有回声,那么问题一定是出在另一方身上,比如他的外放声音过大,导致他的麦克风采集到了外放声音,并回传给了你,你就会明显听到回声。
这些质量问题,对于用户来讲会直接影响使用体验。而对于开发者来讲,如果不尽快定位异常,只能坐等用户投诉,更不用说在产品迭代过程中排除隐患提升产品质量了。
对于有经验的开发者来讲,他会知道回声问题出在对方设备上,没经验的,可能就只好糊里糊涂地等一星差评了。但遇到音视频卡顿、模糊等问题,想追根溯源,就没那么简单了。
2.如何定位质量问题?
通常来讲我们有三种方式:
1.自建监控
开发者可以选择自己做数据埋点,实时地监控实时音视频传输质量,包括在设备端监测设备的状态,比如摄像头是否开启、麦克风是否开启、CPU 状态等,以及在服务器端监测网络延时、丢包、抖动、比特率等。自建的好处在于可以做到对自己的服务心里有数。
不过难点在于工作量太大,埋点覆盖了设备端、服务端,复杂度堪比又建了一套 RTC 服务。而且随着用户量的增长,需要处理的数据量也会成正比增长。如果需要及时为用户解决质量问题时,就需要能进行实时的质量调查,这意味着你要有对这些海量进行实时处理的能力,并能将它们可视化地呈现出来。
2.集成多种 RTC 监控工具
相对于自建来讲,这是一个更容易实现的方式。如果你用的是 WebRTC,在市场上也有相应的质量调查工具。如果你用的是第三方的 RTC 服务,也可以这样做。即便是已经自建了质量调查工具,同样可以再集成多种第三方工具,多维度地对比才能更好地了解目前的用户体验情况。
不过,由于大家对质量的定义肯定不同,什么叫网络状态不好?怎样才算设备性能不足?质量指标如何关联是个难题。即便你用的是 WebRTC,你可以用这些工具看到一些质量指标,但要分析出结论,做自动化归因,更是难上加难。
3.使用同一 RTC 服务商所提供的质量调查工具
这就好像是使用声网 Agora SDK 的同时,还可以通过声网Agora 水晶球来进行质量调查。这种方式不仅更易于接入,而且可以更及时地获得数据信息。最重要的是,质量指标的关联已经做好,你只需要根据官方指导来调查、分析即可。唯一的难题就是,你需要了解如何上手工具,怎么来快速定位问题了。
3.怎样才算质量“透明”?
质量透明不仅仅是在出了质量问题的时候可以有迹可循,能进行调查,更重要的是,还需要了解整体服务的质量情况,甚至在出现问题的时候得到及时的异常提醒。如果一个 RTC 服务商,能提供完善的质量透明工具,不仅是对服务有信心,更是希望与开发者坦诚以待。
在质量透明方面,声网水晶球提供了几个维度的能力:
-
数据洞察,可以通过声网后台了解历时分析通话规模和质量,可以多维地帮助你评估通话质量。比如你的用户什么在这次视频会议中,时长是多少、网络传输情况如何等。
-
实时监控,可以实时统计在通话过程中遇到的异常,比如可以实时看到哪些用户的用户体验不好,整体比例是多少等等。
-
通话调查,针对个别出现体验问题的用户,可以查看他的设备、网络情况,根据可视化数据来分析出质量问题的成因。
-
异常报警,从异常识别,到成因分析,这些数据都可以实时获取。它可以帮助你识别出很多大部分异常情况,比如音频卡顿、视频卡顿、画面糊、声音小等。通过反馈 API,异常情况会自动提交上报给你,并得到对应的分析与反馈。
如何使用这些能力?我们会在后续的几篇内容中逐一分享。