AVAssetReader视频数据读取
AVAssetReader介绍 可以通过AVAssetReader获取视频文件里媒体样本,可以直接从存储器中读取未解码的原始媒体样本,获得解码成可渲染形式的样本。 文档里说明AVAssetrader管道内部是多线程的。初始化之后,读取器在使用前加载并处理合理数量的样本数据,以copyNextSampleBuffer(AVAssetReaderOutput)等检索操作的延迟非常低。但AVAssetReader还是不适用于实时源,并且它的性能也不能保证用于实时操作。 由于使用前需要加载并处理一些样本数据,导致占用的内存可能会比较大,需要注意同一时间使用的reader个数不要过多,视频像素越高,占用的内存也会越大。 AVAssetReader初始化 使用AVAsset对AVAssetReader进行初始化,前面也说了初始化之后就会加载样本数据,所以这一步就已经会对内存产生印象,如果内存紧张就不要预先初始化。 NSError *createReaderError; _reader = [[AVAssetReader alloc]initWithAsset:_asset error:&createReaderError]; AVAssetReader设置Output 在开始读取之前,需要添加output来控制读取初始化使用的asset中哪些track,以及配置如何读取。