1

我希望能够使用 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();
}

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

请指教。先感谢您

4

2 回答 2

1

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

从应用程序的角度来看,这在理论上是可行的,但也存在硬件限制。

于 2012-12-13T02:04:36.690 回答
0

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

  1. 创建画布对象
  2. 在该画布对象中插入我想要的尽可能多的捕获元素
  3. 枚举所有可用的相机DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
  4. 将我找到的每个相机 ID 与捕获元素相关联。
  5. 部署。

但是,当我从 vs 11 开始运行应用程序时,它只显示一个活动摄像头,但是,当我从开始菜单运行它时,它会显示我拥有的所有摄像头。

于 2012-12-12T08:39:36.713 回答