我有一个Android应用程序,允许进行视频通话,我需要测试视频的质量,如果这两个视频流匹配正确。
如何在自动过程中测试它?
我想过把两个设备放在一起,一个在前面,中间一个用一个摄像头记录一个设备,另一个用前置摄像头记录,然后比较这两个视频,但是这个解决方案看起来太复杂了。
发布于 2018-03-12 10:06:20
然后比较这两个视频
简单的比较是行不通的,视频正在被压缩和解压缩,延迟被添加到中间,所以即使在最好的情况下,您也需要对流。
我们一步一步地走-
您希望使用一些算法将参考视频流与远程接收的视频流进行比较。
简单地使用相机会造成比较问题,因为您没有参考流,而且条件也可能在不同的测试中发生变化,从而使结果不一致。
通常最好的想法是注入预先制作的视频流,从性能上看,您可能希望将其存储在SD卡上的设备上。
这里有多个选项--您可以使用亚行记录工具简单地记录屏幕
在某些手机上,您可以将流输出到hdmi,并使用传统工具将其记录下来。
如果可能的话,您的软件可以将解码的视频流输出到文件中,而不是流,这里的主要缺点是没有对软件进行端到端的测试。
您首先需要及时对齐您的视频流,实现这一目标的一种方法是将一些sycn模式插入到视频流本身,例如可以通过软件分析的3D条形码。其他选项可能是在溪流中有一些可以识别的东西,比如某种移动元素。
最简单和最可靠的方法可能是起诉MOS,特别是使用PSNR,因为它在许多平台和环境中都受到计算支持。
视频消耗了大量的空间,在测试期间,您希望您的原始和结果驻留在SD卡或内部内存中,同时仍然保持高质量的视频本身。
如果您的存储是有限的,您可以妥协的合成或重复视频流。
如前所述,您希望在手机本身上做很多事情(PSNR可以脱机完成),这会影响软件本身和移动操作系统的性能。
没有什么可以做的,但是在测试时记住这一点总是个好主意。
虽然不完美,但我有解决方案使用静止图像的视频流是用来评估视频质量。
最简单的方法是使用亚行获取屏幕截图,另一种更好的方法是使用高速相机来捕捉屏幕。
这两种解决方案都需要时间同步,外部摄像头可以与手机安装在一个盒子里(一个大的纸板盒工作得很好)。
这两种方法都会与之前捕获的参考图像进行比较,但会出现一些错误,例如使用ImageMagick。
我的经验并不完全是这样的,它是可行的,但测试往往是不稳定的。
这在Android和使用高性能视频编码/解码时尤其如此,因为它依赖于硬件,并且随模型和操作系统版本的变化而变化。
发布于 2018-03-12 13:21:05
可以基于上下文对应用程序进行多个测试。一些重要的测试用例场景如下
https://sqa.stackexchange.com/questions/32498
复制相似问题