美文网首页
AVFoundation Export

AVFoundation Export

作者: 程序猿小bai | 来源:发表于2019-05-27 17:19 被阅读0次

    Reading a Asset

    每个AVAssetReader对象只能关联一个Asset,但是这个Asset可以包含多个Track。

    在读取media data之前你必须给AVAssetReader创建的对象设置一个AVAssetReaderOutput。

    AVAssetReaderOutput有三个子类:

    AVAssetReaderTrackOutput   AVAssetReaderAudioMixOutput   AVAssetReaderVideoCompositionOutput

    Creating the Assert Reader

    Setting Up the Asset Reader Outputs

    在创建完asset reader之后,至少为其设置一个output。

    在配置outputs时确保alwaysCopiesSampleData属性为NO。

    如果你仅仅是从一个track或多个track读取media data,或者可能将media data转化成另一种数据格式,

    使用AVAssertReaderTrackOutput这个类。为你想读取Asset中每一个AVAssetTrack对象添加一个track output对象。

    使用一个asset reader解压一个audio track为Linear PCM过程如下:

    你可以使用AVssetReaderAudioMixOutput和AVAssetReaderVideoCompostitionOutput类读取

    使用AVAudioMix或者AVVideoComposition对象编辑后的media data相对应的。通常情况下上述

    两个output用在asset reader从AVCompostion对象读取media data时。

    a single audio mix output,你可以使用AVAudioMix对象将从asset中读取多个audio tracks mix(组合)在一起。

    在AVAssetReaderAudioMixOutput实例化之后 audio tracks是怎么样被mixed(组合在一起), 

    下面的代码说明如何使用asset中的所有audio tracks创建一个audio mix output ,解压audio tracks为Linear PCM ,

    并把一个audio mix 对象值给output。

    video composition output 的使用与audio mix output相似,

    你可以使用AVVideoCoposition对象将从asset读取多个video tracks合成

    从多个composited video tracks读取数据 ,解压成ARGB 并设置output过程如下:

    Reading the Asset's Media Data

    在设置好所有的outputs之后,调用asset reader的startReading方法开始读取数据。

    然后对每个output调用copyNextSampleBuffer方法取回media data,代码如下:


    相关文章

      网友评论

          本文标题:AVFoundation Export

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