Доступ к камере MacBook с использованием форм С# и Xamarin.Mac в Visual Studio?

Мне нужно интегрировать видеопоток с камеры Macbook с помощью формы Xamarin.Mac. Однако во всей документации, которую я нашел, рассказывается только о том, как это сделать на платформах iOS и Android.

Как бы вы поступили, чтобы получить видеопоток с Macbook? Любые библиотеки, на которые я должен смотреть?


person net30    schedule 11.10.2017    source источник


Ответы (1)


Вы захотите просмотреть AVFoundation API (QTKit устарело).

Вы можете создать пользовательский модуль визуализации Xamarin.Forms View на основе NSView и назначить AVCaptureVideoPreviewLayer в качестве слоя элемента управления для потоковой передачи вывода камеры на этот элемент управления.

Сохраните ссылки уровня класса на следующие и убедитесь, что вы Dispose их, когда ваш элемент управления выходит за рамки, иначе будут утечки:

AVCaptureDevice device;
AVCaptureDeviceInput input;
AVCaptureStillImageOutput output;
AVCaptureSession session;

В настройках захвата вы можете захватить AV-устройство по умолчанию, если вы хотите использовать встроенную камеру FaceTime (также известную как iSight).

macOS/Формы Пример:

device = AVCaptureDevice.GetDefaultDevice(AVMediaTypes.Video);
input = AVCaptureDeviceInput.FromDevice(device, out var error);
if (error == null)
{
    session = new AVCaptureSession();
    session.AddInput(input);
    session.SessionPreset = AVCaptureSession.PresetPhoto;
    var previewLayer = AVCaptureVideoPreviewLayer.FromSession(session);
    previewLayer.Frame = Control.Bounds;
    Control.Layer = previewLayer;
    output = new AVCaptureStillImageOutput();
    session.AddOutput(output);
    session.StartRunning();
}

введите здесь описание изображения

Примечание. Большая часть фреймворка AVFoundation используется совместно iOS и MacOS, но есть некоторые различия, поэтому, если вы в конечном итоге посмотрите на пример кода iOS, имейте в виду, что вам может потребоваться изменить его для macOS.

person SushiHangover    schedule 12.10.2017
comment
Привет, SushiHangover, у тебя есть репозиторий github или что-то еще для твоего исходного кода? Я новичок в xamarin, было бы неплохо иметь образец для подражания. Спасибо - person Yini; 10.05.2019
comment
@Yini Я сомневаюсь, что у меня все еще есть этот пример через 1,5 года, но если я найду его позже, я пришлю вам еще один комментарий ... - person SushiHangover; 11.05.2019
comment
Спасибо! Я попробую сам сделать хак, посмотрим, как пойдет. - person Yini; 12.05.2019
comment
эй, спасибо, что заглянули в него. Я решил установить Windows на Mac и оттуда получить доступ к веб-камере. - person Yini; 17.05.2019
comment
Было бы здорово реализовать это решение в Xamarin.Forms.macOS. - person Amir Hajiha; 24.08.2019
comment
@AmirNo-Family Этот пример кода был взят из проекта Xamarin.Forms с использованием пользовательского модуля визуализации Forms View. - person SushiHangover; 24.08.2019