iOS自定义摄像机或者拍照

来源:互联网 发布:me452ch a是什么网络 编辑:程序博客网 时间:2024/06/06 02:28
AVFoundtion拍照和视频录制相关类

输入设备:麦克风/摄像头
输出设备:图片/视频

AVCaptureSession:媒体捕捉会话,把捕捉到的音视频数据输出到输出设备中.

AVCaptureDevice:输入设备.设置一些物理设备的属性(聚焦,白平衡等)

AVCaptureDeviceInput:输入数据管理.

AVCaptureOutput:输出数据管理.子类有
nsdata类型的(AVCaptureDataOutput)(AVCaptureAudioDataOutput,AVCaptureStillImageOutput,AVCaptureVedioDataOutput)

文件类型的(AVCaptureFileOutput),其中子类:AVCaptureAudioFileOutput,AVCaptureMovieFileOutput

上面这些一旦添加到会话张,就会在所有相符的输入输出设备之间建立连接.

AVCaptureVedioPreviewLayer:相机拍摄预览图层,可以实时查看拍照或视频录制效果,需要指定相对应的AVCaptureSession对象.


使用AVFoundtion拍照或者录制视频的一般步骤:
1.创建AVCaptureSesion对象
2.使用使用AVCaptureDevice获取设备(摄像头或者麦克风)
3.利用AVCaptureDevice初始化AVCaptureDevideInput对象
4.初始化输出数据对象,拍照就用AVCaptureStillImageOutput对象,视频就用AVCaptureMovieFileOutput对象.
5.将数据输入和输出对象添加到会话管理对象AVCaptureSession中.
6.创建视频预览图层AVCaptureVedioPreviewLayer并指定媒体会话,添加图层到显示容器中,调用AVCaptureSession的startRuning方法开始捕获.
7.将捕获的音频或视频数据输出到指定文件.



AVCapturDataOutput和AVAssetWriter

如果想要更多的操作,比如对视频添加滤镜要使用这种组合.这些输出会将各自捕捉到的视频和音频的样本缓存,接着发送到他们的代理

配置一个 asset writer 需要定义一个输出 URL 和文件格式,并添加一个或多个输入来接收采样的缓冲。我们还需要将输入的 expectsMediaInRealTime 属性设置为 YES,因为它们需要从 capture session 实时获得数据。
0 0
原创粉丝点击