AVFoundation
捕捉会话 AVCaptureSession
捕捉设备 AVCaptureDevice
捕捉设备输入 AVCaptureDeviceInput
-
捕捉设备输出 AVCaptureOutput 抽象类
- AVCaptureStillImageOutput
- AVCaptureMovieFileOutput
- AVCaptureAudioDataOutput
- AVCaptureVideoDataOutput
捕捉连接 AVCaptureConnection
捕捉预览 AVCaptureVideoPreviewLayer
设置Session
- 初始化
- 设置分辨率
- 配置输入设备(AVCaptureDeviceInput)
- 音频输入 视频输入
- 配置输出(静态图像输出 视频文件输入)
- 判断是否可以添加输入输出(摄像头并不属于任何一个app,属于公共资源)
隐私权限申请
- 通讯录 - Contacts Usage Description
- 麦克风
- 相册
- 相机
- 地理位置
- 使用期间访问地理位置
- 日历
- 注意事项
- 蓝牙
其他操作
- 切换前后摄像头
- 捕捉设备(聚焦/曝光)
- device修改 (闪光灯/手电筒)
QuickTime
-
AVCaptureMovieFileOutput定义了方法将QuickTime影片捕捉到磁盘
录制到最长时限 或 录制到特定文件大小时为止
配置成保留最小可用磁盘空间
-
通常当QuickTime影片准备
发布
时,影片头的元数据处于文件的开始位置,这样可以让视频播放器快速读取头包含的信息,来确定文件的内容、结构和其包含的多个样本
的位置
-
不过 当
录制
一个QuickTime影片时,直到所有的样片都完成捕捉后才成创建信息头,当录制结束时,创建头数据并将它附在文件结尾处
-
将创建头的过程放在所有影片样本完成捕捉之后 存在一个问题
- 如遇到崩溃或中断,像电话拨入,影片头就不会被正确写入,这样就会在次盘生成一个不可读的影片文件
AVCaptureMovieFileOutput提供了一个核心功能就是分段捕捉QuickTime影片
- 当录制开始时,在文件最前面写入一个最小化的头信息,随着录制的进行,片段按照一定的周期写入,创建完整的头信息。默认每10秒写入一个片段,可以通过 movieFragentInterval来修改。这样就逐步创建了完整的QuickTime影片头。
人脸识别
-
大概的技术分类
CoreImage
face++
OpenCV
libefacedetection (c++)
AVFoundation
vision
流程
- 视频采集
- 为session添加metadata数据输出 AVCaptureMetadataOutput
- 设置metadata范围(人脸数据、二维码、条码.....)
- 开始捕捉(设置捕捉完成代理)AVCaptureMetadataOutputObjectsDelegate
- 获取捕捉人脸相关信息
- 对人脸数据处理
-
欧拉角
- yaw - y轴旋转的角度 偏移
- Pitch - x轴旋转的角度 投掷、倾斜、坠落
- Roll - z周旋转的角度 转动
或者直观感受下
yaw就是 摇头
Pitch 就是点头
Roll 就是左右摇摆
欧拉角中的旋转
二维码识别
CoreImage -> CIDetector / CIFiter
QR码
Aztec码: 登机牌
PDF417: 商品运输