AVAsset
AVAsset 是一个抽象的,不可变的类,模拟的视频和声音等视听媒体。一个资源可以包含一个或者多个轨道,目的是用来一起呈现和加工。一个完整的媒体类型不限于音频、视频、文本、关闭字幕,字幕。
概览
AVAsset 定义了组成资源的轨道的共同属性。你可以通过 AVAssetTrack
实例对象访问 轨道集合呈现(代表)的轨道。根据你的需要,你也可以对每一个轨道资源进行独立检查。
你经常使用的是 AVURLAsset
,AVAssest 具体的子类实例,使用 url 引用的视觉媒体资源,例如 流(包括HTTP live流), quickTime 媒体文件,MP3 文件,和另一些类型的文件。您还可以使用其他具体子类实例化一个资产, 用来扩展基本视觉音频模型的有用的方式。AVComposition为时间编辑。
资源的属性作为一个整体被定义在 AVAsset 中,此外,引用的实例AVAssetTrack代表轨道集合中的轨道, 每一个都可以单独检查。
符号
创建一个资源:
// 返回一个用来检查的媒体资源
/*
url : 媒体资源的引用
返回值: 一个 AVAsset 的具体子类(AVURLAsset)
*/
init(url: URL)
// objc
+ assetWithURL:
加载数据:
// 取消正在加载的所有的值
func cancelLoading()
- (void)cancelLoading;
检查一个资源
// 资源的持续时间(音视频资源的时长)
var duration: CMTime
// 提供精确的时间和时机
var providesPreciseDurationAndTiming: Bool
// 资源的创建时间
var creationDate: AVMetadataItem?
// 偏好速度(资源用来播放的自然速度)
var preferredRate: Float
// 偏好的形变(提供给呈现或处理的资源)
var preferredTransform: CGAffineTransform
// 偏好的音量(这个值总是会变,不总是1 )
var preferredVolume: Float
确定可用性(Determining Usability)
可用性属性有一个值为true时,表示操作可以执行,即使是真正的一组特定的条件下。例如:isPlayable的值是true ,即使资产保护的内容和需要特别授权使用,甚至在这之前授权。同样,isExportable的值是true的,即使只能使用一些AVAssetExportSession预设。这些属性将只返回false当没有条件可以执行相关的操作。
访问轨道(Accessing Tracks)
// 获取资源包含的轨道资源的集合
var tracks: [AVAssetTrack]
// 获取资源包含的轨道资源组的集合
var trackGroups: [AVAssetTrackGroup]
// 获取指定轨道 id 的轨道
func track(withTrackID: CMPersistentTrackID)
// 根据媒体类型来获取指定的轨道集合
func tracks(withMediaType: String)
// 根据媒体资源的特征来获取轨道集合
func tracks(withMediaCharacteristic: String)
// 获取未使用的轨道 id
func unusedTrackID()
访问元数据
// 资产在当前语音环境的歌词
var lyrics: String?
// 获取可用的元数据数组
var metadata: [AVMetadataItem]
// 常见的元数据
var commonMetadata: [AVMetadataItem]
// 可用的元数据格式
var availableMetadataFormats: [String]
// 获取指定格式的元数据
func metadata(forFormat: String)
元数据使用章节
var availableChapterLocales: [Locale]
func chapterMetadataGroups(withTitleLocale: Locale, containingItemsWithCommonKeys: [String]?)
func chapterMetadataGroups(bestMatchingPreferredLanguages: [String])