在多个 CaptureElement.Source 中使用一个 MediaCapture

Using one MediaCapture in multiple CaptureElement.Source

我正在尝试将一个 MediaCapture 预览到多个 (2) CaptureElement。例如,我在屏幕角落有一个大的 CaptureElement 和一个迷你地图。可能吗?

当我尝试将初始化的 Capture 设置为一个 CaptureElement 时,一切正常,但是当我在 2 个地方共享它时,我收到类似“当前状态不支持的操作”的错误。

这是代码示例,我正在尝试使用:

await video.TryStopPreviewingAsync();
minimap.Source = null;
await minimap.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
    minimap.Source = video.Stream.Capture;
});
await video.TryStartPreviewingAsync();

minimap 是第二个 CaptureElement,video.Resources.First.Stream.Capture 当前正在预览捕获。

TryStop/StartPreviewingAsync调用 Capture.Stop/StartPreviewingAsync()

我试图停止预览第一个捕获,在 2 个地方将其设置为源,然后开始在两个捕获元素上预览,但出现错误。

I'm getting error like "unsupported operation for current state".

这是设计使然,当将 Capture 传递给多个 CaptureElement 时会抛出异常。

对于您的方案,更好的方法是使用图像控件替换 CaptureElement,并使用 MediaFrameReader 处理帧,然后为 FrameArrived.[=18 内的每个帧生成位图=]

这里是official code sample,您可以参考。