You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity3D 2019.3.0b7中VideoCapture.CreateAsync未调用回调函数求助

解决Unity中VideoCapture.CreateAsync回调未触发的问题

我之前也碰到过一模一样的困扰——WebCamTexture能正常调用摄像头,但VideoCapture.CreateAsync()的回调就是完全没反应,代码和官方示例也完全对齐。结合我的排查经验,给你几个最可能的解决方向:

1. 先确认运行平台是UWP

UnityEngine.Windows.WebCam.VideoCapture这个API仅支持UWP平台(包括PC端的UWP应用、Hololens等),如果你是在Unity Editor或者普通的Standalone Windows(非UWP)环境下测试,回调是绝对不会触发的——因为这个API在非UWP环境下根本不生效。

解决步骤:

  • 打开Unity的Build Settings,切换到Universal Windows Platform平台
  • 确认Build Settings里的SDK版本、目标设备等配置正确,然后打包测试(Editor里没法验证这个API的功能)

2. 检查UWP应用的权限配置

哪怕WebCamTexture能访问摄像头,VideoCapture可能需要额外的权限(比如麦克风权限,哪怕你只打算录制画面)。需要手动配置权限:

  • 在Unity的UWP打包设置里,勾选「Webcam」和「Microphone」权限
  • 或者打包后,在生成的Visual Studio项目里打开Package.appxmanifest,在「功能」标签下勾选「网络摄像头」和「麦克风」

3. 显式指定摄像头设备ID

有时候默认设备的检测会出问题,试试先枚举所有可用的摄像头设备,再传入具体的设备ID调用CreateAsync:

using UnityEngine.Windows.WebCam;
using System.Collections.Generic;

private async void Start()
{
    // 枚举所有可用视频设备
    List<VideoCaptureDevice> devices = await VideoCapture.FindAllVideoDevicesAsync();
    if (devices.Count > 0)
    {
        // 传入第一个设备的ID创建VideoCapture
        VideoCapture.CreateAsync(devices[0].id, OnCaptureCreate);
    }
    else
    {
        Debug.LogError("未找到可用的摄像头设备");
    }
}

void OnCaptureCreate(VideoCapture videoC)
{
    if (videoC != null)
    {
        Debug.Log("VideoCapture初始化成功!");
        // 后续录制逻辑
    }
    else
    {
        Debug.LogError("VideoCapture初始化失败");
    }
}

4. 检查Unity版本兼容性

你使用的2019.3版本,Windows.WebCam系列API存在一些已知的小bug。如果上面的方法都无效,可以试试升级到2019.3的最新补丁版本,或者切换到2020.x版本,排查是否是版本带来的兼容性问题。


内容的提问来源于stack exchange,提问作者ForberichN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:54:36