【问题标题】:How to display 2 web camera preview in UWP?如何在 UWP 中显示 2 个网络摄像头预览?
【发布时间】:2018-03-16 02:01:23
【问题描述】:

您好,我在 UWP 中显示了 1 个网络摄像头预览,这很成功。

但现在我想在我的程序中使用 2 个摄像头的预览,或者能够在计算机上连接 2 个摄像头时在两个摄像头之间进行选择。

当我运行 1 个网络摄像头预览时,我在使用 MediaCapture 时提到了 documentation,这很好。

但现在我不知道如何显示 2 个摄像头预览或在摄像头之间选择一个。

不可能吗?

【问题讨论】:

    标签: c# uwp webcam


    【解决方案1】:

    是的,有可能:-)。 MediaCapture 类在您调用不带参数的 InitializeAsync 方法时采用默认摄像头,但还有另一个重载允许您指定设备 ID

    documentation 展示了如何发现视频捕获设备:

    DeviceInformationCollection devices = 
       await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
    

    现在您可以像这样初始化多个MediaCapture 实例:

    foreach ( var device in devices )
    {
       var mediaInitSettings = 
          new MediaCaptureInitializationSettings { VideoDeviceId = device.Id };
       MediaCapture mediaCapture = new MediaCapture();
       mediaCapture.InitializeAsync(mediaInitSettings);
    
       //do something with the media capture
    
    }
    

    当然,当您想要显示多个预览时,您将需要多个CaptureElements,每个设置为您想要的特定MediaCapture 实例。

    但是,这种方法非常简单。为确保支持并发捕获和预览,您必须首先确保仅使用文档中所示的MediaCapture.IsVideoProfileSupported 方法查询支持设备配置文件的摄像机,然后还要检查查找两个摄像机通用的启用并发配置文件 - @987654331 @,见docs。只有这样您才能安全地创建两个预览并知道应用不会崩溃。

    【讨论】:

    • 非常感谢您的回答,我想知道是否要显示预览,那么如何在 foreach 语法中管理捕获元素?我不能 StartPreviewAsync();还有captureelement的源码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2011-11-24
    • 2020-03-06
    • 2020-10-15
    • 1970-01-01
    相关资源
    最近更新 更多