我在统一中制作了一个简单的视频流应用程序。我通过统一的 WebCamTexture 类使用设备网络摄像头。我的画布中有一个 RawImage,我在其上呈现 WebCam 实时供稿,如下所示:
public RawImage image;
private WebCamTexture liveRec;
void Start () {
WebCamDevice[] camDevices = WebCamTexture.devices;
liveRec = new WebCamTexture(camDevices[camDevices.Length - 1].name);
liveRec.requestedHeight = 1;
liveRec.requestedWidth = 1; // lowest quality
liveRec.filterMode = FilterMode.Trilinear;
liveRec.Play();
image.texture = liveRec;
}
一切正常,视频运行流畅,但只有在良好的光照条件下。当我的房间变暗(低光照条件)时,视频变得非常迟钝(似乎在 25fps 左右)。我认为这是我的应用程序中的一个问题,但是当我通过 Windows 控制面板访问网络摄像头时,它也有滞后,但后来我看到了一个选项“曝光补偿”,我不知道它是什么,但是当我降低它时,视频变得更暗但再次平滑(见图) 。现在我可以在我的应用程序中对此做些什么,如何访问和降低此参数(C#)。
我尝试过的事情:
我已经在我的 rawimage 上使用了几乎每个着色器,虽然有些似乎会使纹理变暗,但滞后仍然存在
我使用过 NatCam,但它没有在 windows 中提供完整的功能(回退到统一的实现“Webcamtexture”)
已经阅读了其他使用 DirectShow api 的问题,这对我来说似乎非常困难,并且不知道它是否可以统一使用
请帮助我,我将不胜感激!(把我当作学生而不是专业人士)
编辑:这不是特定于网络摄像头的问题,我已经在 2 台带有自己集成摄像头的笔记本电脑上测试了相同的应用程序,在低光照条件下延迟仍然存在。