我对如何控制MediaCapture视频的大小有疑问。在MediaCapture记录中,视频的默认大小显示为屏幕大小。如何根据WinRT中的自定义大小调整视频大小
例如,当我将CaptureElement的宽度设置为480,将CaptureElement的高度设置为320时,我可以看到视频区域的预览是480 * 320。但是,当我将它记录到文件并停止时,文件中视频的大小就是屏幕的大小(视图区域为768 * 1280)。如何获得文件中的视频大小为320 * 240?
主要代码是:
DeviceInformation cameraDevice = await FindDeviceInfo(panel);
if (cameraDevice == null)
{
return;
}
var mediaInitSettings = new MediaCaptureInitializationSettings { VideoDeviceId = cameraDevice.Id };
_encodingProfile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Qvga);
if (_encodingProfile.Video != null)
{
_encodingProfile.Video.PixelAspectRatio.Numerator = 4;
_encodingProfile.Video.PixelAspectRatio.Denominator = 3;
}
var isInitialized = false;
try
{
_mediaCapture.VideoDeviceController.PrimaryUse = CaptureUse.Video;
await _mediaCapture.InitializeAsync(mediaInitSettings);
isInitialized = true;
var formatSelector = new Func<VideoEncodingProperties, bool>(ep => ep.Height * ep.Width == 640 * 480 && string.Equals(ep.Subtype, "nv12", StringComparison.OrdinalIgnoreCase));
var recordFormat = _mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoRecord).OfType<VideoEncodingProperties>().FirstOrDefault(formatSelector);
var previewFormat = _mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoPreview).OfType<VideoEncodingProperties>().FirstOrDefault(formatSelector);
if (previewFormat != null)
await
_mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview,
previewFormat);
if (recordFormat != null)
await
_mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoRecord,
recordFormat);
}
catch (Exception ex)
{
Debug.WriteLine("Exception when initializing MediaCapture with {0}: {1}", cameraDevice.Id, ex.ToString());
}
我试图用MediaComposition,但没有关于调整大小的方法,这将有助于我解决问题的信息。我该如何解决它?
链接到预览的图象是[1]
[1]:http://i.stack.imgur.com/5dnIi.png结果可以看到更多的区域。
我编辑过的语法和段落格式使邮件更容易阅读和理解。 – paisanco