加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

发布时间:2020-04-29 11:33:09 所属栏目:业界 来源:站长网
导读:副标题#e# 开发视频录制功能最简单的就是使用系统封装的 UIImagePickerController,但是这种方式比较封闭,可自定义东西比较少,所以就需要基于 AVFoundation 框架来开发视频录制功能。基于 AVFoundation 框架来开发,则需要自己手动设置设备音频,视频输入
副标题[/!--empirenews.page--]

开发视频录制功能最简单的就是使用系统封装的 UIImagePickerController,但是这种方式比较封闭,可自定义东西比较少,所以就需要基于 AVFoundation 框架来开发视频录制功能。基于 AVFoundation 框架来开发,则需要自己手动设置设备音频,视频输入、输出。

AVCaptureSession 是 AVFoundation 的核心类,用于管理捕获对象 AVCaptureInput 的视频和音频的输入,协调捕获的输出 AVCaptureOutput。AVCaptureOutput 的输出有两种方法:一种是直接以 movieFileUrl 方式输出;一种是以原始数据流 data 的方式输出,流程对比图如下:

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

下面详细讲解两种录制视频的方案:

(1)AVCaptureSession + AVCaptureMovieFileOutput

1. 创建 AVCaptureSession

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

注意:AVCaptureSession 的调用是会阻塞线程的,建议单独开辟子线程处理。

2. 设置音频、视频输入

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

3. 设置文件输出源

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

4.添加视频预览层

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

5.开始采集

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

6.开始录制

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

当实际的录制开始或停止时,系统会有代理回调。当开始录制之后,这时可能还没有真正写入,真正开始写入会回调下面代理,停止录制也是如此,所以如果你需要对录制视频起始点操作,建议通过系统的回调代理:

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

7.停止录制

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

8.停止采集

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

(2)AVCaptureSession + AVAssetWriter

1.创建 AVCaptureSession

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

2.设置音频、视频输入

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

3.设置音频 Data、视频 Data 输出

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

4.添加视频预览层

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

5.开始采集

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

和第一种方式不同,第一种方式是开始录制之后,movieFileOutput 的回调才会触发,停止录制回调触发之后也就完成了。AVCaptureSession + AVAssetWriter 方式因为在设置输出源的时候,把输出代理 (setSampleBufferDelegate)已经设置好了,所以一旦开始采集(startRunning),数据流回调也就触发了。

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

6.开始录制

这里需要创建AVAssetWriter,配置音频、视频录制参数,录制写入过程要单独开辟线程处理,避免阻塞线程,可以和 AVCaptureSession 放在同一线程处理。

【融云分析】基于 AVFoundation 框架开发小视频功能的方案解析

7.处理数据流

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读