尽管我已经在 AVCaptureConnection
、AVCaptureSession
、AVCaptureVideoPreviewLayer
、AVCaptureDevice
上多次搜索并阅读文档,AVCaptureInput/Output
...我仍然对所有这些 AV 东西感到困惑。说到这里,对我来说这是一大堆抽象的词,没有多大意义。我要求在这里为我阐明这个主题。
那么,有人可以用简单的英语连贯地解释媒体设备的正确设置和使用的逻辑吗?什么是 AVCaptureVideoPreviewLayer?什么是 AVCaptureConnection?输入/输出?
我想了解制作这个东西的人在制作它时的基本想法。
谢谢
最佳答案
我希望有更多时间来写更详尽的回复。以下是一些简化的基础知识:
为了处理来自硬件、发送到屏幕或文件的音频和视频,您需要使用 AVCaptureConnections 设置一个 AVCaptureSession 来帮助协调源和目标。您可以使用 session 实例来启动和停止该过程,并设置一些输出属性,例如比特率和质量。您可以使用 AVCaptureConnection 实例来控制 AVCaptureInputPort 和 AVCaptureOutputPort(或 AVCaptureVideoPreviewLayer)之间的连接,例如监视声音的输入级别或设置视频的方向。
AVCaptureInputPort 是与 AVCaptureDevice 不同的输入 - AVCaptureDevice 是您的视频或音频的来源,例如相机或麦克风。您通常会浏览所有可用设备,并选择那些具有您正在寻找的属性的设备,例如它们是否是音频,或者是否是前置摄像头。
AVCaptureOutput 是发送 AV 的位置 - 它可能是一个文件或一个允许您实时处理数据的例程等。
AVCaptureVideoPreviewLayer 是一个 OpenGL 层,经过优化,可以非常快速地渲染所选视频输入设备(前置或后置摄像头)的输出。您通常使用它来向用户显示您正在使用什么输入 - 有点像相机取景器。
如果你要使用这个东西,那么你必须阅读Apple的AV Foundation Programming Guide
这是一张可能对您有更多帮助的图片(来自上述文档):
更详细的 View :
关于ios - 相机设置逻辑 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15235558/