Я пытаюсь создать базовое приложение для камеры (для моего первого приложения, ориентированного на WP). И я хочу, конечно, предварительно просмотреть данные камеры на экране, прежде чем делать снимок.
Но единственные образцы, которые я вижу в Интернете из MSDN и т.д., Слишком стары (многие объекты удалены, то есть библиотеки обновляются часто, что делает устаревшие статьи)
У меня возникла проблема с началом работы с превью-потоком. Было бы очень полезно, если бы кто-то со знанием мог мне помочь в этом вопросе.
Спасибо.
Я предлагаю использовать элемент управления CaptureElement
На вашем XAML добавьте следующее:
<CaptureElement x:Name="Capture"
Stretch="UniformToFill"
FlowDirection="LeftToRight" />
Я не знаю, хотите ли вы использовать переднюю или заднюю веб-камеру, поэтому я покажу код для обоих.
В коде codeBehind (или ваш ViewModel, если вы используете MVVM) добавьте этот код:
// First need to find all webcams
DeviceInformationCollection webcamList = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture)
// Then I do a query to find the front webcam
DeviceInformation frontWebcam = (from webcam in webcamList
where webcam.EnclosureLocation != null
&& webcam.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Front
select webcam).FirstOrDefault();
// Same for the back webcam
DeviceInformation backWebcam = (from webcam in webcamList
where webcam.EnclosureLocation != null
&& webcam.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back
select webcam).FirstOrDefault();
// Then you need to initialize your MediaCapture
var newCapture = new MediaCapture();
await newCapture.InitializeAsync(new MediaCaptureInitializationSettings
{
// Choose the webcam you want (backWebcam or frontWebcam)
VideoDeviceId = backWebcam.Id,
AudioDeviceId = "",
StreamingCaptureMode = StreamingCaptureMode.Video,
PhotoCaptureSource = PhotoCaptureSource.VideoPreview
});
// Set the source of the CaptureElement to your MediaCapture
Capture.Source = newCapture;
// Start the preview
await newCapture.StartPreviewAsync();
Это покажет поток выбранной веб-камеры в вашем элементе управления CaptureElement и будет работать как на Windows Phone 8.1, так и на Windows 8.1