了解AVAssetReader和AVAssetReaderTrackOutput

时间:2014-06-07 06:05:55

标签: ios cocoa-touch ios7

我在程序中使用以下代码从录音中提取样本。我认为我理解了这个过程,但在阅读Apples开发人员指南时,我并不完全理解AVAssetReaderAVAssetReaderTrackOutput如何协同工作。

AVAssetReaderTrackOutput是否包含AVAssetReader读取的曲目数据?当我像这里一样将输出添加到阅读器时[reader addOutput:output];输出被视为阅读器使用的音频数据源?在开发人员指南中,它说addOutput“将一个给定的输出添加到接收器。”究竟什么是接收器?

AVAssetReader *reader = [[AVAssetReader alloc] initWithAsset:self.audioAsset error:&error];
AVAssetTrack *songTrack = [audioTrackArray objectAtIndex:0];
AVAssetReaderTrackOutput *output = [[AVAssetReaderTrackOutput alloc] initWithTrack:songTrack outputSettings:outputSettingsDict];
[reader addOutput:output];

1 个答案:

答案 0 :(得分:2)

AVAssetReader正在保存数据,以便访问您需要读取轨道的一些数据。音频和视频是不同的曲目。

要获取数据,您需要分配VAssetReaderTrackOutput。

“Receiver”是函数中对象的首字母缩写(精确是“message”)。所以

[receiver sendMessage:data];

这是一个电影示例代码:http://www.7twenty7.com/blog/2010/11/video-processing-with-av-foundation