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

Unity WebCamTexture无法突破30fps?求高帧率实现方案

摄像头高帧率输入问题(Unity WebCamTexture相关)

我正在开发一个通过手机四角的4个ArUco标记追踪手机屏幕的项目,追踪算法已实现且运行良好。当前核心问题是输入帧率无法突破30fps,而我需要尽可能高的输入帧率以满足追踪需求。

设备配置

  • 使用支持1920x1080@60fps的Logitech StreamCam
  • 主板无USB-C接口,采用GRAUGEAR USB-C转USB3.1适配器(适配器正反插会影响帧率,单边仅能输出FHD@30fps)
  • 录像测试结果:PC端(带适配器)能达到52fps,性能较弱的笔记本(原生USB-C)仅33fps,理论上PC端可接近60fps

代码尝试

使用Unity的WebCamTexture获取视频流,代码如下:

m_webCamDevice = WebCamTexture.devices[0];
m_webCamTexture = new WebCamTexture(m_webCamDevice.Value.name, 1920, 1080, 60);

// 也曾尝试设置requestedFPS但无效果
m_webCamTexture.requestedFPS = 60;

m_webCamTexture.Play();

虽能获取FHD分辨率,但帧率始终无法超过30fps,尝试多种分辨率(如640x360@30、1280x720@60等)均无效。当前在无追踪算法的空项目中测试,帧率统计代码如下:

private void Update()
{
    dt += Time.deltaTime;
    absoluteTime = Time.time;
    
    UpdateFPS();
}

private void UpdateFPS()
{
    if (!webCamTexture.didUpdateThisFrame) return;

    frameCount++;
    frameCountTotal = webCamTexture.updateCount;

    fps_amortized = webCamTexture.updateCount / Time.time;
    if (dt > 1.0 / updateRate)
    {
        fps = frameCount / dt;
        if (fps_text) fps_text.text = $"({fps:F}fps)"; // 在UI显示帧率
        frameCount = 0;
        dt -= 1.0 / updateRate; // 保留delta与更新率的微小差值
    }
}

核心问题

  1. 是否有人成功通过WebCamTexture获取30fps以上的输入帧率?
  2. 如何正确使用WebCamTexture.requestedFPS?
  3. 是否有比WebCamTexture更高效的摄像头输入获取方式?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:39:28