如何在 UWP 中显示 2 个网络摄像头预览?

Kay*_*Kay 4 c# webcam uwp

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

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

当我运行 1 个网络摄像头预览时,我参考了有关使用的文档MediaCapture,这很好。

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

不可能吗?

Mar*_*und 7

对的,这是可能的 :-) 。MediaCapture当您在InitializeAsync不带参数的情况下调用该方法时,该类采用默认相机,但还有另一个重载允许您指定设备 ID

文档显示了如何发现视频捕获设备:

DeviceInformationCollection devices = 
   await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
Run Code Online (Sandbox Code Playgroud)

现在您可以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

}
Run Code Online (Sandbox Code Playgroud)

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

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