排查 Device.Streaming 测试问题

若要排查 Device.Streaming 测试发生的问题,请执行以下步骤:

  1. 查看以下 Windows Hardware Lab Kit (Windows HLK) 主题:
  2. 查看 Windows HLK 发行说明,了解当前测试问题。
  3. 对于失败的测试,请在 Windows HLK Studio 测试日志中查找可用信息。 如果找到可用信息,请解决问题并重新运行测试。
  4. 使用 Microsoft.Windows.CameraDebug TraceLogging 提供程序获取日志,以排查从驱动程序到相机管道的错误。

有关 HMFT 测试的具体信息

硬件媒体基础转换 (HMFT) 解码和编码测试需要以下各项:

  • 用于 HMFT 多媒体测试的 Windows HLK 测试的补充内容:从 Windows 开发人员中心下载并安装用于 HMFT 多媒体测试的 Windows HLK 测试的补充内容。 有关安装和配置补充内容的详细信息,请参阅 HMFT 测试先决条件

  • Windows HLK 随附的标准内容文件。

如果补充内容在客户端计算机上不可用,请确保在运行 HMFT 测试时正确配置 ContentSource 参数。

排查网络摄像头视频捕获问题

错误 说明 解决方案/解决方法

在设置过程中,测试找不到兴趣区域 (ROI)。

测试将查找测试中已知位置的 ROI 标记(黑色和白色圆圈)。 如果测试无法识别 ROI 标记,测试将无法正常运行。 如果无法检测到 ROI,可能是由于摄像头瞄准不当或摄像头无法使用视频捕获(例如房间太暗)。

根据测试过程重新放置摄像头,并确保摄像头在测试光线条件下提供可用图像。

设置过程中,未将 ROI 放置在摄像头视图范围内。

测试将查找测试中已知位置的 ROI 标记(黑色和白色圆圈)。 如果测试无法识别 ROI 标记,测试将无法正常运行。 视野较小的摄像头(例如后置摄像头)可能需要放置在距离测试目标 0.5 米以上的位置,以捕获所需的 ROI。

重新放置摄像头,并确认摄像头在测试光线条件下提供可用图像。 为避免测量视野要求不准确,请在调整位置时将新的距离输入测试应用程序中。

潜在故障的根本原因以及用于改进网络摄像头视频捕获的建议

图像敏锐度

空间分辨率

空间分辨率是使用模数传输函数(空间频率响应)来测量的。 具体而言,就是使用指标 MTF30,它是用于实现 MTF = 0.3 的周期/像素数。

MTF30 低于 0.3 时,图像过于柔和或模糊。 尽管此问题可能是由质量不佳的光学元件引起的,但它通常是由于图像信号处理(图像缩放、去马赛克等)差引起的。 MTF30 高于 0.8 时,图像可能锯齿化严重。 此问题通常是由图像信号处理质量差引起的,特别是缩放(例如,用最邻近插值代替抗锯齿的双三次插值)。

聚焦范围(景深)

无论是否使用自动对焦,聚焦范围的要求是摄像头对 0.3m 至无限远的物体进行对焦。 MTF30 空间分辨率指标可确定聚焦范围。 如果此指标在手动聚焦的摄像头上失败,则可能是由设计问题引起的;例如,对于笔记本/平板电脑,对 0.5m 的目标距离进行对焦时,理论景深为 > 0.3m 到无限远,对于一体机,理论景深为 0.7m。 如果目标距离正确,则可能需要更换光学器件才能获得正确的景深。

如果使用自动对焦镜头但未满足此指标要求,则自动对焦算法中的问题是最可能的原因。

噪音

空间信噪比

空间噪声通过在测试图表中使用中性灰色(0.7 密度)贴片来测量单个图像中的空间变化。 如果未能满足此指标要求,很可能是由于传感器质量差(灵敏度不足)或图像噪点不足。 应选择照度 < 50 勒克斯的 SNR10(在 0.7 密度贴片上实现 SNR=10 所需的照度水平,无去噪)图像传感器。 一定程度的图像去噪是可以接受的,但不应显著降低纹理锐度。 Lync 徽标视频捕获规范 (Rev G) 中提供了一种测量纹理锐度的方法(独立于 Windows HLK)。 有关 Lync 徽标规范的详细信息,请参阅 USB 外围设备和 Lync 电脑测试规范

