我在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函数执行时,我得到一个运行时异常,提供无效的参数类型。有没有人遇到过同样的问题,原因是什么?
提前致谢
答案 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。请检查!