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与更新率的微小差值 } }
核心问题
- 是否有人成功通过WebCamTexture获取30fps以上的输入帧率?
- 如何正确使用WebCamTexture.requestedFPS?
- 是否有比WebCamTexture更高效的摄像头输入获取方式?
内容的提问来源于stack exchange,提问作者Neverrock
相关产品推荐
相关产品推荐

