我正在尝试从MP3获取PCM数据。我正在使用AVAssetReaderOutput
,似乎可以正常读取数据。
while(true)
{
nextBuffer = [assetReaderOutput copyNextSampleBuffer];
if(nextBuffer)
{
countsample = CMSampleBufferGetNumSamples(nextBuffer);
NSLog(@"%i", countsample);
}
}
我注意到,如果我添加
countsample
,它等于歌曲中的秒数(假设采样率为44100hz)。由于这个原因,我确信阅读过程得到了很好的处理。但是,我想对这些数据执行各种DSP过滤器,但我需要对示例信息本身进行处理。如何访问示例数据?另外,我注意到CMSampleBufferGetNumSamples
总是返回8192
,除了歌曲的末尾。有没有办法增加/减少这个读取率?谢谢
最佳答案
将数据附加到NSMutableData
对象。
NSMutabelData *samples = [NSMutabelData data];
while(countsample)
{
nextBuffer = [assetReaderOutput copyNextSampleBuffer];
if(nextBuffer)
{
countsample = CMSampleBufferGetNumSamples(nextBuffer);
[samples appendBytes:nextBuffer length:countsample];
}
}
假定
countsample
和nextBuffer
已存在于您的代码中。