iOS开发笔记首页投稿(暂停使用,暂停投稿)iOS点点滴滴

AVPlayer视频播放之 - AVAsset

2017-11-27  本文已影响398人  寻形觅影

 视频播放作为现在app端不可少的一部分,系统提供框架AVKit有时不能满足我们的需求和审美,所以大多数情况下我们会采用自定义AVPlayer的方式来实现视频播放功能。


自定义播放媒体所需的对象,如果仅实现单纯的播放功能,那么可以跳过AVAsset相关内容

 AVAsset:为定时视听媒体定义AVFoundation模型的抽象的、不可变的类。
 每个asset包含想要一起呈现或处理的统一的媒体类型轨道的集合。asset中的每个媒体数据片段都是统一的类型,称为轨道(track)。AVAsset是一个容器对象,由一个或多个AVAssetTrack实例组成,最常用的track类型是音频和视频track,AVAssetTrack还可以模拟其他辅助轨道,如隐藏式字幕,字幕和定时元数据。AVAsset通常通过具体的子类AVURLAsset通过NSURL实例化,该NSURL引用视听媒体资源,如流(包括HTTP实时流),QuickTime电影文件,MP3文件和其他类型的文件。

typedef struct
{
    CMTimeValue value;      // long long(int64_t)类型, CMTime的值, value/timescale = seconds(秒)
    CMTimeScale timescale;  // 循环次数 
    CMTimeFlags flags;      // CMTime标志位,也是结构体。
    CMTimeEpoch epoch;      //
} CMTime;
typedef CF_OPTIONS( uint32_t, CMTimeFlags ) {
    kCMTimeFlags_Valid = 1UL<<0,  // 必须设置,否则CMTime被认为是无效的,必须设置,否则CMTime被认为是无效的。
    kCMTimeFlags_HasBeenRounded = 1UL<<1, //在CMTime值xuya四舍五入或者从另一个四舍五入CMTime派生时设置。
    kCMTimeFlags_PositiveInfinity = 1UL<<2, // 如果CMTime是+ inf(正无穷),则设置
    kCMTimeFlags_NegativeInfinity = 1UL<<3, // 如果CMTime是- inf(负无穷),则设置
    kCMTimeFlags_Indefinite = 1UL<<4, // 如果CMTime不确定/未知,则设置。如直播的持续时间。
    kCMTimeFlags_ImpliedValueFlagsMask = kCMTimeFlags_PositiveInfinity | kCMTimeFlags_NegativeInfinity | kCMTimeFlags_Indefinite
};
typedef NS_OPTIONS(NSUInteger, AVAssetReferenceRestrictions) {
    AVAssetReferenceRestrictionForbidNone = 0UL, // 没有引用限制,应遵循所有类型的引用。
    AVAssetReferenceRestrictionForbidRemoteReferenceToLocal = (1UL << 0), // 禁止从远程引用到本地(下载)
    AVAssetReferenceRestrictionForbidLocalReferenceToRemote = (1UL << 1), // 禁止本地引用到远程 (上传)
    AVAssetReferenceRestrictionForbidCrossSiteReference = (1UL << 2), // 禁止远程跨站点引用
    AVAssetReferenceRestrictionForbidLocalReferenceToLocal = (1UL << 3), // 禁止除了存储在asset容器文件之外的本地引用本地
    AVAssetReferenceRestrictionForbidAll = 0xFFFFUL, // 禁止全部,只允许引用存储在asset容器文件中的媒体数据。
};

确定asset某些功能的可用性 ⤵️

访问轨道(tracks)相关 ⤵️

访问元数据相关 ⤵️

以上是常用的AVAsset属性和方法,下面就介绍其常用子类AVURLAsset的相关属性和方法。


AVURLAssetAVAsset用来从本地或远程URL初始化资产的具体子类。

1、MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
2、一个MIME类型包括一个类型(type),一个子类型(subtype)。此外可以加上一个或多个可选参数(optional parameter)。目前已被注册的类型名有applicationaudioexampleimagemessagemodelmultiparttextvideo。具体请参考

上一篇 下一篇

猜你喜欢

热点阅读