CameraPreviewImageSource.StartPreviewAsync 不适用于 videoEncodingProperties

CameraPreviewImageSource.StartPreviewAsync doesn't work with videoEncodingProperties

我正在使用 CameraPreviewImageSource.PreviewFrameAvailable 事件通过计算每帧的平均亮度来确定闪光。 出于我的目的,我不需要大框架,但使用默认设置 StartPreviewAsync() 方法生成大小为 1280*720px 的框架。 我尝试使用 StartPreviewAsync(videoEncodingProperties) 但每次出现异常 HRESULT:0x80040155 Interface not registered.

我可以通过底层 VideoDeviceController 对象设置预览帧大小,但它看起来有点过于复杂,特别是考虑到我必须按照神奇确定的顺序设置属性(否则相机会在退出后损坏应用程序)。

await App.CameraPreviewImageSource.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, _previewProperties);
var properties = await App.CameraPreviewImageSource.StartPreviewAsync();
properties.Width = _previewProperties.Width;
properties.Height = _previewProperties.Height;

是我做错了什么,还是 SDK 中的 StartPreviewAsync(videoEncodingProperties) 方法根本不起作用?

好吧,"right" 命令序列解决了问题:

var properties = await App.CameraPreviewImageSource.StartPreviewAsync();
await App.CameraPreviewImageSource.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, _previewProperties);
properties.Width = _previewProperties.Width;
properties.Height = _previewProperties.Height;