AVCaptureSession
管理捕獲活動(dòng)并協(xié)調(diào)從輸入設(shè)備到捕獲輸出的數(shù)據(jù)流的對(duì)象。
要執(zhí)行實(shí)時(shí)捕獲谁撼,需要實(shí)例化AVCaptureSession對(duì)象并添加適當(dāng)?shù)妮斎牒洼敵銎缧病O旅娴拇a片段演示了如何配置捕獲設(shè)備來(lái)錄制音頻。
// 創(chuàng)建捕獲會(huì)話。
AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];
// 查找默認(rèn)音頻設(shè)備喊巍。
AVCaptureDevice *audioDevice =
[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
// 將音頻設(shè)備包裝在捕獲設(shè)備輸入中屠缭。
NSError *error = nil;
AVCaptureDeviceInput *audioInput =
[AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:&error];
if (audioInput) {
//如果可以添加輸入,則將其添加到會(huì)話中崭参。
if ([captureSession canAddInput:audioInput]) {
[captureSession addInput:audioInput];
}
} else {
// 配置失敗呵曹。處理錯(cuò)誤。
}
您可以調(diào)用startRunning來(lái)啟動(dòng)從輸入到輸出的數(shù)據(jù)流何暮,并調(diào)用stopRunning來(lái)停止該流奄喂。
startRunning方法是一個(gè)阻塞調(diào)用,可能需要一些時(shí)間海洼,因此應(yīng)該在串行隊(duì)列上執(zhí)行會(huì)話設(shè)置跨新,以免阻塞主隊(duì)列(這使UI保持響應(yīng))。參見AVCam:構(gòu)建攝像機(jī)應(yīng)用程序的實(shí)現(xiàn)示例坏逢。
可以使用sessionpresetproperty自定義輸出的質(zhì)量級(jí)別玻蝌、比特率或其他設(shè)置。最常見的捕獲配置可以通過(guò)會(huì)話預(yù)置獲得;但是词疼,一些特殊的選項(xiàng)(例如高幀速率)需要直接在AVCaptureDevice實(shí)例上設(shè)置捕獲格式俯树。
管理輸入和輸出
inputs 捕獲會(huì)話的輸入。
- canAddInput:返回一個(gè)布爾值贰盗,該值指示是否可以將給定的輸入添加到會(huì)話中许饿。
- addInput:將給定的輸入添加到會(huì)話。
- removeInput:刪除給定的輸入舵盈。
outputs捕獲會(huì)話的輸出陋率。 - canAddOutput:返回一個(gè)布爾值,該值指示是否可以將給定的輸出添加到會(huì)話中秽晚。
- addOutput:將給定的輸出添加到會(huì)話瓦糟。
- removeOutput:刪除給定的輸出。
管理運(yùn)行狀態(tài)
——startRunning告訴接收者開始運(yùn)行赴蝇。
——stopRunning告訴接收者停止運(yùn)行菩浙。
running指示接收器是否正在運(yùn)行。
interrupted指示接收器是否已被中斷句伶。
AVCaptureSessionRuntimeErrorNotification如果在捕獲會(huì)話期間發(fā)生錯(cuò)誤劲蜻,則提交。
AVCaptureSessionDidStartRunningNotification捕獲會(huì)話開始時(shí)發(fā)布考余。
AVCaptureSessionDidStopRunningNotification當(dāng)捕獲會(huì)話停止時(shí)發(fā)布先嬉。
AVCaptureSessionWasInterruptedNotification如果捕獲會(huì)話被中斷,則發(fā)布楚堤。
AVCaptureSessionInterruptionEndedNotification捕獲會(huì)話中斷結(jié)束時(shí)發(fā)布疫蔓。
AVCaptureSessionErrorKey檢索錯(cuò)誤對(duì)象的鍵
AVCaptureSessionRuntimeErrorNotification用戶信息字典含懊。
AVCaptureSessionInterruptionReasonKey檢索有關(guān)捕獲中斷的信息的鍵
AVCaptureSessionWasInterruptedNotification用戶信息字典。
AVCaptureSessionInterruptionSystemPressureStateKey檢索有關(guān)導(dǎo)致捕獲會(huì)話中斷的系統(tǒng)壓力因素的信息的鍵衅胀。
AVCaptureSessionInterruptionReason類中找到的確定捕獲會(huì)話中斷原因的常量
AVCaptureSessionWasInterruptedNotification用戶信息字典绢要。
配置更改
——beginConfiguration指示要自動(dòng)進(jìn)行的一組配置更改的開始。
——commitConfiguration提交一組配置更改拗小。
預(yù)設(shè)管理會(huì)議
AVCaptureSessionPreset屬性來(lái)定義捕獲設(shè)置預(yù)置
sessionPreset
sessionPreset表示輸出的質(zhì)量水平或比特率的一個(gè)常數(shù)值。
- canSetSessionPreset:返回一個(gè)布爾值樱哼,該值指示會(huì)話是否可以使用給定的預(yù)置哀九。
管理連接
connections由捕獲會(huì)話管理的連接數(shù)組。
addConnection:將給定的捕獲連接添加到會(huì)話搅幅。
- canAddConnection:返回一個(gè)布爾值阅束,該值指示是否可以將給定的連接添加到接收方。
- addInputWithNoConnections:將捕獲輸入添加到會(huì)話中而不形成任何連接茄唐。
- addOutputWithNoConnections:將捕獲輸出添加到會(huì)話中而不形成任何連接息裸。
- removeConnection:從會(huì)話中刪除捕獲連接。
共享應(yīng)用程序的音頻會(huì)話
usesApplicationAudioSession指示捕獲會(huì)話是否使用應(yīng)用程序的共享音頻會(huì)話沪编。
automaticallyConfiguresApplicationAudioSession一個(gè)布爾值呼盆,指示捕獲會(huì)話是否自動(dòng)更改應(yīng)用程序的共享音頻會(huì)話中的設(shè)置。
同步多個(gè)輸入和輸出
masterClock用于輸出同步的時(shí)鐘對(duì)象蚁廓。
管理顏色空間
automaticallyConfiguresCaptureDeviceForWideColor一個(gè)布爾值访圃,指定會(huì)話是否應(yīng)在可用的地方自動(dòng)使用寬色域顏色。