AVFoundation
捕捉會話 AVCaptureSession
捕捉設(shè)備 AVCaptureDevice
捕捉設(shè)備輸入 AVCaptureDeviceInput
-
捕捉設(shè)備輸出 AVCaptureOutput 抽象類
- AVCaptureStillImageOutput
- AVCaptureMovieFileOutput
- AVCaptureAudioDataOutput
- AVCaptureVideoDataOutput
捕捉連接 AVCaptureConnection
捕捉預(yù)覽 AVCaptureVideoPreviewLayer
設(shè)置Session
- 初始化
- 設(shè)置分辨率
- 配置輸入設(shè)備(AVCaptureDeviceInput)
- 音頻輸入 視頻輸入
- 配置輸出(靜態(tài)圖像輸出 視頻文件輸入)
- 判斷是否可以添加輸入輸出(攝像頭并不屬于任何一個app,屬于公共資源)
隱私權(quán)限申請
- 通訊錄 - Contacts Usage Description
- 麥克風
- 相冊
- 相機
- 地理位置
- 使用期間訪問地理位置
- 日歷
- 注意事項
- 藍牙
其他操作
- 切換前后攝像頭
- 捕捉設(shè)備(聚焦/曝光)
- device修改 (閃光燈/手電筒)
QuickTime
-
AVCaptureMovieFileOutput定義了方法將QuickTime影片捕捉到磁盤
錄制到最長時限 或 錄制到特定文件大小時為止
配置成保留最小可用磁盤空間
-
通常當QuickTime影片準備
發(fā)布時,影片頭的元數(shù)據(jù)處于文件的開始位置,這樣可以讓視頻播放器快速讀取頭包含的信息,來確定文件的內(nèi)容、結(jié)構(gòu)和其包含的多個樣本
的位置
-
不過 當
錄制一個QuickTime影片時,直到所有的樣片都完成捕捉后才成創(chuàng)建信息頭,當錄制結(jié)束時,創(chuàng)建頭數(shù)據(jù)并將它附在文件結(jié)尾處

image.png
-
將創(chuàng)建頭的過程放在所有影片樣本完成捕捉之后 存在一個問題
- 如遇到崩潰或中斷,像電話撥入,影片頭就不會被正確寫入,這樣就會在次盤生成一個不可讀的影片文件
AVCaptureMovieFileOutput提供了一個核心功能就是分段捕捉QuickTime影片

image.png
- 當錄制開始時,在文件最前面寫入一個最小化的頭信息,隨著錄制的進行,片段按照一定的周期寫入,創(chuàng)建完整的頭信息。默認每10秒寫入一個片段,可以通過 movieFragentInterval來修改。這樣就逐步創(chuàng)建了完整的QuickTime影片頭。
人臉識別
-
大概的技術(shù)分類
CoreImage
face++
OpenCV
libefacedetection (c++)
AVFoundation
vision
流程
- 視頻采集
- 為session添加metadata數(shù)據(jù)輸出 AVCaptureMetadataOutput
- 設(shè)置metadata范圍(人臉數(shù)據(jù)、二維碼、條碼.....)
- 開始捕捉(設(shè)置捕捉完成代理)AVCaptureMetadataOutputObjectsDelegate
- 獲取捕捉人臉相關(guān)信息
- 對人臉數(shù)據(jù)處理

image.png
-
歐拉角
- yaw - y軸旋轉(zhuǎn)的角度 偏移
- Pitch - x軸旋轉(zhuǎn)的角度 投擲、傾斜、墜落
- Roll - z周旋轉(zhuǎn)的角度 轉(zhuǎn)動
或者直觀感受下
yaw就是 搖頭
Pitch 就是點頭
Roll 就是左右搖擺
歐拉角中的旋轉(zhuǎn)

image.png
二維碼識別
CoreImage -> CIDetector / CIFiter
QR碼
Aztec碼: 登機牌
PDF417: 商品運輸