我已经制作了一个简单的视频流应用程序。我通过Unity的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控制面板访问WebCam时,它也落后了但是后来我看到了一个选项" ExposureCompensation"我不知道它是什么,但是当我放下它时,视频变得更暗但又平滑(见图)。现在我在申请中如何处理这个问题,如何访问和降低此参数(C#)。
我做过的事:
我已经在我的rawimage上使用了每个着色器,虽然有些似乎使纹理变暗但是滞后仍然存在
我使用过NatCam,但它并没有在windows中提供全部功能(回归统一" Webcamtexture")
已经阅读了其他使用DirectShow api的问题,这对我来说似乎非常难以理解,并且不知道它是否能与团结一致
请帮助我,我将非常感激! (并视我为学生而不是专业人士)
编辑:这不是WebCam特定问题,我已经在2台笔记本电脑上使用自己的集成摄像头测试了相同的应用程序,在低照明条件下仍存在延迟。