一、视频的开始采集和停止采集
// 1.创建捕捉会话
let session = AVCaptureSession()```
- 2.给捕捉会话设置输入源(摄像头)

// 2.获取捕捉会话的输入源
// 2.1获取摄像头设备
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创建AVCaptureInput对象
guard let videoInput = AVCaptureDeviceInput(device: device) else { return }
// 2.3将input添加到会话中
session.addInput(videoInput)```
// 3.给捕捉会话设置输出源
let videoOutput = AVCaptureVideoDataOutput()
videoOutput.setSamoleBufferDelegate(self,queue: DdispatchQueue.global())
session.addOutput(videoOutput)```
- 4.给用户设置一个可以看到的图层(可选)
// 4.给用户看到一个预览图层
let preViewLayer = AVCaptureVideoPreviewLayer()
preViewLayer.frame = view.bounds
view.layer.addSubLayer(preViewLayer)```
// 5.开始采集
session.startRunning()```
***
- ###停止采集步骤
- 1.让session停止采集
- 2.移除预览图层

- ###设置代理,执行代理方法

- ###iOS 10在info.plist设置摄像头权限

- 参考代码(设置视频采集)
- ```
func setVideoCapture()
{
// 1.创建捕捉会话
let session = AVCaptureSession()
// 2.获取捕捉会话的输入源
// 2.1获取摄像头设备
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创建AVCaptureInput对象
guard let videoInput = AVCaptureDeviceInput(device: device) else { return }
// 2.3将input添加到会话中
session.addInput(videoInput)
// 3.给捕捉会话设置输出源
let videoOutput = AVCaptureVideoDataOutput()
videoOutput.setSamoleBufferDelegate(self,queue: DdispatchQueue.global())
session.addOutput(videoOutput)
// 4.给用户看到一个预览图层
let preViewLayer = AVCaptureVideoPreviewLayer()
preViewLayer.frame = view.bounds
view.layer.addSubLayer(preViewLayer)
// 5.开始采集
session.startRunning()
} ```
##注意: 会话session和预览图层使用强引用,懒加载属性即可(截图展示)

***
***
***
#二、音频的开始采集和停止采集
步骤和视频一样,这里贴出不同之处的核心代码

- ###iOS 10在info.plist设置摄像头权限

##注意: 由于音视频的代理方法相同,我们根据connection区分音视频



**至此,完成简单的音视频采集**
***
***
***
- ###切换摄像头

- ###保存视频
- 添加写入文件的output(在开始采集视频的时候开始写入)

- 代理,可监听什么时候开始写入(在停止采集视频的时候停止文件写入)



####后续会放上完整代码补充、
***
***
***
- #github
| 项目 | 简介 |
| : | : |
| [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) | 小部分实现微信功能 |
| [MGTrasitionPractice](https://github.com/LYM-mg/MGTrasitionPractice) | 自定义转场练习 |
| [DBFMDemo](https://github.com/LYM-mg/DBFMDemo) | 豆瓣电台 |
| [MGPlayer](https://github.com/LYM-mg/MGPlayer) | 一个播放视频的Demo |
| [MGCollectionView](https://github.com/LYM-mg/MGCollectionView) | 环形图片排布以及花瓣形排布 |
| [MGPuBuLiuDemo](https://github.com/LYM-mg/MGPuBuLiuDemo) | 瀑布流--商品展 |
| [MGSlideViewDemo](https://github.com/LYM-mg/MGSlideViewDemo) | 一个简单点的侧滑效果,仿QQ侧滑 |
| [MyResume](https://github.com/LYM-mg/MyResume) | 一个展示自己个人简历的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)
- >#看下效果


***
网友评论