关于 AVFoundation
1. AVAsset
表示一个或多个媒体数据(音频或视频),能提供媒体的信息(标题,时间,等待),AVAsset不依赖特定数据格式,通过媒体文件的URL即可创建。
AVAsset或track被初始化后,并不意味着马上就准备好,可能需要一些时间来计算文件的持续时间。所以需要定义一个块,通过异步回调返回状态。
2. Playback
AVFoundation 允许你管理播放asset,为了支持这一点,他将asset的的表现状态从asset本身分离出来。
例如:在不同的方案中,同一时间播放相同asset的两个不同段。
asset的表现状态有player item对象管理;asset的每个track的表现状态由player item track 对象管理。
用player对象播放player items,直接将player的输出到Core Animation layer上。
可以使用player queue 按顺序暴风多个items。
3. Reading,Writing,and Reencoding Assets
AVFoundation 允许你通过多种方法创建asset新的表现形式。可以简单的操作现有的asset,或者在一个asset上进行操作,将结果保存为一个新的asset。
你可以使用asset reader 和asset writer 对象把asset从一种表现形式转换成另一种。
例如:选择在输出文件中表现的轨道,指定您自己的输出格式,或者在转换过程中修改asset。
4. Thumbnails
创建视频的缩略图,需要通过asset来初始化一个AVAssetImageGenerator实例。
使用默认开启的视频轨道生成图像。
5. Editing
AVFoundation通过多种现有的媒体块,组合创建新的assets(通常是一个或多个视频和音频轨道)。
你用可变的添加和删除轨道,调整时间排序。也可以设置相对音量,增加音频轨道;并设置不透明度,视频轨道。
你可以通过媒体文件创建一个asset,例如用asset writer 生成的数据或静态图片。
6. Still and Video Media Capture
capture session 管理从相机和麦克风中捕获数据输入。capture session 协调从输入设备到输出,如电影文件的数据流。
你可以为一个session配置多个输入和输出,即使session正在运行。你可以发送消息到session来启动和停止数据流。
另外,你可以用preview layer 的一个实例来为用户显示相机当前正在录制的信息。