媒体捕获初始化错误

时间:2016-10-11 14:12:59

标签: c# camera uwp media

我在启动UWP媒体捕获时遇到问题。我的代码如下,

private async Task StartPreviewAsync()
{
    try
    {
        //set initilize settings
        Settings oneSetting = null;

        using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), sqlpath))
        {
            oneSetting = (from p in conn.Table<Settings>()
                          where p.id == 0
                          select p).FirstOrDefault();
        }

        if (oneSetting.camera != null)
        {
            var settings = new MediaCaptureInitializationSettings();
            settings.StreamingCaptureMode = StreamingCaptureMode.Video;
            settings.PhotoCaptureSource = PhotoCaptureSource.VideoPreview;
            var devices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(Windows.Devices.Enumeration.DeviceClass.VideoCapture);

            foreach (var device in devices)
            {
                if ((device.Id).Equals(oneSetting.cameraId))
                {
                    settings.VideoDeviceId = device.Id;
                    break;
                }
            }

            _mediaCapture = new MediaCapture();
            await _mediaCapture.InitializeAsync(settings);

            //MediaCapture m = new MediaCapture();
            //await m.InitializeAsync();

            var focusSettings = new FocusSettings();
            focusSettings.AutoFocusRange = AutoFocusRange.FullRange;
            focusSettings.Mode = FocusMode.Auto;
            focusSettings.WaitForFocus = true;
            focusSettings.DisableDriverFallback = false;

            _mediaCapture.VideoDeviceController.FocusControl.Configure(focusSettings);
            await _mediaCapture.VideoDeviceController.ExposureControl.SetAutoAsync(true);

            _mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);
            _mediaCapture.SetRecordRotation(VideoRotation.Clockwise90Degrees);

            capturePreview.Source = _mediaCapture;
            await _mediaCapture.StartPreviewAsync();
            _isPreviewing = true;

            _displayRequest.RequestActive();
            DisplayInformation.AutoRotationPreferences = DisplayOrientations.Landscape;
        }
    }
    catch (UnauthorizedAccessException)
    {
        // This will be thrown if the user denied access to the camera in privacy settings
        System.Diagnostics.Debug.WriteLine("The app was denied access to the camera");
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine("MediaCapture initialization failed. {0}", ex.Message);
    }
}

它返回MediaCapture初始化失败。 {0}错误。最近,它运行良好。但是从今天早上起它就会出错。是否有人犯同样的错误?

完整的错误消息是;

此系统不支持指定的设备接口级别或功能。 :Media Capture初始化失败。 {0} 线程0x1924已退出,代码为0(0x0)。

2 个答案:

答案 0 :(得分:0)

  

但是从今天早上起它就会出错。

您最近是否更新了设备操作系统?您在哪个设备上遇到此问题以及操作系统版本是什么?

我个人认为这更像是设备问题或驱动器问题。您可以尝试重新启动设备,看看是否有帮助。或者你可以启动内置的相机应用程序,并检查这个官方应用程序是否运行良好。

我在这里写这个答案是因为有太多细节需要确认,请在这里发表评论,根据我的建议告诉我们您的设备和测试结果的详细信息,我们可以保留看看这个问题。

答案 1 :(得分:0)

这里的问题相同。 经过几个小时的重试和谷歌搜索,我意识到它与Windows 10周年更新有关。 我在这里找到了解决方案:

https://www.macecraft.com/fix-webcam-issues-windows-10-anniversary-update/

我在注册表中添加了EnableFrameServerMode键,神奇的是网络摄像头恢复了工作。