For the complete documentation index, see llms.txt. This page is also available as Markdown.

故障排除与诊断

使用结构化清单和决策树,诊断并解决 Vision 问题——发布失败、空白画面、权限错误以及特定平台问题。

诊断并解决 Vision 问题

大多数 Vision 问题可归为三类之一:发布器未在发布,视频流为空白或不正确,或帧源卡在非就绪状态。本页涵盖这三种情况,先从最快的一线工具开始,再处理平台特定问题。可使用决策树快速进行可视化诊断。

使用 VisionDebugPreview 进行一线诊断

VisionDebugPreview 是可用的最快诊断工具。在按下 Play 之前将其添加到任意场景 GameObject 上——它会显示实时 RenderTexture 输出以及一个统计信息叠加层,其中包括当前 VisionSourceState、FPS 和帧计数。

添加组件: Convai/Vision/Vision 调试预览(仅编辑器)

你会看到的情况
其含义

有实时图像,FPS > 0

帧源 就绪 且正在生成帧

空白/黑色图像,FPS = 0

帧源未在生成帧——检查 State 是位于 ErrorKind 如下

叠加层完全未显示

未找到活动帧源——请显式分配一个或启用 回退到活动帧源

叠加层出现了但显示占位符

已分配帧源,但尚未启动——检查其 State 在 Inspector 中

请参见 调试预览 查看完整配置选项。


一线排查

在出现问题时按顺序执行此检查清单。大多数问题会在第 1 或第 2 步解决。

1

验证连接类型

选择 ConvaiRoomManager 在 Hierarchy 中。确认 连接类型 被设置为 视频.

ConvaiVisionPublisher 在仅音频连接上永远不会发布,无论其他任何组件如何配置。这是最常见的 IsPublishing 仍保持 false.

2

检查帧源状态

添加 VisionDebugPreview 将其添加到任意场景 GameObject 并按下 Play。统计信息叠加层会显示当前 VisionSourceState.

  • 就绪 → 帧源正常工作。转到第 3 步。

  • 降级 → 捕获正在运行,但帧健康检查失败——请参见空白或黑色视频流。

  • 失败 → 检查 ErrorKind 是位于 StatusMessage 帧源组件上的——请参见帧源错误。

  • 等待授权 → 在 Android / iOS 上,正在等待用户授予相机权限——请参见移动权限问题。

  • 空闲或正在启动 → 帧源尚未完成启动。检查组件是否已启用,以及其 目标摄像机 是否已分配,并且 Console 中没有错误。

3

检查发布器上的 IsPublishing

添加一个临时脚本,或在 Play 模式下检查是否 ConvaiVisionPublisher.IsPublishingtrue。如果帧源 就绪IsPublishing 仍然 false:

  • 确认房间已 完全连接 ——不只是按下了 Play。

  • 请确认 ConvaiVisionPublisher已启用.

  • 如果 发布策略 被设置为 Manual,则调用 publisher.EnablePublishing(true) ——在此策略下,发布不会自动开始。

4

检查 Console 中的错误

查找带有以下标签的消息: [Vision], [ConvaiVisionPublisher],或 [CameraVisionFrameSource] 在 Unity Console 中。Vision 会使用源组件名称记录错误,从而可以轻松识别失败的组件。


常见问题

症状
可能原因
修复

IsPublishing 保持 false

ConvaiRoomManager.Connection Type 不是 视频

设置 连接类型视频

IsPublishing 保持 false

房间未连接(API 密钥、网络)

在以下位置验证 API 密钥 ConvaiSettings;检查网络;查看 Console

IsPublishing 保持 false

帧源从未到达 就绪

添加 VisionDebugPreview;检查 State 是位于 ErrorKind 帧源上的

IsPublishing 保持 false

发布策略为 Manual

调用 publisher.EnablePublishing(true) 从脚本中

IsPublishing 保持 false

ConvaiVisionPublisher 组件已禁用

在 Inspector 中启用该组件

调试预览中出现黑屏或空白画面

错误的 CameraCaptureMode 对于渲染管线

设置 Camera Capture ModeAuto on CameraVisionFrameSource

调试预览中出现黑屏或空白画面

目标摄像机 为空(Camera.main 未找到)

在……中显式分配一个相机 目标摄像机 字段

调试预览中出现黑屏或空白画面

VisionSourceState降级

启用 启用诊断帧健康探针 暂时,以识别原因

帧源卡在 等待授权

Android / iOS 相机权限对话框待处理

等待操作系统对话框;如果被拒绝, ErrorKind 变为 PermissionDenied

帧源处于 失败, ErrorKind = PermissionDenied

用户拒绝了相机权限

通知用户;在 Android 上,引导其进入应用设置重新授予权限

帧源处于 失败, ErrorKind = UnsupportedPlatform

QuestVisionFrameSource 运行在非 Quest 平台上

在 Editor 中属于预期——使用 CameraVisionFrameSource 供 Editor 测试

帧源处于 失败, ErrorKind = DeviceUnavailable

未找到请求的摄像头设备

留空 摄像头设备名称 留空以选择第一个可用设备,或验证设备名称

QuestVisionFrameSource失败

PassthroughCameraAccess 不在场景中

添加 PassthroughCameraAccess 组件,或将 透视相机访问 留空以进行自动发现

发布了错误的帧源

