如何在Windows 8.1中捕获高分辨率视频并从中捕获照片。尝试时我有一个UI跳跃效果

时间:2014-05-22 13:37:54

标签: c# windows-8 windows-runtime windows-8.1

我的相机拍摄应用程序用于使用CaptureElement在视图中实现的相机拍摄连续照片。当它持续捕捉照片时,UI来回移动似乎是一种跳跃效果。这是我面临的问题。

使用的代码如下

var cameras = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
MediaCaptureInitializationSettings settings=new MediaCaptureInitializationSettings { VideoDeviceId = cameras[0].Id, StreamingCaptureMode = StreamingCaptureMode.Video };
var_mediaCapture = new MediaCapture();
await _mediaCapture.InitializeAsync(settings);
if (null != videoCapture) videoCapture.Source = _mediaCapture;
            await _mediaCapture.StartPreviewAsync();

设置高分辨率

int max = 0;
var resolutions = videoController.GetAvailableMediaStreamProperties(MediaStreamType.Photo);
            for (var i = 0; i < resolutions.Count; i++)
            {
                ImageEncodingProperties res = resolutions[i] as ImageEncodingProperties;
                if (null == res) continue;


                if (res.Width * res.Height < max)
                {
                    max = (int)(res.Width * res.Height);
                    _imageEncodingProperties = res;
                }
            }

     await videoController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo, _imageEncodingProperties);

使用

从视频帧中捕捉照片
    using (var photoStream = new InMemoryRandomAccessStream())
                {                        
                    await _mediaCapture.CapturePhotoToStreamAsync(_imageEncodingProperties, photoStream);
                    await photoStream.FlushAsync(); 
                }

我通过设置不同的视频分辨率来测试捕获。

var videoController = _mediaCapture.VideoDeviceController;

首先,我为videoController设置默认preview resolution [640x480],捕获过程正在进行,没有任何问题。然后我通过在Surface平板电脑中设置High resolution [1200x800]来检查它,在这种情况下,相框会出现在视频控件上一会儿,并且每侧都有一些小的宽度。感觉就像在相机视图中的放大/缩小效果[后向前跳跃]。

在Windows 8.1中为视频媒体元素视频控制器设置高分辨率时是否有人遇到此问题?如果有人能够解释它的原因我会很棒。

由于

修改 我分析了情况并找到了以下内容

有许多可用的分辨率 640 x 360,1280x720,1280x800,640x480等

我发现这个问题根本不存在于宽高比为1.777778的分辨率下。 rato小于1.777的所有其他决议都存在问题。

也就是说,问题不存在于640x360,1280x720分辨率,其他两个具有跳跃效果。我认为最后两个分别为1.6和1.33。

我还检查了default camera app并通过设置1280x800分辨率拍摄照片,在那里我看到窗口中的相机元素两侧都有黑色边框。

结论:

  

问题在于宽高比。当我设置高分辨率   [1280x800]来自可用的相机分辨率   保持表面设备的纵横比[1366x768],这样就可以了   图像试图适应屏幕和感受到的跳跃效果   用户。所以我设置了维持设备的最高分辨率   宽高比,即1280x720,问题解决了。

1 个答案:

答案 0 :(得分:4)

  

实际上问题在于宽高比。当我设置高   分辨率[1280x800]来自可用的相机分辨率   没有保持表面设备的纵横比[1366x768],所以   Image正试图融入屏幕并感受到跳跃效果   由用户。所以我设置了保持最高分辨率的最高分辨率   设备纵横比,即1280x720,问题解决了。