我在javascript中使用MediaCapture来捕获我的相机
我有一个带有initCamera函数的Camera类。问题是,如果我尝试在短时间内重新启动相机,我将收到此错误:Hardware MFT failed to start streaming due to lack of hardware resources.
现在我知道这意味着我的相机仍在使用中。我想知道的是:
这是一段代码:
function Camera() {
var that = this;
this.mediaCaptureElement = null;
this.initCamera = function() {
if (!that.mediaCaptureElement) {
that.mediaCaptureElement = new Windows.Media.Capture.MediaCapture();
that.mediaCaptureElement.addEventListener("failed", function (e) {
console.warn("The camera has stopped working");
}
that.mediaCaptureElement.initializeAsync().then(function() {
that.mediaCaptureElement.videoDeviceController.primaryUse = Windows.Media.Devices.CaptureUse.photo;
that.getCameraResolution();
that.orientationChanged();
that.startCamera();
});
}
};
我目前重新打开相机的方法是使用Camera类的新实例覆盖相机实例。
提前致谢。
答案 0 :(得分:1)
我在C#
中使用MediaCapture遇到了同样的问题。
我必须在Dispose()
之后致电StopPreviewAsync
以便更正它:
await cameraControler.MediaCaptureInstance.StopPreviewAsync(); cameraControler.MediaCaptureInstance.Dispose();
答案 1 :(得分:1)
你见过Camera Starter Kit UWP sample吗?它也有JS风格!
如果您希望在完成相机使用后能够可靠地访问相机,则需要确保正确清理所有资源。从您共享的代码中,您似乎正在让系统处理此问题,这意味着您的应用可能会在系统完成所有资源之前回来。
你应该照顾:
查看我上面链接的示例中的cleanupCameraAsync() method,了解如何实现此示例。