当前位置:首页 >  站长 >  编程技术 >  正文

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

 2020-04-28 18:55  来源: 互联网   我来投稿 撤稿纠错

  域名预订/竞价,好“米”不错过

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

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

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

(1 )AVCaptureSession + AVCaptureMovieFileOutput

1. 创建 AVCaptureSession

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

2. 设置音频、视频输入

3. 设置文件输出源

4.添加视频预览层

5.开始采集

6.开始录制

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

7.停止录制

8.停止采集

(2 )AVCaptureSession + AVAssetWriter

1.创建 AVCaptureSession

2.设置音频、视频输入

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

4.添加视频预览层

5.开始采集

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

6.开始录制

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

7.处理数据流

开始采集,数据流就会回调,所以这里用了变量 isRecording 来界定当前是否需要对数据处理,一般是在 startRecord 和 stopRecord 才会去处理数据流。

8.停止录制

9.停止采集

两种方案对比:

相同点:他们的数据采集都是通过 AVCaptureSession 处理,音频视频的输入源也是一致的,画面预览一致。

不同点:输出源不一样,前者输出是 fileUrl,也就是说在视频写入完成之前开发者无法操作处理;后者输出是 data,AVAssetWriter 需要拿到 AVCaptureVideoDataOutput 和 AVCaptureAudioDataOutput 两个单独的输出,然后分别处理再写入指定路径。输出方式不同,决定了开发者对视频处理剪裁压缩的方式也就不同,前者如果需要对视频剪裁压缩,就需要从本地取出完整的视频文件,再做处理;而 AVAssetWriter 拿到的是数据流 data,如果需要剪裁压缩,可以直接配置相关参数后处理数据流,这样写入本地的就是已经处理过的视频文件。

其他功能点扩充

1.聚焦处理

2.摄像头切换

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关标签
软件开发

相关文章

  • 远光软件出席央国企智慧司库建设实践论坛

    3月16日,由中国总会计师协会指导,中国总会计师协会信息化分会主办的“央国企智慧司库建设实践论坛”在北京召开。远光软件集团客户事业部总经理原娟娟受邀出席论坛,作《数智司库赋能管理创造价值》主题演讲,分享远光软件在央国企集团司库建设上的前沿探索与创新实践。2022年初,国务院国资委制定发布了《关于推动

    标签:
    软件开发
  • 再次上榜!麒麟软件荣获“中国年度最佳雇主-天津最佳雇主”

    近日,“出发!职场多元宇宙”2022中国年度最佳雇主颁奖盛典-天津站成功举办。麒麟软件凭借在人才培养与发展等方面的突出表现荣获“2022中国年度最佳雇主-天津最佳雇主”奖项。本次获评,是麒麟软件2021年度获得“年度最佳雇主-最具智造精神雇主”后再次荣登最佳雇主奖项榜单,是评委会对麒麟软件通过卓越的

    标签:
    软件开发
  • 国际认可 东软通过ISO 26262功能安全管理体系最高等级认证

    近日,东软集团正式通过ISO26262功能安全管理体系ASILD等级认证,获得由国际独立第三方检测、检验和认证机构德国莱茵TÜV颁发的认证证书,标志着东软在汽车电子领域的功能安全管理过程、系统开发流程、硬件开发流程、软件开发流程、支持过程、ASIL的功能安全分析等方面获得国际最高等级的权威认可。IS

    标签:
    软件开发
  • 东软集团与盛京金控集团联合成立健康医疗数据公司

    近日,由东软集团与盛京金控集团联合组建的“沈阳健康医疗数据有限公司”正式成立。该公司将秉承“政府授权、国有控股、企业运营”的原则,旨在通过互联网、大数据、人工智能等新一代信息技术和平台的连接,充分释放健康医疗数据要素的价值,支撑健康医疗服务产业数字化和数字产业化进程,催生相关产业新经济形态。

    标签:
    软件开发
  • 超150万生态支撑,麒麟软件推动重点行业解决方案落地

    2022年10月,党的二十大报告多次提及信息安全问题,强调健全新型举国体制,强化国家战略科技力量,提升国家创新体系整体效能。不久前发布的“数据二十条”探索并构建了数据产权、流通交易、收益分配、安全治理等四项制度。

    标签:
    软件开发

热门排行

信息推荐