摄像头编码能力测试方案

背景

  • 随着项目开发的多样化,不同的项目需要使用不同平台的摄像头来采集和传输视频信号,或者也有相同项目,需要使用不同平台适配的情况。
  • 摄像头的编码能力会影响视频的质量和效率,因此需要对不同平台的摄像头进行编码能力的测试和评估。
  • 编码能力的测试和评估需要考虑多个方面,包括编码参数、编码效率、编码质量、编码稳定性等。
  • 编码质量的评估需要使用客观的算法,来模拟人眼的主观感受,并给出客观的评分。

测试方案:

  • 编码参数的选择:为了公平地比较不同平台的编码能力,需要使用相同的编码参数。方案选择使用H.264编码格式,1440p分辨率,20fps帧率,2Mbps码率,CRF=23质量。这些参数是比较常用的视频编码参数,可以适用于多种场景和需求。
  • 视频内容的选择:为了反映不同平台的编码效果,需要选择一些具有代表性的视频内容,例如,静态的风景,动态的人物,复杂的纹理等。本文选择使用以下四种视频内容:(内容来自xiph.org
    • Big Buck Bunny:一部3D动画短片,具有丰富的颜色和细节,以及多样的动作和场景。
    • Crowd Run:一段拍摄人群奔跑的视频,具有高速的运动和大量的细节。
    • Park Joy:一段拍摄公园里的的视频,具有中等的运动和颜色。有大量移动的树叶和阴影等细节。
    • Old Town Cross:一段拍摄老城区的十字路口的视频,具有低速的运动和暗淡的颜色。
  • 测试时长的选择:为了保证测试的准确性和可重复性,需要确定每种视频内容的测试时长。本文选择使用10秒的测试时长,这样可以覆盖视频内容的主要特征,同时也可以控制测试的时间和数据量。
  • 本方案使用VMAF测试工具,它是由Netflix开发的一种客观的全参考视频质量指标,可以根据人类视觉模型和机器学习方法,预测视频质量的主观感受。VMAF的分数范围从0到100,0表示最差的视频质量,100表示最佳的视频质量。

参考

VMAF: The Journey Continues

测试样例

  1. 基于x86本地测试,使用FFMPEG对图像进行编码。
1
2
3
4
#将视频编码
ffmpeg -hwaccel auto -i park_joy_1080p50.y4m -qp 50 park_joy_1080p50_compress.mp4
#将编码后视频重新扩展为YUV图像
ffmpeg.exe -i .\park_joy_1080p50_compress.mp4 -s 1920x1080 -pix_fmt yuv420p .\park_joy_1080p50_compress.y4m

生成图像截图:

原始视频:

1
2
#调用vmaf工具分析
.\vmaf.exe -r .\park_joy_1080p50.y4m -d .\park_joy_1080p50_compress.y4m --output output4.xml --feature psnr --model version=vmaf_v0.6.1

生成评分:

可见在-qp 50情况下,编码后视频平均分为mean="23.912806"分。分数较低。重新修改qp值为30(提高质量),重复以上步骤:

生成图像截图:

生成评分:

可见在-qp 30情况下,评分达到mean=“97.287654”,已经基本接近原始视频水平。同时编码后视频大小有明显变化。

此外,需要特别关注min="87.711983"最低分指标所在的视频帧在人眼实际观测下的质量。因为从心理上来说,人们可能更容易发现质量明显较低的图像。