@property (nonatomic, readonly, getter=isCompatibleWithAirPlayVideo) BOOL compatibleWithAirPlayVideo;指⽰资产是否与AirPlay Video兼容。如果⽤asset初始化的AVPlayerItem可以通过AirPlay Video由外部设备播放则为YES,反之为NO。 @property (nonatomic, readonly) NSArray<AVAssetTrack *> *tracks;asset包含的所有轨道(AVAssetTrack的实例)的集合;
- (nullable AVAssetTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;返回具有指定轨道ID的轨道,如果指定trackID的轨道不不存在,则返回nil; - (NSArray<AVAssetTrack *> *)tracksWithMediaType:(AVMediaType)mediaType;返回呈现指定类型媒体的资产的资产轨道数组; - (NSArray<AVAssetTrack *> *)tracksWithMediaCharacteristic:(AVMediaCharacteristic)mediaCharacteristic;返回呈现具有指定特征的媒体的
AVAssetTrack对象的数组;
@property (nonatomic, readonly) NSArray<AVAssetTrackGroup *> *trackGroups返回asset中所有轨道组(不同的轨道分组)的数组;
访问元数据相关
@property (nonatomic, readonly, nullable) AVMetadataItem *creationDate; ;获取asset的创建⽇期,该属性可能为nil,如果创建⽇期已被asset以可转换为NSDate对象的形式存储,则AVMetadataItem的dateValue属性将提供⼀个NSDate的实例。否则创建⽇期只能使⽤其stringValue值作为字符串值。
@property (nonatomic, readonly, nullable) NSString *lyrics; 提供对适合当前语⾔环境的asset的⽂字歌词的访问;
@property (nonatomic, readonly) NSArray<AVMetadataItem *> *commonMetadata; 属性中包含着当前视频公共密钥空间中常见格式类型的元数据;
@property (nonatomic, readonly) NSArray<AVMetadataItem *> *metadata属性中包含当前视频所有格式类型的元数据;
@property (nonatomic, readonly) NSArray<AVMetadataFormat> *availableMetadataFormats;⼀组字符串,每个字符串都代表资产可⽤的元数据格式;
- (NSArray<AVMetadataItem *> *)metadataForFormat:(AVMetadataFormat)format;根据元数据格式返回AVMetadataItem对象数组。
以上是常⽤的A VA s s e t属性和⽅法,下⾯就介绍其常⽤⼦类A VURL A s s e t的相关属性和⽅法。
AVURLAsset 是AVAsset⽤来从本地或远程URL初始化资产的具体⼦类。
- (instancetype)initWithURL:(NSURL *)URL options:(nullable NSDictionary<NSString *, id> *)options;指定的初始化⽅法;其中,options是包含⽤于⾃定义资产初始化选项的字典。有关键如下:
AVF_EXPORT NSString *const AVURLAssetPreferPreciseDurationAndTimingKey : 对应的值是⼀个包含在NSNumber对象中的BOOL值,表⽰资产是否应该准备好指⽰⼀个精确的持续时间,并提供准确的随机访问。YES,提供,NO不提供。 如果将nil作为options参数的值传递或者如果传递的值不是AVURLAssetPreferPreciseDurationAndTimingKey对应的@0 或者@1的时,则默认值为NO。如果该资产(asset)仅⽤于播放,由于AVPlayer在全部精度不可⽤时将⽀持按时间进⾏近似随机访问,因此缺省值为NO即可。 如果要将资产插⼊到
AVMutableComposition中,则通常需要精确的随机访问,建议使⽤YES值。QuickTime电影⽂件和M
PEG-4⽂件为精确计时提供了⾜够的摘要信息,并且不需要额外的解析来准备,⼀般使⽤NO即可,其他格式不能提供⾜够的摘要信息,只有在对⽂件内容进⾏初步检查之
后,才能对其进⾏准确的随机访问。如果资产的URL所引⽤的定时媒体资源不能实现精确的持续时间和定时,则即使通过使⽤此密钥请求精确的定时,AVAsset.providesPreciseDurationAndTiming也将为NO。
AVF_EXPORT NSString *const AVURLAssetReferenceRestrictionsKey:设置在解析对外部媒体数据的引⽤时资源使⽤的限制。 这个键的值是⼀个或多个包含AVAssetReferenceRestrictions枚举值。
AVF_EXPORT NSString *const AVURLAssetHTTPCookiesKey:默认情况下,AVURLAsset只能访问适⽤于AVURLAsset的URL的客户端默认cookie存储中的cookie。 可以使⽤此初始化选项来补充可⽤于资产的Cookie。(1、)HTTP cookie不适⽤于⾮HTTP(S)URLS。
(2、)在HLS --- 流媒体中,许多HTTP请求(例如,媒体,密钥,变体索引)可能被发布到不同的路径或主机。在这两种情况下,HTTP 请求中任何不适⽤于AVURLAsset的URL的Cookie都会丢失,这个init选项允许AVURLAsset为这些HTTP(S)请求使⽤额外的HTTP cookie。
AVF_EXPORT NSString *const AVURLAssetAllowsCellularAccessKey:指⽰是否允许代表此资产的⽹络请求使⽤蜂窝接⼝。默认YES。
+ (instancetype)URLAssetWithURL:(NSURL *)URL options:(nullable NSDictionary<NSString *, id> *)options;类⽅法,返回AVURLAsset的实例;
@property (nonatomic, readonly, copy) NSURL *URL;获取asset初始化的URL;
+ (NSArray<AVFileType> *)audiovisualTypes返回AVURLAsset类⽀持的⽂件类型的数组;
+ (NSArray<NSString *> *)audiovisualMIMETypes返回AVURLAsset类⽀持的MIME类型的数组;
+ (BOOL)isPlayableExtendedMIMEType: (NSString *)extendedMIMEType判断该asset是否可以使⽤给定的编解码器和容器类型播放;
@property (nonatomic, readonly) AVAssetResourceLoader *resourceLoader;获取资产相关联的资源加载器。
@property (nonatomic, readonly, nullable) AVAssetCache *assetCache iOS 10之后可⽤,获取与资产的关联资产缓存(如果存在);
- (nullable AVAssetTrack *)compatibleTrackForCompositionTrack:(AVCompositionTrack *)compositionTrack;返回可以将任何时间范围插⼊到给
定compositionTrack的资产轨迹。使⽤AVMutableCompositionTrack的- (BOOL)insertTimeRange:(CMTimeRange)timeRange ofTrack:(AVAssetTrack *)track atTime:(CMTime)startTime error:(NSError * _Nullable * _Nullable)outError⽅法将轨道插⼊。该⽅法是AVMutableComposition的⽅法 --- - (nullable AVMutableCompositionTrack *)mutableTrackCompatibleWithTrack:(AVAssetTrack *)track;的补充;