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

时间:2018-03-16 02:01:24

标签: c# uwp webcam

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

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

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

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

这不可能吗?

1 个答案:

答案 0 :(得分:3)

是的,有可能:-)。当您在没有参数的情况下调用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方法查询支持设备配置文件的摄像机,然后还检查查找两个摄像机常用的启用并发的配置文件 - MediaCapture.FindConcurrentProfiles,请参阅docs。只有这样,您才能安全地创建两个预览,并知道应用程序不会崩溃。