AVCaptureVideoPreviewLayer

AVCaptureVideoPreviewLayer

尽管我已经搜索过SO,并且多次阅读了有关AVCaptureConnectionAVCaptureSessionAVCaptureVideoPreviewLayerAVCaptureDeviceAVCaptureInput/Output的文档,但我仍然对所有这些AV内容感到困惑。当涉及到这一点时,对我来说一大堆抽象的单词没有多大意义。我要在这里为我阐明一些问题。

那么,谁能用简单的英语连贯地解释正确设置和使用媒体设备的逻辑?什么是AVCaptureVideoPreviewLayer?什么是AVCaptureConnection?输入输出?

我想了解制作这些东西的人在制作它时所拥有的基本思想。

谢谢

最佳答案

我希望我有更多的时间来撰写更详尽的答复。以下是一些简化的基础知识:

为了使用来自硬件的音频和视频(用于屏幕或文件),您需要使用AVCaptureConnections设置一个AVCaptureSession来帮助协调源和目的地。您可以使用 session 实例来启动和停止该过程,并设置一些输出属性,例如比特率和质量。您可以使用AVCaptureConnection实例来控制AVCaptureInputPort和AVCaptureOutputPort(或AVCaptureVideoPreviewLayer)之间的连接,例如监视声音的输入级别或设置视频的方向。

AVCaptureInputPort是AVCaptureDevice的不同输入-AVCaptureDevice是视频或音频的来源,例如相机或麦克风。通常,您将浏览所有可用的设备,并选择具有所需属性的设备,例如,它们是音频还是前置摄像头。

AVCaptureOutput是发送AV的位置-它可以是文件或例程,可让您实时处理数据等。

AVCaptureVideoPreviewLayer是一个OpenGL图层,已优化用于非常快速地渲染所选视频输入设备(前置或后置摄像头)的输出。通常,您可以使用它来向用户显示您正在使用的输入-就像照相机取景器一样。

如果您要使用这些东西,那么您必须阅读Apple的AV Foundation Programming Guide

这是一张可以帮助您的图片(来自上述文档):

更详细的视图:

10-08 03:23