У меня вопрос о том, как контролировать размер видеозаписи 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