一.基本概念
感謝http://www.reibang.com/p/f7146092e640等博主的技術分享。
AVCaptureSession:媒體(音帚呼、視頻)捕獲會話朽缎,負責把捕獲的音視頻數(shù)據(jù)輸出到輸出設備中。一個AVCaptureSession可以有多個輸入輸出叁幢。它用于協(xié)調(diào)輸入與輸出之間的數(shù)據(jù)流卖宠。
AVCaptureDevice:輸入設備,包括麥克風忧饭、攝像頭扛伍,通過該對象可以設置物理設備的一些屬性(例如相機聚焦、白平衡等)词裤,也就是物理輸入設備,例如攝像頭與麥克風刺洒。
AVCaptureDeviceInput:設備輸入數(shù)據(jù)管理對象鳖宾,可以根據(jù)AVCaptureDevice創(chuàng)建對應的AVCaptureDeviceInput對象,該對象將會被添加到AVCaptureSession中管理逆航。代表了AVCaptureDevice采集的輸入數(shù)據(jù)源鼎文。
AVCaptureOutput:輸出數(shù)據(jù)管理對象,用于接收各類輸出數(shù)據(jù)因俐,通常使用對應的子類拇惋,其代表了輸出數(shù)據(jù)源。
AVCaptureAudioDataOutput抹剩、
AVCaptureStillImageOutput撑帖、
AVCaptureVideoDataOutput、
AVCaptureFileOutput澳眷,
該對象將會被添加到AVCaptureSession中管理胡嘿。注意:前面幾個對象的輸出數(shù)據(jù)都是NSData類型,而AVCaptureFileOutput代表數(shù)據(jù)以文件形式輸出钳踊,類似的衷敌,AVCcaptureFileOutput也不會直接創(chuàng)建使用,通常會使用其子類:AVCaptureAudioFileOutput拓瞪、
AVCaptureMovieFileOutput缴罗。
AVCaptureVideoPreviewLayer:相機拍攝預覽圖層,是CALayer的子類吴藻,使用該對象可以實時查看拍照或視頻錄制效果瞒爬,創(chuàng)建該對象需要指定對應的AVCaptureSession對象
使用AVFoundation拍照和錄制視頻的一般步驟:
(1)創(chuàng)建AVCaptureSession對象。
(2)使用AVCaptureDevice的靜態(tài)方法獲得需要使用的設備沟堡,例如拍照和錄像就需要獲得攝像頭設備侧但,錄音就要獲得麥克風設備。
(3)利用輸入設備AVCaptureDevice初始化AVCaptureDeviceInput對象航罗。
(4)初始化輸出數(shù)據(jù)管理對象禀横,如果要拍照就初始化AVCaptureStillImageOutput對象;如果拍攝視頻就初始化AVCaptureMovieFileOutput對象粥血。
(5)將數(shù)據(jù)輸入對象AVCaptureDeviceInput柏锄、數(shù)據(jù)輸出對象AVCaptureOutput添加到媒體會話管理對象AVCaptureSession中。
(6)創(chuàng)建視頻預覽圖層AVCaptureVideoPreviewLayer并指定媒體會話复亏,添加圖層到 顯示容器中趾娃,調(diào)用AVCaptureSession的startRuning方法開始捕獲。
(7)將捕獲的音頻或視頻數(shù)據(jù)輸出到指定文件缔御。