如何在 UWP 中显示 2 个网络摄像头预览?
How to display 2 web camera preview in UWP?
您好,我在 UWP 中显示了 1 个网络摄像头预览,结果很成功。
但现在我想在我的程序中使用 2 个摄像头的预览,或者在计算机上连接 2 个摄像头时能够在两个摄像头之间进行选择。
当我 运行 1 网络摄像头预览时,我参考 documentation 使用 MediaCapture
并且它很好。
但现在我不知道如何显示 2 个相机预览或 select 一个相机之间的预览。
不可能吗?
是的,这是可能的:-)。 MediaCapture
class 在调用不带参数的 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
方法,然后还要检查查找两者通用的 concurrency-enabled 配置文件相机 - MediaCapture.FindConcurrentProfiles
,参见 docs。只有这样您才能安全地创建两个预览并知道应用程序不会崩溃。
您好,我在 UWP 中显示了 1 个网络摄像头预览,结果很成功。
但现在我想在我的程序中使用 2 个摄像头的预览,或者在计算机上连接 2 个摄像头时能够在两个摄像头之间进行选择。
当我 运行 1 网络摄像头预览时,我参考 documentation 使用 MediaCapture
并且它很好。
但现在我不知道如何显示 2 个相机预览或 select 一个相机之间的预览。
不可能吗?
是的,这是可能的:-)。 MediaCapture
class 在调用不带参数的 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
方法,然后还要检查查找两者通用的 concurrency-enabled 配置文件相机 - MediaCapture.FindConcurrentProfiles
,参见 docs。只有这样您才能安全地创建两个预览并知道应用程序不会崩溃。