时域信噪比

时域噪声通过使用测试图表中的中性灰色(0.7 密度)贴片来测量两个图像中的时域差异。 如果未能满足此指标要求,很可能是由于传感器质量差(灵敏度不足)、自动增益 (AGC) 和自动曝光控制 (AEC) 不佳、电力线频率控制差或图像去噪不足。 不稳定的 AEC/AGC 控制可能会导致明显的闪烁。 电源线频率控制用于检测 50/60 Hz 照明。 调整曝光量;如果效果不好,视频中会出现闪烁(使用滚动闪烁)。

色彩质量

中性灰色贴片(0.7 密度)的亮度

自动增益和曝光控制应生成图像,以便测试图表中的中性灰色贴片具有 128 +/- 40 灰度级的亮度。 如果此操作失败并且亮度为 < 88,则是由于 AEC/AGC 不佳或图像传感器的灵敏度较低。 在大多数情况下,可以通过优化 AEC/AGC 来解决此问题。 如果亮度为 > 168,则 AEC/AGC 也存在问题。

颜色精度

颜色精度是使用 max 和均值 ΔC₀₀(相对于 ColorChecker 测试图表中的已知颜色)来测量的。 未能满足此指标要求可能与白平衡或颜色均匀性有关,这两者都可以通过调整图像信号处理来改善。

Gamma

伽玛测量用于在视频或静止图像中编码亮度或三色值的非线性操作。 伽玛值 > 0.75 时,图像可能看起来过于饱和;伽玛值 < 0.4 时,图像饱和度不足。 通过在图像信号处理中调整伽玛处理,可以解决这两个问题。

Geometry

垂直视野

面向用户的摄像头的垂直视野要求是 ≥ 35 INVALID USE OF SYMBOLS;对于后置摄像头,应为 ≥25 INVALID USE OF SYMBOLS。 如果此测试失败,可能是图像裁剪的原因(未使用整个图像传感器),可以在图像信号处理中修复此情况。 但是,此问题更有可能是镜头设计引起的。 在这种情况下,需要新的或修改过的镜头。

定时

帧速率

视频帧速率必须为 ≥ 14 FPS(20 勒克斯的光照强度下)和 ≥ 29 FPS(80 勒克斯的光照强度下)。 如果帧率小于这些要求,通常可以通过调整自动曝光和增益控制来修复此问题。

延迟

视频延迟测量光子进入摄像头到光子离开显示屏的时间。 视频延迟要求是 ≤ 80ms(对于 MIPI 摄像头)和 ≤ 120ms(对于 USB 摄像头);此失败通常是由于帧率较低或使用一个或多个帧缓冲区的图像信号处理造成的。 可以通过改进摄像头的图像信号处理来解决这两个问题。

音频/视频同步

音频/视频同步测量捕获的音频和捕获的视频之间的时间差。 此指标的故障通常是由视频延迟或音频延迟失败引起的。 有关详细信息,请参阅通信音频保真测试(系统、手动)

捕获和交付第一张照片或第一个视频帧的时间

第一个视频和照片帧必须在开始拍摄视频或照片的 500 毫秒内捕获。 达不到这一要求的最常见原因是自动曝光和增益控制收敛缓慢,可以通过调整 AEC/AGC 来进行改进。

在后续请求(稳定状态)中交付照片的时间

后续照片必须在 250 毫秒(无闪光灯)和 500 毫秒(有闪光灯)内拍摄。 达不到这一要求的一个常见原因是,自动曝光和增益控制收敛缓慢,可以通过调整 AEC/AGC 来进行改进。

更改分辨率的时间(任何媒体类型)

更改分辨率的时间(例如从 720p 改为 360p)必须 ≤ 250 毫秒。 达不到这一要求的一个常见原因是,自动曝光和增益控制收敛缓慢,可以通过调整 AEC/AGC 来进行改进。

切换摄像头的时间

更改摄像头的时间(例如,从前置摄像头切换到后置摄像头)必须 ≤ 750 毫秒。 达不到这一要求的一个常见原因是,自动曝光和增益控制收敛缓慢,可以通过调整 AEC/AGC 来进行改进。

无干扰/抖动

