如何使用MediaCapture类在Windows 8中显示2个摄像头的预览

时间:2012-12-11 19:09:19

标签: windows-8

我希望能够使用MediaCapture类显示多个相机设备的预览。 目前,我使用包含设备ID的MediaCaptureInitializationSettings对象初始化MediaCapture。设置对象只接收1个VideoDeviceId,因此我无法为同一MediaCapture对象设置多个视频源。我尝试的另一件事是创建几个MediaCapture对象,每个设备一个。但是,看起来最后一个被初始化的是获得设备访问权限的人,所以即使有多个媒体设备每个都与一个不同的设备相关联,也只允许其中一个设备的视频显示为预览。

以下是代码,以便您可以更好地理解。

async private void PreviewDevice(string deviceId)
{
    var mediaCapture = new MediaCapture();
    var mediaCaptureSettings = new MediaCaptureInitializationSettings
    {
        VideoDeviceId = deviceId
    };
    await mediaCapture.InitializeAsync(mediaCaptureSettings);
    var previewElement = new CaptureElement
    {
        Source = mediaCapture
    };
    CamerasDisplayGrid.Children.Add(previewElement);
    await mediaCapture.StartPreviewAsync();
}

我想要实现的是同时在屏幕上预览多个摄像头。

请指教。提前谢谢

2 个答案:

答案 0 :(得分:1)

也许这个链接可以提供帮助:http://social.msdn.microsoft.com/Forums/sr-Cyrl-CS/winappswithcsharp/thread/13d2ce8f-de6d-47c0-8992-4d443a49326f

  

从理论上讲,从应用程序的角度来看,它也存在硬件限制。

答案 1 :(得分:0)

我遇到了同样的问题,这就是我所做的:

  1. 创建画布对象
  2. 在该画布对象中插入尽可能多的捕获元素
  3. 使用DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
  4. 枚举所有可用的摄像头
  5. 将我找到的每个摄像机ID与捕获元素相关联。
  6. 部署。
  7. 然而,当我以vs 11开始运行应用程序时,它只显示一个活动的摄像头,但是,当我从开始菜单运行它时,它会显示我所有的摄像头。

相关问题