AVAsset
2016-12-23 16:41:34 0 举报
AVAsset简介
作者其他创作
大纲/内容
AVAssetTrack(轨道)
包含当前视频所有可用元数据的格式类型
问题: 由于多媒体文件一般比较大,获取或计算出Asset中的属性非常耗时,apple对Asset的属性采用了懒惰加载模式。在创建AVAsset的时候,只生成一个实例,并不初始化属性。只有当第一次访问属性时,系统才会根据多媒体中的数据初始化这个属性。由于不用同时加载所有属性,耗时问题得到了一定缓解。但是属性加载在计算量比较大的时候仍旧可能会阻塞线程。
包含着当前视频常见格式类型的元数据
AVAsset
属性是AVMediaSelection类型,他的作用是主要是为各个媒体选项集合提供默认选项。
- (NSArray *)metadataForFormat:(NSString *)format;
通过locale和元数据的commonkey筛选出特定的元数据,这些元数据只在当前章节的时间段有效。
AVF_EXPORT NSString *const AVMetadataCommonKeyTitleAVF_EXPORT NSString *const AVMetadataCommonKeyCreatorAVF_EXPORT NSString *const AVMetadataCommonKeySubjectAVF_EXPORT NSString *const AVMetadataCommonKeyPublisher
- (nullable AVMediaSelectionGroup *)mediaSelectionGroupForMediaCharacteristic:(NSString *)mediaCharacteristic
CMTime duration(时长)
基本信息
通过metadataFormat
方案: 为了解决这个问题,AVFoundation提供了AVAsynchronousKeyValueLoading协议
AVAsset通过懒加载获取资源信息
获取方法(AVAsset)
当前Asset中可用的章节Locale(NSLocale对象)
@property (readonly) NSArray *availableChapterLocales
- (nullable AVAssetTrack *)trackWithTrackID:(CMPersistentTrackID)trackID;
preferredVolume(默认音量)
表示当前asset中有效的媒体特征选项。数组类型,里面包含着代表相应媒体特征的string.
通过传入一个媒体特征类型,返回可供选择的媒体选项集合。例如传入字幕的媒体特征类型,返回当前Asset的可供选择的字幕选项集合。
获取方法
preferredRate(默认速度)
creationDate(创建时间)
主要格式
- (NSArray *)tracksWithMediaCharacteristic:(NSString *)mediaCharacteristic;
通过指定一种语言,返回一个章节元数据数组。数组中越匹配指定语言的元数据,位置越靠前。
章节元数据 - AVTimedMetadataGroup
媒体选择
Asset中有一种特殊的元数据:章节。它是AVTimedMetadataGroup类型,这种类型表示一个只在特定时间段有效的元数据集合,也就是说章节中所包含的元数据只在当前章节的时间段有效。AVAsset中有3个章节相关的API:
- (NSArray *)chapterMetadataGroupsBestMatchingPreferredLanguages:(NSArray *)preferredLanguages;
- (NSArray *)tracksWithMediaType:(NSString *)mediaType;
包含当前视频所有格式类型的元数据
AVMetadataItem(元数据)
for (NSString *characteristic in asset.availableMediaCharacteristicsWithMediaSelectionOptions) { AVMediaSelectionGroup *group = [asset mediaSelectionGroupForMediaCharacteristic:characteristic]; AVMediaSelectionOption *option = [asset.preferredMediaSelection selectedMediaOptionInMediaSelectionGroup:group]; NSLog(@\"对应媒体特征%@的默认媒体选项是%@\
- (NSArray *)chapterMetadataGroupsWithTitleLocale:(NSLocale *)locale containingItemsWithCommonKeys:(nullable NSArray *)commonKeys
@protocol AVAsynchronousKeyValueLoading@required - (void)loadValuesAsynchronouslyForKeys:(NSArray *)keys completionHandler:(nullable void (^)(void))handler;- (AVKeyValueStatus)statusOfValueForKey:(NSString *)key error:(NSError * __nullable * __nullable)outError;@end
0 条评论
下一页
为你推荐
查看更多