我需要使用Xamarin.Mac表格整合Macbook相机中的视频流。但是,我发现的所有文档仅告诉您如何在iOS和Android平台上执行此操作。
您如何从Macbook获取视频流呢?我应该看看哪些图书馆?
答案 0 :(得分:5)
您需要查看AVFoundation
API(已弃用QTKit
)。
您可以根据NSView
创建自定义Xamarin.Forms视图渲染器,并将AVCaptureVideoPreviewLayer
指定为控件的图层,以将摄像头输出流式传输到此控件。
将类级别引用存储到以下内容,并确保在控件超出范围时Dispose
,否则会出现泄漏:
AVCaptureDevice device;
AVCaptureDeviceInput input;
AVCaptureStillImageOutput output;
AVCaptureSession session;
在捕获设置中,假设您要使用内置FaceTime相机(也称为iSight
),则可以获取默认AV设备。
macOS / Forms示例:
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更改它。