自动发现选择了错误的源

在……中显式分配正确的源 ConvaiVisionPublisher帧源组件 字段

VisionDebugPreview 叠加层为空白

未找到活动帧源

分配一个帧源,或启用 回退到活动帧源

VisionDebugPreview WebGL 上的叠加层为空白

没有 RenderTexture WebGL 上的路径

预期如此——WebGL 使用画布捕获;预览不适用

视频正在发布时,WebGL 上没有播放音频

浏览器要求在播放音频前有用户手势

确保用户在房间连接前已点击或与页面交互

视频已发布,但角色在视觉上没有响应

后端模型 / 会话配置

确认角色已在 Convai 仪表板中配置为多模态输入


空白或黑色视频流

黑色视频流表示帧源正在运行,但生成的是空帧或无效帧。 VisionSourceState 通常会是 就绪降级.

第 1 步——检查相机捕获模式

CameraVisionFrameSource,确认 Camera Capture ModeAuto。选择 BuiltInHooks 在 URP/HDRP 项目中会产生黑色视频流,因为 SRP 相机不会触发内置渲染回调。

第 2 步——确认目标相机正在渲染

已分配的相机必须处于活动状态、已启用且实际正在渲染。具有 Enabled = false 或其 GameObject 处于非活动状态的相机不会产生输出。

第 3 步——启用诊断帧健康探针

CameraVisionFrameSource,启用 启用诊断帧健康探针。这会执行逐帧同步像素回读,在检测到连续无效帧时记录到 Console。

第 4 步——检查后处理问题

某些后处理效果会以可能让捕获后端混淆的方式写入相机纹理。如果仅在启用后处理时画面为黑色,请尝试切换 Camera Capture ModeExplicitRenderCompatibility.


帧源错误

VisionSourceState 参考

State
含义
处理方法

空闲

捕获尚未开始

检查组件是否已启用以及发布器是否已启动

等待授权

正在等待操作系统相机权限(Android / iOS)

等待系统对话框;通过以下方式处理拒绝: ErrorKind = PermissionDenied

启动中

设备正在打开, RenderTexture 分配中

稍等片刻;如果卡住,请检查 Console 中的错误

就绪

捕获正在运行;正在生成帧

正常运行状态

降级

正在运行,但帧健康检查检测到问题

请参见空白或黑色视频流

已停止

捕获已正常停止

如有需要,请再次启动捕获

失败

不可恢复错误

读取 ErrorKind 是位于 StatusMessage 查看具体原因

VisionSourceErrorKind 参考

错误类型
原因
解决方案

无错误

超时

在预期时间窗口内未产生可用帧

检查相机是否处于活动状态并正在渲染;查看 CameraCaptureMode

PermissionDenied

操作系统相机权限被拒绝

引导用户在设备设置中授予权限

UnsupportedPlatform

此平台不支持该源

使用 CameraVisionFrameSource 在 Editor 中用于 QuestVisionFrameSource 场景

DeviceUnavailable

无法打开摄像头设备

留空 摄像头设备名称 留空,或通过以下方式验证设备名称: WebcamVisionFrameSource.GetAvailableDeviceNames()

InvalidConfiguration

某个字段值不一致

读取 StatusMessage 针对具体字段;在 Inspector 中更正

未知

意外的内部错误

查看 Console 中的完整异常;如果问题持续存在,请向支持团队报告


移动权限问题

在 Android 和 iOS 上, WebcamVisionFrameSource 在捕获开始时会异步请求相机权限。权限对话框只会出现一次——即应用安装后的首次运行会话中。

如果授予了权限: State 会从 AwaitingPermission → Starting → Ready 自动。

如果拒绝了权限: State 会转到 失败 其带有 ErrorKind = PermissionDenied。该组件不会自动重试。若要在应用中优雅处理此情况:

确保你的 Android manifest 声明了 android.permission.CAMERA 以及你的 iOS Info.plist 包含 NSCameraUsageDescription。如果没有这些声明,系统可能会静默拒绝权限请求,或阻止提交到应用商店。


Meta Quest 问题

QuestVisionFrameSource 绑定到 PassthroughCameraAccess 在运行时通过反射。常见失败模式:

问题
原因
修复

ErrorKind = UnsupportedPlatform

在 Editor 中或在非 Quest 硬件上运行

使用 CameraVisionFrameSource 在 Editor 中; QuestVisionFrameSource 仅适用于 Quest 硬件

失败 在启动时

PassthroughCameraAccess 未在场景中找到

将该组件添加到任意场景 GameObject,或将 透视相机访问 留空以进行自动发现

失败 在 Meta XR SDK 更新后

PassthroughCameraAccess SDK 版本之间 API 已更改

查看 Meta XR SDK 变更日志;如有需要更新 QuestVisionFrameSource 绑定

画面方向不正确

翻转 Y 已禁用

确保 翻转 Ytrue (默认)


决策树:IsPublishing 一直为 False


结论

从以下开始 VisionDebugPreview 用于瞬时视觉诊断——叠加层的 State 和 FPS 计数器会立即覆盖最常见的故障模式。对于其他所有问题,请按顺序执行一线排查检查清单,然后查阅常见问题表。如果在遵循本指南后问题仍然存在,带有 Vision 组件名称标签的 Console 错误消息将指出确切的故障点。

最后更新于

这有帮助吗?