Доступ к предпросмотру с камеры на Windows Phone 8.1

1

Я пытаюсь создать базовое приложение для камеры (для моего первого приложения, ориентированного на WP). И я хочу, конечно, предварительно просмотреть данные камеры на экране, прежде чем делать снимок.

Но единственные образцы, которые я вижу в Интернете из MSDN и т.д., Слишком стары (многие объекты удалены, то есть библиотеки обновляются часто, что делает устаревшие статьи)

У меня возникла проблема с началом работы с превью-потоком. Было бы очень полезно, если бы кто-то со знанием мог мне помочь в этом вопросе.

Спасибо.

Теги:
wpf
windows-phone-8.1

1 ответ

1
Лучший ответ

Я предлагаю использовать элемент управления 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

  • 0
    Большое спасибо! Это работало отлично
  • 0
    рад, что это помогло!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню