AVFoundation 初解
更新:HHH   时间:2023-1-7


最近看了下官方文档,简单了解了下AVFoundation。

AVFoundation是iOS的几个框架之一,您可以用来播放和创建基于时间的视听媒体。 它提供了一个Objective-C接口,用于在详细级别上处理基于时间的视听数据。 例如,您可以使用它来检查,创建,编辑或重新编码媒体文件。 您还可以从设备获取输入流,并在实时捕获和播放过程中操作视频。


AV Foundation框架用来表示媒体的主要类是AVAsset。框架的设计主要由这种表示法指导。了解其结构将帮助您了解框架的工作原理。 AVAsset实例是一个或多个媒体数据(音频和视频轨道)的集合的聚合表示。它提供关于作为整体的集合的信息,例如其标题,持续时间,自然呈现大小等。 AVAsset不绑定到特定的数据格式。 AVAsset是用于通过URL和媒体创建asset实例并创建新合成的其他类的超类


Asset中的各个媒体数据片段是统一类型并称为轨道。在典型的简单情况下,一个轨道表示音频分量,另一个轨道表示视频分量;然而,在复杂的构成中,可能存在音频和视频的多个重叠轨道。Asset也可以具有元数据。


AV Foundation的一个重要概念是,初始化Asset或轨道并不一定意味着它已准备就绪。可能需要一些时间来计算项目的持续时间(例如,MP3文件可能不包含摘要信息)。在计算值时,不要阻塞当前线程,而是要求值并通过使用block的回调异步获取答案。


要创建视频演示的缩略图,您可以使用要从中生成缩略图的Asset来初始化AVAssetImageGenerator的实例。 AVAssetImageGenerator使用默认启用的视频轨道生成图像。


iOS 8之前提供了MPMoviePlayerController和MPMoviePlayerViewController两个类,它们提供了一种简单的方法将完整视频播放功能整合到应用中,相比较与AVKit, MPMoviePlayerController定义了一些标准播放控件,供我们选择,但是同时它将所有基础功能隐藏,让开发者无法使用AVPlayer层的更高级的基础功能.所以iOS9之后被易用.


而新的AVKit提供了一种动态播放控件,自动为用户提供最好的体验. 并且AVPlayerViewController也支持开发者使用AVPlayer更高级的功能.



返回开发技术教程...