我在UWP中预览带有CaptureElement的相机。但是为什么我会得到错误:“使用某些分辨率时,没有找到合适的转换来编码或解码”?使用网络摄像头时会发生这种情况
使用此方法时,我没有收到错误:mediacapture.VideoDeviceController.SetMediaStreamPropertiesAsync(...)。但如果我使用这种方法,捕获元素不会缩放到我想要的分辨率(捕获元素将其strech属性设置为none,因为我不希望质量损失)
try
{
MediaCaptureInitializationSettings mediacapturesettings = new MediaCaptureInitializationSettings { VideoDeviceId = DeviceInfo.Id };
await mediacapture.InitializeAsync(mediacapturesettings);
}
catch (Exception exception)
{
var dialog = new MessageDialog(exception.Message);
await dialog.ShowAsync();
}
captureelement.Source = mediacapture;
captureelement.FlowDirection = Windows.UI.Xaml.FlowDirection.LeftToRight;
await mediacapture.StartPreviewAsync();
// await mediacapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, Resolution.EncodingProperties);
await mediacapture.SetEncodingPropertiesAsync(MediaStreamType.VideoPreview, Resolution.EncodingProperties,null);
VideoRotation currentrotation = Rotation;
mediacapture.SetPreviewRotation(currentrotation);
答案 0 :(得分:0)
使用此方法时,我没有收到错误:mediacapture.VideoDeviceController.SetMediaStreamPropertiesAsync(...)。但如果我使用这种方法,捕获元素不会缩放到我想要的分辨率。
它只在我第一次调用startstview()时才会发生。
我在内部咨询并得到了答复。这个问题可能与图形驱动程序有关。在您致电MediaCapture.SetEncodingPropertiesAsync
之前,您的图形驱动程序可能要求您的相机设备预览处于运行状态,因此您收到此错误并且仅在第一时间获得此错误。
我想知道这两种方法之间的区别。
差异:
因此预览窗口的大小由Xaml CaptureElement
控制。如果您正在使用VideoDeviceController.SetMediaStreamPropertiesAsync
并希望调整预览窗口的大小,则只能设置Stretch="UniformToFill"
以使预览窗口填充父元素。