如果视频在 20 勒克斯照度下最大帧间时间 ≤ 133 毫秒、在 80 勒克斯照度下最大帧间时间 ≤ 66 毫秒,并且抖动 ≤ 7 毫秒(在视频呈现器中测量),则视频无干扰。 不能满足最大帧间时间和抖动的最常见原因是没有达到目标帧率。 例如,24 FPS 视频摄像头无法同时满足最大帧间时间和抖动要求。 在这些情况下,应将帧率调整为 15 FPS(20 勒克斯)和 30 FPS(80 勒克斯)。

其他

CPU 使用率

系统捕获和渲染视频时,CPU 使用率必须 ≤ 5%。 失败的常见原因是 CPU 用于图像信号处理。 所有关键 ISP 都应卸下负载,以便不使用 CPU 或优化为使用率 ≤ 5%。

防闪烁解决方案

在 50 或6 0 Hz 的照明下,以错误的曝光(电源线频率)模式成像可能会导致闪烁,从而显著降低 SNR。 需要手动控制电源线路频率并进行测试。 最常见的故障是不支持手动电源线路频率控制。

Microsoft.Windows.CameraDebug TraceLogging

  • 名称:
    • Microsoft.Windows.CameraDebug
  • GUID:
    • {9EE22E19-9672-4625-A9FF-C2B711AD923F}
  • 事件:
    • DriverCriticalError
    • DriverError

目前,此提供程序仅用于记录摄像头引脚转换期间的关键错误。 下表汇总了事件结构和内容。

组件 ErrorCode ProcessId ThreadId OsErrorCode
(可选)

说明导致此事件的功能,类型为字符串。
可能的值包括:
- Driver::Active
- Driver::Pause
- Driver::InActive

原始驱动程序报告的错误,HRESULT

发生错误的进程 ID

发生错误的线程 ID

如果驱动程序报告的错误被转换为不同的错误,则为 HRESULT

记录和显示事件

有关其他指导,请参阅记录和查看 TraceLogging 事件

以下示例是用于捕获 Microsoft.Windows.CameraDebug TraceLogging 提供程序事件的 .wprp 文件:

<?xml version="1.0" encoding="utf-8"?>
<WindowsPerformanceRecorder Version="1.0" Author="Microsoft Corporation" Copyright="Microsoft Corporation" Company="Microsoft Corporation">
  <Profiles>
    <EventCollector Id="EventCollector_WindowsCameraDebugTraceLoggingProvider" Name="WindowsCameraDebugTraceLoggingProvider">
      <BufferSize Value="64" />
      <Buffers Value="4" />
    </EventCollector>

    <EventProvider Id="EventProvider_WindowsCameraDebugTraceLoggingProvider" Name="9EE22E19-9672-4625-A9FF-C2B711AD923F" />

    <Profile Id="WindowsCameraDebugTraceLoggingProvider.Verbose.File" Name="WindowsCameraDebugTraceLoggingProvider" Description="WindowsCameraDebugTraceLoggingProvider" LoggingMode="File" DetailLevel="Verbose">
      <Collectors>
        <EventCollectorId Value="EventCollector_WindowsCameraDebugTraceLoggingProvider">
          <EventProviders>
            <EventProviderId Value="EventProvider_WindowsCameraDebugTraceLoggingProvider" />
          </EventProviders>
        </EventCollectorId>
      </Collectors>
    </Profile>

    <Profile Id="WindowsCameraDebugTraceLoggingProvider.Light.File" Name="WindowsCameraDebugTraceLoggingProvider" Description="WindowsCameraDebugTraceLoggingProvider" Base="WindowsCameraDebugTraceLoggingProvider.Verbose.File" LoggingMode="File" DetailLevel="Light" />
    <Profile Id="WindowsCameraDebugTraceLoggingProvider.Verbose.Memory" Name="WindowsCameraDebugTraceLoggingProvider" Description="WindowsCameraDebugTraceLoggingProvider" Base="WindowsCameraDebugTraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Verbose" />
    <Profile Id="WindowsCameraDebugTraceLoggingProvider.Light.Memory" Name="WindowsCameraDebugTraceLoggingProvider" Description="WindowsCameraDebugTraceLoggingProvider" Base="WindowsCameraDebugTraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Light" />

  </Profiles>
</WindowsPerformanceRecorder>

Device.Streaming 测试

排查 Windows HLK 问题