OTT设备无损录屏方案

简介: OTT的设备越来越多,用户量也越来越大,因此性能问题特别是应用启动和页面加载耗时的评测需求也越来越多,目前响应耗时类的自动化测试主要有两种方案:一种是通过埋点,一种是通过录屏。其中埋点方案最大的缺点就是埋点时间和实际时间不一致,特别是一些存在二次刷新的场景,所以埋点方案无法反映用户的真实体感,因此本文主要介绍录屏方案在OTT端的实践。

方案调研


OTT设备目前大部分都是基于Android系统的,因此可以直接使用之前文章《一分钟教你Android、iOS如何实现自动化录屏,超实用!》中提到的方法,优点是方便,不需要借助任何外部设备,但缺点也很明显就是需要消耗设备资源,会对系统本身性能产生影响,进而影响到应用启动和页面加载的响应耗时。


另外一种方案是利用OTT的特性,通过外设采集HDMI的输出然后将其转为USB的输入,然后在PC上用ffmpeg采集USB的输入内容即可完成屏幕的录制,这种方案的优点是对系统性能几乎没有任何影响,但缺点的话就是需要额外的硬件设备。


硬件准备


首先我们肯定是需要准备好待测试的OTT设备以及执行自动化测试任务的PC执行机(Linux),然后还需要两个配件:

1、HDMI转USB采集卡

image.png

2、HDMI线

image.png


软件准备


需要在执行自动化的机器上安装以下两个软件包:

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: 指定输出视频分辨率
相关文章
|
Java 关系型数据库 调度
spring boot2 整合(四)定时任务Scheduled || Quartz并持久化
在进入正文前,我想把所有java可以实现的定时任务介绍一下,其实这个也是底层实现思路。 本教程大概目录: 线程等待实现定时任务 用Timer实现定时任务 用ScheduledExecutorService实现定时任务 Quartz 定时任务框架单...
2177 0
|
Java
如何获取第三方应用授权app_auth_token
一,说明    1.第三方应用文档:[url]https://docs.open.alipay.com/20160728150111277227/intro[/url]     2.作用:代替商户发起相关逻辑请求 二,配置    1.
5259 12
|
SQL Java Maven
@Transactional 自调用失效问题解析
@Transactional 自调用失效问题解析
624 0
@Transactional 自调用失效问题解析
|
机器学习/深度学习 人工智能 资源调度
深度强化学习技术概述
在本文中详细介绍了深度强化学习技术,将强化学习分成三大类(value-based算法、policy-based算法及结合两者的AC算法)来进行介绍。首先,从数学理论角度介绍了强化学习;接着,从不同适用方向对两类深度强化学习算法进行介绍:基于值函数(Value-based)的深度强化学习算法DQN和基于策略(Policy-based)的深度强化学习算法PG。最后,介绍目前应用广泛的结合前两个算法的结合物AC(Actor-Critic)算法。
1581 2
深度强化学习技术概述
|
小程序
微信小程序中引导用户关注公众号实现方案详细说明
之前讲过如何利用公众号针对指定用户完成业务操作之后实时发送消息
微信小程序中引导用户关注公众号实现方案详细说明
|
缓存 中间件 流计算
如何解决 Netty Channel.isWritable 返回 false
在 Netty 里,有4个方法用来查询 Channel 的状态:isOpen,isRegistered,isActive,isWritable,其中,isWritable 在并发量很高时会返回很多 false。 isWritable 是什么含义? isWritable:Returns true if and only if the I/O thread will perform the req
2862 0
如何解决 Netty Channel.isWritable 返回 false
|
机器学习/深度学习 数据采集 人工智能
基于深度学习设计AI麻将程序
基于深度学习设计AI麻将程序
1983 0
基于深度学习设计AI麻将程序
gitea配置全局代理用于镜像github源
gitea配置全局代理用于镜像github源
2194 0
|
Linux Shell
linux中cat more less head tail 命令区别
1、cat 显示文件连接文件内容的工具; cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。 比如:[root@localhost ~]# cat /etc/fstab 为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;1.
1824 0

热门文章

最新文章