背景
OTT的设备越来越多,用户量也越来越大,因此性能问题特别是应用启动和页面加载耗时的评测需求也越来越多,目前响应耗时类的自动化测试主要有两种方案:一种是通过埋点,一种是通过录屏。
其中埋点方案最大的缺点就是埋点时间和实际时间不一致,特别是一些存在二次刷新的场景,所以埋点方案无法反映用户的真实体感,因此本文主要介绍录屏方案在OTT端的实践。
方案调研
OTT设备目前大部分都是基于Android系统的,因此可以直接使用之前文章《一分钟教你Android、iOS如何实现自动化录屏,超实用!》中提到的方法,优点是方便,不需要借助任何外部设备,但缺点也很明显就是需要消耗设备资源,会对系统本身性能产生影响,进而影响到应用启动和页面加载的响应耗时。
另外一种方案是利用OTT的特性,通过外设采集HDMI的输出然后将其转为USB的输入,然后在PC上用ffmpeg采集USB的输入内容即可完成屏幕的录制,这种方案的优点是对系统性能几乎没有任何影响,但缺点的话就是需要额外的硬件设备。
硬件准备
首先我们肯定是需要准备好待测试的OTT设备以及执行自动化测试任务的PC执行机(Linux),然后还需要两个配件:
1、HDMI转USB采集卡
2、HDMI线
软件准备
需要在执行自动化的机器上安装以下两个软件包:
sudo apt install ffmpeg
sudo apt install v4l-utils
执行录屏
将HDMI转USB采集卡的USB口连接到我们执行自动化的机器,HDMI口通过HDMI线连接到OTT设备上,首先执行下面的命令查看录屏输入端口:
v4l2-ctl --list-devices
USB Video: USB Video (usb-0000:00:14.0-3.1):
/dev/video2
/dev/video3
然后就可以在执行自动化的机器上执行下面的命令完成OTT设备的屏幕录制了:
ffmpeg -t 10 -y -f v4l2 -i /dev/video2 output.mp4 -video_size hd720
参数说明:
-t 10: 录制时长,单位秒,这里主要是外部传入,实际使用过程中10-15s就可以;
-y :强制覆盖,如果文件重名直接覆盖;
-f v4l2: 视频挂载的设备,linux下为v4l2;
-i /dev/video2 : 指定录屏输入端口
output.mp4: 输出的文件,注意是pc上的文件路径;
-video_size hd720: 指定输出视频分辨率