2011-09-28 62 views
2

我試圖從MP3中獲取PCM數據。我正在使用AVAssetReaderOutput,它似乎正在讀取數據。獲取AVAssetReader的採樣數據

while(true) 
{ 
    nextBuffer = [assetReaderOutput copyNextSampleBuffer]; 

    if(nextBuffer) 
    { 

     countsample = CMSampleBufferGetNumSamples(nextBuffer); 
     NSLog(@"%i", countsample); 
    } 

} 

我注意到,如果我加起來countsample,這相當於以秒爲單位的歌曲(假設44100hz採樣率)的數量。出於這個原因,我相信閱讀是完美的處理。但是,我想要做的是對這些數據執行各種DSP過濾器,但我需要在樣本信息本身上進行。我如何訪問示例數據?另外,我注意到CMSampleBufferGetNumSamples總是返回8192,除了在歌曲結尾處。有沒有辦法增加/減少這個讀取率? 謝謝

回答

3

將數據追加到NSMutableData對象。

NSMutabelData *samples = [NSMutabelData data]; 
while(countsample) 
{ 
    nextBuffer = [assetReaderOutput copyNextSampleBuffer]; 
    if(nextBuffer) 
    { 
     countsample = CMSampleBufferGetNumSamples(nextBuffer); 
     [samples appendBytes:nextBuffer length:countsample]; 
    } 
} 

countsamplenextBuffer假設已經在你的代碼存在。