GetPreviewFrameASync参数类型无效

时间:2017-07-07 13:51:30

标签: c# uwp

我在UWP工作并尝试使以下教程示例正常工作。总之,我试图从MediaCapture中获取一个帧并将其显示到Image UWP Control元素。

 var previewProperties = _mediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview) as VideoEncodingProperties;
        VideoFrame videoFrame = new VideoFrame(BitmapPixelFormat.Bgra8, (int)previewProperties.Width, (int)previewProperties.Height);
        var source = new SoftwareBitmapSource();

        var previewFrame = await _mediaCapture.GetPreviewFrameAsync(videoFrame);


        SoftwareBitmap previewBitmap = videoFrame.SoftwareBitmap;
        await source.SetBitmapAsync(previewBitmap);
        img.Source = source;

当GetPreviewFrameASync函数执行时,我得到一个运行时异常,提供无效的参数类型。有没有人遇到过同样的问题,原因是什么?

提前致谢

2 个答案:

答案 0 :(得分:1)

事实证明我的代码完全没有问题,但不知何故 CAMERA 应该归咎于错误。运行我的项目的许多其他人没有问题,当我更换我的相机时一切都很好。如果你不幸遇到同样的问题,请尝试用另一个凸轮运行它。

答案 1 :(得分:0)

我已经测试了您的细分代码并重现了您的问题,问题是您在执行GetPreviewFrameASync方法之前尚未开始预览。以下是开始预览的方法。

private async Task StartPreviewAsync()
 {
     try
     {
         _mediaCapture = new MediaCapture();
         await _mediaCapture.InitializeAsync();
         _displayRequest.RequestActive();
         DisplayInformation.AutoRotationPreferences = DisplayOrientations.Landscape;
     }
     catch (UnauthorizedAccessException)
     {

     }
     try
     {
         PreviewControl.Source = _mediaCapture;
         await _mediaCapture.StartPreviewAsync();
         _isPreviewing = true;
     }
     catch (System.IO.FileLoadException)
     {

     }
 }

有关详情,请参阅Basic photo, video, and audio capture with MediaCapture。我已将code sample上传到github。请检查!