如何做好 Android 端音视频测试?
在用户眼中,优秀的音视频产品应该具有清晰、低延时、流畅、秒开、抗丢包、高音效等特征。为了满足用户以上要求,网易云信的工程师通过自建源站,在SDK端为了适应网络优化进行QoS优化,对视频编码器进行优化,同时对音频算法进行优化。
推荐阅读
《短视频技术详解:Android端的短视频开发技术》
《如何快速实现移动端短视频功能?》
弱网环境测试
网易云信直播项目上线后,出现了音视频卡顿的问题,音视频卡顿现象通常出现在网络条件不是特别理想的情况,一般直播画面频繁出现缓冲标志或者直播画面一卡一卡的现象。
造成直播视频卡顿的原因:
1、CDN 节点覆盖不全:CDN服务器覆盖不足导致区域卡顿、运营商覆盖力度不足导致区域性卡顿;
2、CDN 接流节点不佳:主播上行推流卡顿导致直播卡顿;
3、主播网络差:数据上传受阻;
4、观众网络差: 数据下行受阻;
分析解决策略:
1、CDN节点覆盖不全:接入多家CDN节点,尽可能覆盖全球网络;
2、CDN接流节点不佳:自建源站;
3、主播网络差:SDK开发对QoS上行调整;
4、观众网络差:SDK开发对QoS下行调整;
测试需求:直播端QoS测试;
测试难点:
1、如何实现低成本、高效率的弱网环境?
2、怎样的网络才是导致用户卡顿的弱网环境?
3、弱网优化参数这么多,如何高效提取分析数据?
4、测试完了,怎么可以快速提供简洁清晰的结果给开发?
弱网测试工具:
弱网损伤仪、network emulator、fiddler、tc;
弱网损伤仪成本比较高,使用复杂;network emulator是微软的开源工具,可以实现带宽、丢包、延时、抖动等弱网参数的限制,被称为简易版本的弱网损伤仪,实现成本比较低,最终搭建弱网环境选择的是networkemulator工具;
network emulator工具使用建议:
1、办公环境内使用人多时,4G信号通道出现拥塞,虽然网络上行下行带宽足够,但网络丢包严重,造成限制网络不稳定的现象;
解决方法:开通支持开启5G信道的无线热点,部分缓解网络拥塞的现象;
2、弱网限制效果验证;
弱网环境参数选择;
常见弱网限制参数;
带宽、丢包、延时、抖动、综合网络;
具体数值选择方法:
第一步:逼近法,对上述限制参数从由高到低、由低到高给出范围;
第二步:业界标准和产品需求去反向要求开发优化的力度;
第三步:通过大数据筛选用户卡顿场景数据,覆盖用户出现卡顿的场景;
弱网测试常用参数:
测试常用高清视频分辨率为640*480,一般要求码率为800kbps以上,带宽限制一般设置为三挡,800kbps、600 kbps以及400kbps;丢包会设置5%、3%、1%;延时会设置300ms、200ms、100ms等限制;综合网络情况是将带宽、丢包以及延时进行结合的参数;为了监控用户实际使用的一些情况,也会进行一些4G、3G网络的覆盖;
测试流程:
开发提交测试之后,测试会针对入网效果进行简单测试,针对网络场景发现的bug返回给开发继续优化,开发优化完成之后传给测试,测试将结果再传给开发进行详细优化,过程需要反复进行,下图为测试开始进行的环境图:
直播与播放连接在同一个Wifi下面,用network emulator进行弱网限制,直播与播放都是从CDN拉流,然后获取直播和播放端一些音视频相关的统计数据,在播放端通过观测方式主观评测优化效果。
测试效率分析:
1、Android 端数据手工收集;
2、数据导入excel分析,耗时间;
3、测试工作量比较大;
解决策略:
1、Android 端开发 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环境配置可以对网络参数进行评估,对数据进行整合,实现多组数据的对比,实现自动化结果的展示。
以上就是安卓端音视频测试全过程,想要获取更多产品干货、技术干货,记得关注网易云信博客。
如何做好 Android 端音视频测试?的更多相关文章
- Android IOS WebRTC 音视频开发总结(七十)-- 移动端音视频技术优化的七个方向
最近直播很火,很多朋友对背后的技术比较感兴趣,所以今天我们整理一篇关于移动端视频优化的文章,这篇文章是我朋友在一个技术大会上分享过的,更多内容请关注我们的微信公众号:rtcblacker 视频直播为什 ...
- pc端和android端应用程序测试有什么区别?(ps面试题)
pc端和android端应用程序测试有什么区别?(ps面试题) [VIP7]大连-凭海临风(215687736) 2014/4/10 8:56:171.测试环境不同PC平台一般都是windows an ...
- Android WebRTC 音视频开发总结(一)
本系列文章主要总结和分享WebRTC开发过程中的一些经验,转载请说明出处(博客园RTC.Blacker),更多交流与合作请看页面上方的子标题! 一.WebRTC是什么? 可能您还不知道WebRTC是什 ...
- 【转】Android WebRTC 音视频开发总结(一)
http://www.cnblogs.com/lingyunhu/p/3578218.html 本系列文章主要总结和分享WebRTC开发过程中的一些经验,转载请说明出处(博客园RTC.Blacker) ...
- Android WebRTC 音视频开发总结
www.cnblogs.com/lingyunhu/p/3621057.html 前面介绍了WebRTCDemo的基本结构,本节主要介绍WebRTC音视频服务端的处理,,转载请说明出处(博客园RTC. ...
- Android开发 音视频开发需要了解的专业术语知识
前言 在摸索一段时间的音视频开发后,越来越发现这个坑的深度真是特别的深. 除了了解Android自带的音视频处理API以外,还得了解一些视频与音频方面的知识.这篇博客就是主要讲解这方面的专业术语.内容 ...
- 如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用
疫情期间,很多线下活动转为线上举行,实时音视频的需求剧增,在视频会议,在线教育,电商购物等众多场景成了"生活新常态". 本文将教你如何通过即构ZEGO sdk在Android端搭建 ...
- Android WebRTC 音视频开发总结(三)-- 信令服务和媒体服务
前面介绍了WebRTCDemo的基本结构,本节主要介绍WebRTC音视频服务端的处理,,转载请说明出处(博客园RTC.Blacker). 通过前面的例子我们知道运行WebRTCDemo即可看到P2P的 ...
- Android 开发 音视频从入门到提高 任务列表 转载
<Android 音视频从入门到提高 —— 任务列表> 1. 在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 Vi ...
随机推荐
- MyEclipse配置和使用Maven
maven是管理项目的,myeclipse是编写代码的.第一次写项目都要配置好多东西,很麻烦,now 来看看怎样新建一个maven项目. 工具/原料 myeclipse maven 方法/步骤 ...
- 洛谷 P4708 画画
题意 在所以置换下,本质不同的各个极大连通子图均含有欧拉闭迹的\(n\)阶图个数 做法 务必先做完这题再看此题解,因为会省略大部分分析了 仍是从边入手,隔外限制:各个点度数是偶数 某个因子内\((m= ...
- JDK下载安装与环境变量配置图文教程【超详细】
JDK下载安装与环境变量配置图文教程[超详细] 创建时间:2019年11月13日11时02分 文章目录 1. JDK介绍 1.1 什么是JDK? 1.2 JDK版本介绍 2. JDK下载与安装 3.w ...
- Nginx出现403 forbidden
我装在linux上的nginx版本是1.16 当我在nginx/conf/nginx.conf文件里配置完代理 location /ds { root /home/nginx; index index ...
- .Net Core的总结
一.什么是.NET Core .NET Core是一个开源通用的开发框架,支持跨平台,即支持在Window,macOS,Linux等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式/物联网方案 ...
- Csla One or more properties are not registered for this type
在实际运行中,好好运行的程序出现了以下问题: 2019-12-27 10:40:00,164 [DefaultQuartzScheduler_Worker-2] ERROR IBeam.BCPool. ...
- H3C端口隔离
一.端口隔离简介 为了实现端口间的二层隔离,可以将不同的端口加入不同的VLAN,但VLAN资源有限.采用端口隔离特性,用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间二层隔离,而不关心这些端 ...
- S3C2440的时钟原理
Crystal 无源晶体Oscillator 有源晶体(里面有有源器件) 无源晶振内只有一片按一定轴向切割的石英晶体薄片,供接入运放(或微处理器的XTAL端) 以形成振荡.有源晶振内带运放,工作在最佳 ...
- navicat连接mysql8.0+版本报错2059
ERROR 2059 : Authentication plugin 'caching_sha2_password' cannot be loaded 问题: 连接Docker启动的mysql出现:E ...
- 2.4测试赛AC代码临时保存
//H #include<cstdio> #include<cstdlib> #include<cstring> #include<stack> usi ...