UWP相机预览:“没有找到合适的转换来编码或解码”

时间:2016-11-07 09:42:07

标签: encoding camera uwp preview

我在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);

1 个答案:

答案 0 :(得分:0)

  

使用此方法时,我没有收到错误:mediacapture.VideoDeviceController.SetMediaStreamPropertiesAsync(...)。但如果我使用这种方法,捕获元素不会缩放到我想要的分辨率。

     

它只在我第一次调用startstview()时才会发生。

我在内部咨询并得到了答复。这个问题可能与图形驱动程序有关。在您致电MediaCapture.SetEncodingPropertiesAsync之前,您的图形驱动程序可能要求您的相机设备预览处于运行状态,因此您收到此错误并且仅在第一时间获得此错误。

  

我想知道这两种方法之间的区别。

差异:

  1. MediaCapture.SetEncodingPropertiesAsync在相机接收器上设置属性。您可以在此设置相机不支持的分辨率和旋转,然后编码器可以转换为所需的格式。
  2. MediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync设置源的属性。您只能设置摄像机支持的配置。
  3. 因此预览窗口的大小由Xaml CaptureElement控制。如果您正在使用VideoDeviceController.SetMediaStreamPropertiesAsync并希望调整预览窗口的大小,则只能设置Stretch="UniformToFill"以使预览窗口填充父元素。