您好,我在UWP中显示了1个摄像头预览,并成功了.
但是,现在我想在程序中使用2个摄像机的预览,或者在连接2个摄像机的计算机时能够在两个摄像机之间进行选择.
当我运行1个网络摄像头预览时,我提到了使用MediaCapture的documentation,这很好.
但是现在我不知道如何显示2个摄像机预览或如何在两个摄像机之间选择一个.
不可能吗
解决方法:
对的,这是可能的 :-) .当您调用不带参数的InitializeAsync方法时,MediaCapture类将采用默认相机,但是还有另一个重载允许您指定设备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
}
自然,当您想要显示多个预览时,您将需要具有多个CaptureElement,每个CaptureElement都设置为所需的特定MediaCapture实例.
但是,此方法已相当简化.为了确保支持并发捕获和预览,必须首先确保使用文档中所示的MediaCapture.IsVideoProfileSupported方法仅查询支持设备配置文件的摄像机,然后检查查找两个摄像机通用的启用了并发配置文件-MediaCapture. FindConcurrentProfiles,请参阅docs.只有这样,您才能安全地创建两个预览,并且知道该应用程序不会崩溃.