为了管理从相机或者麦克风等这样的设备捕获到的信息,我们需要输入对象(input)和输出对象(output),并且使用一个会话(AVCaptureSession)来管理 input 和 output 之前的数据流:
类名 | 简介 |
---|---|
AVCaptureDevice | 输入设备,例如 摄像头 麦克风 |
AVCaptureInput | 输入端口 [使用其子类] |
AVCaptureOutput | 设备输出 [使用其子类],输出视频文件或者静态图像 |
AVCaptureSession | 管理输入到输出的数据流 |
AVCaptureVideoPreviewLayer | 展示采集 预览View |
如图,通过单个 session,也可以管理多个 input 和 output 对象之间的数据流,从而得到视频、静态图像和预览视图
如图,input 可以有一个或多个输入端口,output 也可以有一个或多个数据来源(如:一个 AVCaptureMovieFileOutput 对象可以接收视频数据和音频数据)
当添加 input 和 output 到 session 中时,session 会自动建立起一个连接(AVCaptureConnection)。我们可以使用这个 connection 来设置从 input 或者 从 output 得到的数据的有效性,也可以用来监控在音频信道中功率的平均值和峰值。
使用 Session 来管理数据流
创建一个 session 用来管理捕获到的数据,需要先将 inputs 和 outputs 添加到 session 中,当 session 执行 [startRunning] 方法后就会开始将数据流发送至 session,通过执行[stopRunning] 方法来结束数据流的发送。
AVCaptureSession *captureSession =