程序员

AVFoundation 入门

2018-10-24  本文已影响18人  kvoxxx

前沿

随着移动技术的成熟和即将到来的5G时代 ,越来越多的公司开发移动视频软件来占领市场,随着抖音的登场 视频APP现已是火海一片,BAT纷纷入场。
为了能在红海中分一杯羹 我司决定开发一款赛马的视频观看项目,在项目的开发中 对苹果的AVFoundation框架进行了了解和学习 在学习过程中越来越佩服AVFoundation框架的厉害之处。我会分几篇文章来分析AVFoundation中常用的API和类

AVFoundation入门

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

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

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

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

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

AVFoundation框架语允许创建可以将多个音频和视频资源进行组合的应用程序,允许修改和编辑独立的媒体片段,随时修改音频文件的参数以及添加动画标题和场景切换效果。
AVFoundation有关资源组合的功能源于AVAsset的子类AVCompositionAVComposition中的轨道都是AVAssetTrack的子类AVCompositionTrack。一个组合轨迹本身由一个或多个媒体片断组成,由AVCompositionTrackSegment类定义,代表这个组合中的实际媒体区域,描述如下图所示:

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

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

视频的基本知识点

***** 视频编码框架 *****

***** 视频编码技术 *****

*muxing(合成):将视频流、音频流甚至是字幕流封装到一个文件中(容器格式(FLVTS)),作为一个信号进行传输。

以上就是视频开发中了解的基本知识点,下面几篇文章我会每个文章都会深入的去描述项目中经常用到的类
上一篇 下一篇

猜你喜欢

热点阅读