本文主要是封裝一個(gè)類,實(shí)現(xiàn)相機(jī)系統(tǒng)的靜態(tài)圖片捕捉以及視頻的功能外遇。
第一步:設(shè)置相關(guān)參數(shù):
第二步:初始化相關(guān)參數(shù):
1.初始化捕捉會(huì)話,以及設(shè)置圖像的分辨率契吉。
2.拿到默認(rèn)視頻捕捉設(shè)備跳仿,并設(shè)置為當(dāng)前活躍輸出對(duì)象
3.選擇默認(rèn)音頻捕捉設(shè)備
4.初始化攝像頭靜態(tài)捕捉對(duì)象以及設(shè)置捕捉到的圖片格式以及添加入捕捉會(huì)話對(duì)象那
5.創(chuàng)建一個(gè)AVCaptureMovieFileOutput 實(shí)例,用于將Quick Time 電影錄制到文件系統(tǒng)
第三步:開始捕捉和停止捕捉
第四步:配置攝像頭可支持的方法捐晶,看是否能支持?jǐn)z像頭切換菲语。
1.1:判斷攝像頭的設(shè)備數(shù)量是否大于1,如果不大于1的話惑灵, 就不支持切換谨究。
1.2獲取攝像頭的反向設(shè)備
1.3.切換攝像頭。首先獲取當(dāng)前的反向設(shè)備泣棋,然后標(biāo)注配置變化更改,得先移除當(dāng)前的活躍對(duì)象畔塔,然后再判斷能否添加對(duì)象潭辈,如果可以的話,就添加當(dāng)前對(duì)象澈吨,并設(shè)置為活躍對(duì)象把敢,如果不能添加,就把剛剛移除的對(duì)象重新添加回來(lái)谅辣。然后結(jié)束配置修赞。
2.1實(shí)現(xiàn)聚焦方法。首先判斷當(dāng)前攝像頭是否支持興趣點(diǎn)對(duì)焦以及是否自動(dòng)對(duì)焦桑阶。如果支持的話柏副,再對(duì)其進(jìn)行模式的切換,在切換過(guò)程蚣录,為了安全起見割择,對(duì)焦模式的更改必須對(duì)其進(jìn)行加鎖處理。
3.1實(shí)現(xiàn)曝光方法萎河。首先判斷是否支持曝光荔泳,重寫cameraSupportsTapToExpose的get方法
3.2 獲取點(diǎn)擊的曝光點(diǎn)蕉饼,然后看是否支持曝光,如果支持的話玛歌,則調(diào)整曝光模式昧港,如果當(dāng)前設(shè)備不再調(diào)整曝光模式,就使用KVO對(duì)其再進(jìn)行調(diào)整支子。在調(diào)整曝光模式當(dāng)前创肥,為了安全起見,得對(duì)當(dāng)前設(shè)備進(jìn)行加鎖處理译荞。
3.3?判斷設(shè)備是否不再調(diào)整曝光等級(jí)瓤的,確認(rèn)設(shè)備的exposureMode是否可以設(shè)置為AVCaptureExposureModeLocked,如果是的話吞歼,就將當(dāng)前模式調(diào)整為AVCaptureExposureModeLocked圈膏。
3.4 重新設(shè)置對(duì)焦和曝光模式。捕捉設(shè)備的范圍是0-1篙骡,判斷獲取對(duì)焦興趣點(diǎn) 和 連續(xù)自動(dòng)對(duì)焦模式 是否被支持稽坤,以及判斷確認(rèn)曝光度是否可以被重設(shè)。如果支持的話糯俗,將調(diào)整的范圍點(diǎn)給聚焦點(diǎn)和曝光點(diǎn)給賦值尿褪,并將其相關(guān)的模式給更改。
4.1 判斷是否有閃光燈
4.2 重寫閃光燈的get方法
4.3 設(shè)置閃光燈得湘,重寫他的set方法
5.1 是否支持手電筒
5.2 獲取它的手電筒模式
5.3 設(shè)置手電筒杖玲,重寫他的set方法
第五步:拍攝靜態(tài)圖片。首先獲取輸出鏈接淘正,然后判斷是否支持設(shè)置方向摆马,然后進(jìn)行調(diào)整。最后將捕捉成功的照片寫入相冊(cè)鸿吆。
1.1 獲取方向值
1.2.拍攝靜態(tài)圖片囤采,拍攝成功后,會(huì)傳入相冊(cè)惩淳,
1.3 寫入相冊(cè)蕉毯,成功后,發(fā)送捕捉圖片通知思犁。用于繪制程序的左下角的縮略圖代虾。
1.4 發(fā)送通知給VC,顯示縮略圖。
第六步:1.1捕捉視頻激蹲。首先判斷是否為錄制狀態(tài)褐着,如果否的話,就獲取當(dāng)前的捕捉鏈接信息托呕。然后判斷是否支持修改當(dāng)前的視頻方向含蓉。然后對(duì)其進(jìn)行更改频敛。然后設(shè)置當(dāng)前的視頻質(zhì)量為高質(zhì)量。然后寫入視頻的文件格式馅扣,最終進(jìn)行記錄斟赚。
1.2寫入視頻唯一文件系統(tǒng)URL 。這個(gè)文件是臨時(shí)文件差油,只有在最終錄制完成的時(shí)候拗军,才會(huì)顯示最后的mov格式。
1.3 停止記錄
1.4 實(shí)現(xiàn)回調(diào)的方法蓄喇,當(dāng)停止記錄的時(shí)候发侵,需要在回調(diào)方法那捕捉到的視頻寫入相冊(cè)。
-(void)captureOutput:(AVCaptureFileOutput*)output didFinishRecordingToOutputFileAtURL:(NSURL*)outputFileURL fromConnections:(NSArray *)connections error:(NSError*)error
1.5 將視頻寫入相冊(cè)妆偏,創(chuàng)建ALAssetsLibrary 對(duì)象刃鳄,然后判斷當(dāng)前的適配能否被寫入,如果可以的話钱骂,將捕捉到的視屏放進(jìn)一個(gè)block快那叔锐,然后調(diào)用writeVideoAtPathToSavedPhotosAlbum:completionBlock 方法,將其成功寫入见秽,如果成功寫入的話愉烙,就調(diào)用通知顯示視頻縮略圖。
1.6 獲取視頻的縮略圖解取。通常視頻的縮略圖都是為他的第一幀圖片步责。首先獲取它的AVAssetImageGenerator對(duì)象,然后在由AVAssetImageGenerator?設(shè)置他的maximumSize禀苦,這時(shí)候會(huì)根據(jù)他的寬度就可以了蔓肯,