0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

iOS视频开发基础知识介绍

张康康 来源:陈翠 2019-07-29 18:27 次阅读

随着移动技术的成熟和即将到来的5G时代,越来越多的公司开始开发移动视频软件来占领市场,随着抖音的登场,视频APP现已是火海一片,连BAT也按奈不住纷纷入场。

AVFoundation

在开发领域AVFoundation框架是iOS开发视频的必用框架。该框架包含的类超过100个、大量协议的集合及许多不同的功能和常量。在第一次遇到这些问题时,看似掌握这个框架有一定的难度, 但是如果你将这个框架仔细地按功能单元进行分解,就会变得比较容易理解。下面就看一下AVFoundation所提供的一些核心功能。

音频播放和记录

AVAudioPlayer和AVAudioRecorder可以在应用程序中提供一种更简单的整合音频播放和记录的功能。这些方法并不是AVFoundation用于播放和记录音频的唯一方式,却是学习起来最简单并且功能最强大的方法

媒体文件检查

AVFoundation提供检查正在使用的媒体文件的功能。可以查看这些媒体资源来确定是否适合一些特定的任务,比如是否可以用于回放或其是否可以被编辑和导出。还可以获取该媒体资源相关的技术参数,比如内容持续时间 创建日期或首选播放音量等。此外,该框架还基于AVMetadataItem类提供功能强大的元数据支持。这就允许开发者读写关于媒体资源的描述信息

视频播放

AVFoundation框架可以让你播放从本地文件或远程流中获取的视频资源,并对视频播放和内容展示进行控制。这一部分的核心类是AVPlayer和AVPlayerItem,正是这两个类让你能够对资源的播放进行控制,此外它还可以整合其他更高级的功能,如控制子标题和章节信息等。或者让你链接访问音频和视频这两个不同的资源。

媒体捕捉

AVFoundation提供了一个丰富的API集来让你可以对这些设备进行精密控制。摄像头捕捉的核心类是AVCaptureSession,其作为所有活动的汇集点来接收摄像头设备由各路流发过来的电影和图片。这也是AVFoundation框架的一个可靠功能。

媒体编辑

AVFoundation框架语允许创建可以将多个音频和视频资源进行组合的应用程序,允许修改和编辑独立的媒体片段,随时修改音频文件的参数以及添加动画标题和场景切换效果。

AVFoundation有关资源组合的功能源于AVAsset的子类AVComposition。AVComposition中的轨道都是AVAssetTrack的子类AVCompositionTrack。一个组合轨迹本身由一个或多个媒体片断组成,由AVCompositionTrackSegment类定义,代表这个组合中的实际媒体区域 。

描述如下图所示:

iOS视频开发基础知识介绍

AVComposition和AVCompositionTrack都是不可变对象,提供对资源的只读操作。这些对象提供了一个合适的接口让应用程序的一部分可以进行播放或处理。但当需要创建自己的组合时,就需要使用AVMutableComposition和AVMutableCompositionTrack所提供的可变子类。要创建自定义组合,需指定在将要添加到组合的源媒体的时间范围,还要指定要添加片段的每个轨道的位置。

媒体处理

虽然通过AVFoundation框架可以在不通过对媒体资源字节一级进行操作的前提下实现大量功能,但有时你可能还是需要访问更底层的数据并对其进行操作。幸运的是,当需要执行更高级的媒体处理任务时,可以使用AVAssetReader和AVAssetWriter类来实现这些功能。这些类提供直接访问视频帧和音频样本的功能,所以可以对媒体资源进行任何更高级的处理。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • iOS
    iOS
    +关注

    关注

    8

    文章

    3321

    浏览量

    149161
  • 视频开发
    +关注

    关注

    0

    文章

    6

    浏览量

    5792
收藏 人收藏

    评论

    相关推荐

    电感基础知识 图文介绍

    `电感基础知识 图文介绍`
    发表于 08-16 19:34

    嵌入式linux系统开发基础知识介绍

    嵌入式linux系统开发基础知识介绍
    发表于 08-17 15:38

    IGBT的介绍和应用基础知识

    IGBT的介绍和应用,基础知识
    发表于 06-24 22:42

    电阻的基础知识介绍

    电阻基础知识介绍
    发表于 02-26 06:17

    介绍关于编程的基础知识

    关注、星标公众号,不错过精彩内容作者:strongerHuang对于软件工程师来说,代码升级(或程序更新)算是必备基础知识。下面将介绍关于编程的基础知识,以及结合STM32官方提供的De...
    发表于 07-27 08:13

    MatLab基础知识介绍

    MatLab学习笔记(一)纲要:界面介绍帮助系统基础知识基本数据类型一.界面介绍 (基于 MATLAB R2018a)  MATLAB的工作界面形式简洁,主要由标题栏、功能区、工具栏、当前目录窗口
    发表于 08-17 07:08

    介绍PLC的原理及基础知识

    在自动化控制领域,PLC应用十分广泛,这里开始介绍PLC的原理及基础知识
    发表于 09-09 09:07

    1602液晶基础知识介绍

    一、1602液晶基础知识介绍1、1602液晶的硬件接口介绍2、1602液晶的读写时序介绍3、1602液晶的指令介绍4、简单实例二、1602液
    发表于 11-22 07:08

    嵌入式linux应用开发基础知识

    学习路线第1篇:新学习路线、视频介绍、资料下载 BV12A411J7DG第2篇:环境搭建、linux基本操作、工具使用 BV19A411J7ci第3篇:开发板使用手册 BV1zV411U7H9第4篇
    发表于 12-24 08:18

    GSM基础知识介绍

    GSM基础知识介绍
    发表于 07-29 17:18 75次下载
    GSM<b class='flag-5'>基础知识</b>的<b class='flag-5'>介绍</b>

    DAQ基础知识第一讲-视频教程

    DAQ基础知识第一讲-视频教程
    发表于 03-31 10:27 40次下载

    电子设计基础知识视频教程上册

    电子设计基础知识视频教程上册
    发表于 05-08 09:31 0次下载

    电子设计基础知识视频教程下册

    电子设计基础知识视频教程下册
    发表于 05-08 09:33 0次下载

    关于AVR开发基础知识介绍

    AVR开发基础知识
    的头像 发表于 07-10 03:56 1870次阅读
    关于AVR<b class='flag-5'>开发</b><b class='flag-5'>基础知识</b>的<b class='flag-5'>介绍</b>

    数字视频处理基础知识

    数字视频处理基础知识免费下载。
    发表于 03-28 15:08 0次下载