美文网首页
AV Fundation 视频播放概览

AV Fundation 视频播放概览

作者: 朽木自雕也 | 来源:发表于2020-10-21 23:38 被阅读0次

    AV Fundation 是苹果 OS X 系统 和 iOS 系统中用于处理基于时间的媒体数据的高级object-c 框架。通过开发所需的工具提供了大量强的功能集,让开发者能够基于苹果平台创建当下最先进的媒体应用程序。AV Foundation的构建考虑到了目前的硬件和应用程序,其设计过程高度依赖多线程机制。充分利用了多核硬件的优势并大量使用block 和GCD机制将复杂的计算进程放到后台线程运行,并且提供硬件加速操作,确保在大部分设备上应用程序能以最优的性能运行。avfoundation 的设计也充分考虑了电量效率来满足注入iPhone和iPad这类移动应用设备对电量控制的高要求。此外,从一开始该框架就是针对64位处理器设计的,可以发挥64位处理器的最大优势。

    视频的播放

    1. AVPlayer。AVFoundation的播放都围绕AVPlayer类展开,AVPlayer是一个用来播放基于时间的视听媒体控制器。支持本地播放、分步下载或通过HTTP live streaming 协议得到的媒体流。AVPlayer 是一个不可见组件。如果播放MP3 或ACC 音频文件,那么没有可视化的用户界面也不会有什么大问题,不过诸如要播放一个电影或一个视频,没有用户界面就太说不过去了。要将视频资源倒出到用户界面的目标位置,需要使用 AVPlayerLayer。
    2. AVPlayerLayer 构建基于 Core animation 之上,是 AVFoundation 中能找到的为数不多的可见组件。core animation 是 MAC 和iOS 平台负责图形渲染和动画的基础框架,主要用于平台资源的美化和动画流畅度提升, core animation 本身具有基于时间的特性,并且它基于 open GL,所以具有很好的性能,能非常好地满足 AVFoundation的各种需求。AVPlayerLayer 扩展了 CALayer类,并通过框架在屏幕上显示视频内容。这一图层不提供任何可视化的空间和附件,只用作视频内容的渲染面。创建AVPlayerLayer 需要一个指向AVPLayer 实例的指针,这样图层和播放器就紧密绑定在一起,保证了当前播放器基于时间的方法出现时使二者保持同步。AVPlayerLayer 与其他CALayer一样,可以设置为UIView 和NSView 的备用层,或者手动添加到一个已有层继承关系中。
    3. AVPlayerItem。我们最终的目的是使用AVPlayer 来播放 AVAssert。如果查看AVAssert 文档,可以找到一些用来获取数据的方法,比如获取时长、元数据、创建日期之类的信息。不过无法查到如何获取当前时间的方法,也没有媒体中查找到特定位置的方法。这是因为AVAssert 只包含媒体源的静态资源信息,这些不可变的属性用来描述媒体资源的静态状态。这就意味着仅使用AVassert 是无法实现播放功能的。当我们需要对一个资源及其相关曲目进行播放时,首先需要通过AVPlayerItem和AVPlayerItemTrack类构建相应的动态内容。AVPlayerItem 会构建媒体资源动态视角的数据模型,并保存AVPlayer 在播放资源是的呈现状态。在这个类中我们会看到诸如seekToTime的方法以及访问currentTime和presentationSize的属性。AVPlayerItem 由一个活多个媒体曲目组层,由 AVPlayerItemTrack 类建立模型。 AVPlayerItemTrack 实例用于表示播放器条目中的类型统一的媒体流,比如音频或视频。
      4.CMTime 为时间的表示给出了一种结构,即分数的方式。
    typedef struct {
        CMTimeValue value;
        CMTimeScale timescale;
        CMTimeFlags flags;
        CMTimeEpoch epoch;
    } CMTime;
    

    这个机构最关键两个值是value和timescale。value是一个64位整数值,timescale是一个32位整数值,在时间的呈现央视中分别作为分子和分母。

    // 0.5s
    CMTime half = CMTimeMake(1, 2)
    // 5s
    CMTime half = CMTimeMake(5, 1)
    

    相关文章

      网友评论

          本文标题:AV Fundation 视频播放概览

          本文链接:https://www.haomeiwen.com/subject/ogbymktx.html