C# MediaCapture:照片在Windows Phone上有奇怪的彩色字母框

C# MediaCapture:照片在Windows Phone上有奇怪的彩色字母框,c#,windows-phone,win-universal-app,windows-10,C#,Windows Phone,Win Universal App,Windows 10,我有一些代码可以在拍照时为我的Lumia 1020获得最高质量的视频编码属性。具体如下: IEnumerable<VideoEncodingProperties> pIEeAllRes = cMCeCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoPreview).Select(x => x as VideoEncodingProperties); Vid

我有一些代码可以在拍照时为我的Lumia 1020获得最高质量的视频编码属性。具体如下:

 IEnumerable<VideoEncodingProperties> pIEeAllRes = cMCeCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoPreview).Select(x => x as VideoEncodingProperties);
 VideoEncodingProperties pVEPBestRes = pIEeAllRes.OrderByDescending(x => x.Width * x.Height).ThenByDescending(x => x.FrameRate.Numerator / (double)x.FrameRate.Denominator).FirstOrDefault();
IEnumerable pIEeAllRes=cMCeCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoPreview)。选择(x=>x作为视频编码属性);
VideoEncodingProperties pVEPBestRes=pieallres.OrderByDescending(x=>x.Width*x.Height)。然后ByDescending(x=>x.FrameRate.Numerator/(double)x.FrameRate.deminator)。FirstOrDefault();
这将返回我仅有的1280 x 720分辨率之一。当我拍照时,两边都有奇怪的绿线。我已经附上了这些照片,你知道为什么会发生这种情况以及如何避免吗

请原谅我的脸凌乱哈哈


典型的,只是尝试了一些东西并解决了问题,我将编码道具的类型改为照片而不是视频预览

        IEnumerable<VideoEncodingProperties> pIEeAllRes = cMCeCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo).Select(x => x as VideoEncodingProperties);
        VideoEncodingProperties pVEPBestRes = pIEeAllRes.OrderByDescending(x => x.Width * x.Height).ThenByDescending(x => x.FrameRate.Numerator / (double)x.FrameRate.Denominator).FirstOrDefault();

在Windows Phone上,您可以找到三种不同的
MediaStreamType
VideoPreview
Photo
VideoRecord
。可以将这些视为来自相机的三个独立流,分别用于取景器、照片和录制视频。这些流是独立的,这意味着您可以分别设置每个流的分辨率(也称为MediaStreamProperties):

  • 您可以以屏幕分辨率运行预览
  • 你可以用20MP的速度拍摄照片
  • 您可以用1080p录制视频
这样,您就不会一直以20 MP的速度运行设备

现在,即使这些是单独的管脚,也有一些限制,您刚刚遇到了一个:捕获流(照片、录像)的纵横比需要与视频预览的纵横比匹配,否则您可能会得到奇怪的瑕疵。这为您提供了两种选择:

  • 有两种单独的捕获模式:照片和视频。在这些模式之间切换时,请确保在预览上设置与要使用的捕获纵横比匹配的分辨率
  • 将纵横比选择器作为顶级决策。这意味着您首先决定是要16:9还是4:3作为捕获分辨率,然后在此基础上设置预览,然后只允许以相同的纵横比捕获照片或视频。这样做的好处是,您不需要切换“模式”来获得不同类型的捕获

  • 在您的问题中,您正在更改取景器的分辨率(“视频预览”),在这个答案中,您正在更改拍摄照片的分辨率。这是两件不同的事情,更多细节请参见我的答案。
    await cMCeCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo,