网易云信 (https://netease.im/) 主要有四款音视频产品, 有实时音 SDK 直播 SDK 播放 SDK 以及短视频 SDK 实时音 SDK 主要覆盖安卓 IOSPCMacweb 端; 直播和播放 SDK 主要覆盖安卓 IOSPCWeb 端; 短视频 SDK 主要覆盖安卓以及 IOS 端
在用户眼中, 优秀的音视频产品应该具有清晰低延时流畅秒开抗丢包高音效等特征为了满足用户以上要求, 网易云信的工程师通过自建源站, 在 SDK 端为了适应网络优化进行 QoS 优化, 对视频编码器进行优化, 同时对音频算法进行优化
弱网环境测试
网易云信直播 (https://netease.im/live) 项目上线后, 出现了音视频卡顿的问题, 音视频卡顿现象通常出现在网络条件不是特别理想的情况, 一般直播画面频繁出现缓冲标志或者直播画面一卡一卡的现象
造成直播视频卡顿的原因:
1CDN 节点覆盖不全: CDN 服务器覆盖不足导致区域卡顿运营商覆盖力度不足导致区域性卡顿;
2CDN 接流节点不佳: 主播上行推流卡顿导致直播卡顿;
3 主播网络差: 数据上传受阻;
4 观众网络差: 数据下行受阻;
分析解决策略:
1CDN 节点覆盖不全: 接入多家 CDN 节点, 尽可能覆盖全球网络;
2CDN 接流节点不佳: 自建源站;
3 主播网络差: SDK 开发对 QoS 上行调整;
4 观众网络差: SDK 开发对 QoS 下行调整;
测试需求: 直播端 QoS 测试;
测试难点:
1 如何实现低成本高效率的弱网环境?
2 怎样的网络才是导致用户卡顿的弱网环境?
3 弱网优化参数这么多, 如何高效提取分析数据?
4 测试完了, 怎么可以快速提供简洁清晰的结果给开发?
弱网测试工具:
弱网损伤仪 network emulatorfiddlertc;
弱网损伤仪成本比较高, 使用复杂; network emulator 是微软的开源工具, 可以实现带宽丢包延时抖动等弱网参数的限制, 被称为简易版本的弱网损伤仪, 实现成本比较低, 最终搭建弱网环境选择的是 networkemulator 工具;
network emulator 工具使用建议:
1 办公环境内使用人多时, 4G 信号通道出现拥塞, 虽然网络上行下行带宽足够, 但网络丢包严重, 造成限制网络不稳定的现象;
解决方法: 开通支持开启 5G 信道的无线热点, 部分缓解网络拥塞的现象;
2 弱网限制效果验证;
弱网环境参数选择;
常见弱网限制参数;
带宽丢包延时抖动综合网络;
具体数值选择方法:
第一步: 逼近法, 对上述限制参数从由高到低由低到高给出范围;
第二步: 业界标准和产品需求去反向要求开发优化的力度;
第三步: 通过大数据筛选用户卡顿场景数据, 覆盖用户出现卡顿的场景;
弱网测试常用参数:
测试常用高清视频分辨率为 640*480, 一般要求码率为 800kbps 以上, 带宽限制一般设置为三挡, 800kbps600 kbps 以及 400kbps; 丢包会设置 5%3%1%; 延时会设置 300ms200ms100ms 等限制; 综合网络情况是将带宽丢包以及延时进行结合的参数; 为了监控用户实际使用的一些情况, 也会进行一些 4G3G 网络的覆盖;
测试流程:
开发提交测试之后, 测试会针对入网效果进行简单测试, 针对网络场景发现的 bug 返回给开发继续优化, 开发优化完成之后传给测试, 测试将结果再传给开发进行详细优化, 过程需要反复进行, 下图为测试开始进行的环境图:
直播与播放连接在同一个 Wifi 下面, 用 network emulator 进行弱网限制, 直播与播放都是从 CDN 拉流, 然后获取直播和播放端一些音视频相关的统计数据, 在播放端通过观测方式主观评测优化效果
测试效率分析:
1Android 端数据手工收集;
2 数据导入 excel 分析, 耗时间;
3 测试工作量比较大;
解决策略:
1Android 端开发 MCN 性能数据收集以及日志分析工具;
2 测试工具平台接收来自 Android 端的数据, 进行数据汇总分析;
MCN Android 端: 提供设备性能数据上传, 包括 CPU 占用率内存占用率电量等数据, SDK 统计数据上传, 辅助弱网测试视频测试等的开展
实现原理: 利用 Android 的系统 API 获取系统性能参数 getProcessMemoryInfo, 读取 SDK 存储在本地的日志, 通过 HTTP 接口上传到测试工具平台展示
测试工具平台: 支持解析日志文件和 HTTP 请求, 利用 highcharts 作图, 提供数据对比分析作图并且保存功能, 大大降低了测试完成之后数据整理作图分析的工作量, 给开发提供了最为直观的测试结果
测试执行:
测试结果展示:
上图中的蓝色线是实际带宽, 黑色线代表的是评估带宽, 从 aos-1108-1 这个图可以看出评估以及实际占用的带宽是非常接近的, 通过这个图开发可以了解优化的效果, 测试可以了解测试的结果
视频测试
用户在视频实际使用过程中会发现, 网络以及设备一致时, 有些主播视频可以更加清晰; 有些主播动态的图片会模糊, 出现马赛克的情况; 有些主播画面看起来比较细腻, 甚至主播的毛孔都可以清晰看到, 而有些主播看起来画面是模糊的; 这就需要开发通过替换编码器的一些算法或者做一些参数的调优对编码器进行优化;
安卓端视频测试方面会影响的因素包括: 拍摄场景编码参数设备性能安卓兼容性以及网络
前期的视频测试主要依靠主观评估, 通过人肉眼查看编码的不同序列, 运动剧烈的画面看马赛克复杂的画面需看细节录屏密集文字看边缘锐度等等; 客观评估需要用 PSNR
PSNR 评估是对编码器性能的评估, 在排除网络影响的情况下, 依赖一些视频序列评估编码器的编码质量
同时视频测试还需要看一下码率控制, 看一下输出码率是否符合设置给编码器的码率;
视频测试还需要考虑移动端设备的性能, 相同编码参数下的 CPU 内存的占比情况;
测试执行:
测试环境会用到 MCN Android 端去搜集实时音 A 端和实时音 B 端的数据, 需要用 network emulator 模拟一些网络参数的影响, 然后去测试工具平台上进行评估
音频优化测试
音频决定了 70% 的用户体验, 虽说用户对画面的直观感受是以看为主, 以听为辅如果说一个主播在直播时只有画面没有声音, 这将直接影响用户体验; 如果主播直播时声音断断续续, 或者主播声音质量较低, 都会影响直播的质量
在音频方面面临的挑战有: 音频编码器, 不同的音频编码器有 Opus,AAC 等, 这些编码器里面的部分算法不太一样, 其中包括对音频的处理, 对声音峰值的处理, 对网络参数的应对, 它的处理方式不太一样实时音端的编码器用的是 Opus,Opus 相对于 AAC 来说, 编码码率会更低, 能够提供一些更高质量的音频体验; 网络对音频体验也有影响, 无论音频还是视频都会受网络的影响; 回声消除对音频体验也有影响, 如果没有回声消除, 用户的音频体验会相对较差; 啸叫以及安卓设备的差异都会对音频质量产生影响
音频质量的评估
音频从 IP 电话开始发展, 音频的技术处理已经相对成熟, 同时对音频的测试技术也相对成熟, 目前有较多付费软件可以实现对音频质量的评估, 包括 VQT 等;
VQT: 语音质量客观评估工具, 可以包括 POLQA(ITU-T P.863),PESQ(ITU-TP.862),PESQLQ / LQO(P.862.1),PESQ WB(P.862.2),PAMS(ITU-TP.800)和 PSQM / PSQM +(ITU-TP.861)等音频质量的评估;
目前网易云信使用 VQT 中的 POLQA 来评估网络变化对音频的影响, 该评估主要使用了 MOS 分值, 这是衡量通信系统语音质量的重要指标, 5 分为评估的最高分;
安卓端的覆盖策略首先会提供一个线上数据收集平台, 根据不同的手机型号提交测试需求, 也会挑选市面上 TOP20 的机型去做覆盖, 也会挑选一些用户反映问题最多的机型去做一些针对性测试覆盖;
VQT 中 POLQA 的环境配置:
优化后的 POLQA 环境配置:
优化后的 POLQA 环境配置可以对网络参数进行评估, 对数据进行整合, 实现多组数据的对比, 实现自动化结果的展示
来源: http://geek.csdn.net/news/detail/256474