MediaCapture预览不起作用

时间:2016-07-12 19:52:16

标签: c# xaml winrt-xaml webcam

这很奇怪。看起来像获取简单视频流并在XAML表单上查看它的代码应该非常简单。

我只想说,我有以下,非常简单,查看:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Border BorderBrush="White" BorderThickness="1" Width="400" Height="400" Padding="2">
        <CaptureElement x:Name="captureElement" Loaded="captureElement_Loaded" Stretch="Uniform"/>
    </Border>
    <StackPanel HorizontalAlignment="Left" VerticalAlignment="Bottom" Orientation="Horizontal">
        <Button Content="preview start" Tapped="StartPrevTapped" x:Name="prevStart"/>
        <Button Content="preview stop" Tapped=StopPrevTapped" x:Name="prevStop" IsEnabled="False"/>
    </StackPanel>
</Grid>

以下是3种方法:

    MediaCapture mediaCaptureManager = new MediaCapture();
    private async void captureElement_Loaded(object sender, RoutedEventArgs e)
    {
        var cameraDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);

        var camera = cameraDevices.First();

        await mediaCaptureManager.InitializeAsync(new MediaCaptureInitializationSettings { VideoDeviceId = camera.Id });
    }

    private async void StartPrevTapped(object sender, TappedRoutedEventArgs e)
    {
        captureElement.Source = mediaCaptureManager;

        await mediaCaptureManager.StartPreviewAsync();
        prevStart.IsEnabled = false;
        prevStop.IsEnabled = true;
    }

    private async void StopPrevTapped(object sender, TappedRoutedEventArgs e)
    {
        await mediaCaptureManager.StopPreviewAsync();
        prevStart.IsEnabled = true;
        prevStop.IsEnabled = false;
    }

代码不会抛出任何异常,但CaptureElement不会显示任何异常。可能有什么不对?

一些补充说明:

  • 我在一台实际上没有网络摄像头的在线开发机器上编写代码。因此,我安装了ManyCam的免费版本。 TestMyCam显示它工作得很好。
  • 由于与上述相同的原因,没有录音设备。
  • 我尝试使用this MSDN sample project提供的代码。它也无法显示任何预览。事实上,该项目没有任何修改,甚至无法启动预览,因为它假设将连接麦克风。

修改

奇怪的事情正在发生。似乎问题是由我提供的开发机器上的奇怪配置引起的,而不是代码本身。

  • await mediaCaptureManager.InitializeAsync之前没有出现任何错误,现在会使用消息The RPC server is unavailable抛出异常。没有提供进一步的信息。这条消息很疯狂,因为它根本与媒体无关!

  • 我终于设法安装了一台带有网络摄像头和VS的笔记本电脑,并且工作正常。不知道如何解决这个问题 - 我无法在这台笔记本电脑上继续开发,我只能用它来进行这项测试。

1 个答案:

答案 0 :(得分:0)

事实证明,这些问题完全取决于所提供的开发机器。在本地计算机上测试代码时,它可以正常工作。

来考虑一下,这不是这台开发机器第一次投入使用;出于某种原因,平板电脑模拟器&#34;在VS中可用也无法启动...