一、視頻的開始采集和停止采集
// 1.創(chuàng)建捕捉會(huì)話
let session = AVCaptureSession()```
- 2.給捕捉會(huì)話設(shè)置輸入源(攝像頭)

// 2.獲取捕捉會(huì)話的輸入源
// 2.1獲取攝像頭設(shè)備
guard let devices = AVCaptureDevice.devices(withMdeiaType: AvMediaTypeVideo) as? [AVCaptureDevice] else { return }
guard let device = devices.filter({ $0.position == .fornt }).first else { return }
// 2.2通過device創(chuàng)建AVCaptureInput對(duì)象
guard let videoInput = AVCaptureDeviceInput(device: device) else { return }
// 2.3將input添加到會(huì)話中
session.addInput(videoInput)```
// 3.給捕捉會(huì)話設(shè)置輸出源
let videoOutput = AVCaptureVideoDataOutput()
videoOutput.setSamoleBufferDelegate(self,queue: DdispatchQueue.global())
session.addOutput(videoOutput)```
- 4.給用戶設(shè)置一個(gè)可以看到的圖層(可選)
// 4.給用戶看到一個(gè)預(yù)覽圖層
let preViewLayer = AVCaptureVideoPreviewLayer()
preViewLayer.frame = view.bounds
view.layer.addSubLayer(preViewLayer)```
// 5.開始采集
session.startRunning()```
***
- ###停止采集步驟
- 1.讓session停止采集
- 2.移除預(yù)覽圖層

- ###設(shè)置代理,執(zhí)行代理方法

- ###iOS 10在info.plist設(shè)置攝像頭權(quán)限

- 參考代碼(設(shè)置視頻采集)
- ```
func setVideoCapture()
{
// 1.創(chuàng)建捕捉會(huì)話
let session = AVCaptureSession()
// 2.獲取捕捉會(huì)話的輸入源
// 2.1獲取攝像頭設(shè)備
guard let devices = AVCaptureDevice.devices(withMdeiaType: AvMediaTypeVideo) as? [AVCaptureDevice] else { return }
guard let device = devices.filter({ $0.position == .fornt }).first else { return }
// 2.2通過device創(chuàng)建AVCaptureInput對(duì)象
guard let videoInput = AVCaptureDeviceInput(device: device) else { return }
// 2.3將input添加到會(huì)話中
session.addInput(videoInput)
// 3.給捕捉會(huì)話設(shè)置輸出源
let videoOutput = AVCaptureVideoDataOutput()
videoOutput.setSamoleBufferDelegate(self,queue: DdispatchQueue.global())
session.addOutput(videoOutput)
// 4.給用戶看到一個(gè)預(yù)覽圖層
let preViewLayer = AVCaptureVideoPreviewLayer()
preViewLayer.frame = view.bounds
view.layer.addSubLayer(preViewLayer)
// 5.開始采集
session.startRunning()
} ```
##注意: 會(huì)話session和預(yù)覽圖層使用強(qiáng)引用,懶加載屬性即可(截圖展示)

***
***
***
#二、音頻的開始采集和停止采集
步驟和視頻一樣,這里貼出不同之處的核心代碼

- ###iOS 10在info.plist設(shè)置攝像頭權(quán)限

##注意: 由于音視頻的代理方法相同,我們根據(jù)connection區(qū)分音視頻



**至此,完成簡單的音視頻采集**
***
***
***
- ###切換攝像頭

- ###保存視頻
- 添加寫入文件的output(在開始采集視頻的時(shí)候開始寫入)

- 代理,可監(jiān)聽什么時(shí)候開始寫入(在停止采集視頻的時(shí)候停止文件寫入)



####后續(xù)會(huì)放上完整代碼補(bǔ)充、
***
***
***
- #github
| 項(xiàng)目 | 簡介 |
| : | : |
| [MGDS_Swif](https://github.com/LYM-mg/MGDS_Swift) | 逗視視頻直播 |
| [MGMiaoBo](https://github.com/LYM-mg/MGMiaoBo) | 喵播視頻直播 |
| [MGDYZB](https://github.com/LYM-mg/MGDYZB) | 斗魚視頻直播 |
| [MGDemo](https://github.com/LYM-mg/MGDemo) | n多小功能合集 |
| [MGBaisi](https://github.com/LYM-mg/MGBaisi) | 高度仿寫百思 |
| [MGSinaWeibo](https://github.com/LYM-mg/MGSinaWeibo) | 高度仿寫Sina |
| [MGLoveFreshBeen](https://github.com/LYM-mg/MGLoveFreshBeen) | 一款電商App |
| [MGWeChat](https://github.com/LYM-mg/MGWeChat) | 小部分實(shí)現(xiàn)微信功能 |
| [MGTrasitionPractice](https://github.com/LYM-mg/MGTrasitionPractice) | 自定義轉(zhuǎn)場練習(xí) |
| [DBFMDemo](https://github.com/LYM-mg/DBFMDemo) | 豆瓣電臺(tái) |
| [MGPlayer](https://github.com/LYM-mg/MGPlayer) | 一個(gè)播放視頻的Demo |
| [MGCollectionView](https://github.com/LYM-mg/MGCollectionView) | 環(huán)形圖片排布以及花瓣形排布 |
| [MGPuBuLiuDemo](https://github.com/LYM-mg/MGPuBuLiuDemo) | 瀑布流--商品展 |
| [MGSlideViewDemo](https://github.com/LYM-mg/MGSlideViewDemo) | 一個(gè)簡單點(diǎn)的側(cè)滑效果,仿QQ側(cè)滑 |
| [MyResume](https://github.com/LYM-mg/MyResume) | 一個(gè)展示自己個(gè)人簡歷的Demo |
| [GoodBookDemo](https://github.com/LYM-mg/GoodBookDemo) | 好書 |
- #[1、直播喵播MGMiaoBo下載](https://github.com/LYM-mg/MGMiaoBo)
- #[2、逗視:逗你玩的直播App,可下載試玩](https://github.com/LYM-mg/MGDS_Swift)
- >#看下效果


***
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。