#iphone #objective-c #ios #audio #core-audio
#iPhone #objective-c #iOS #Аудио #ядро-аудио
Вопрос:
Я пытаюсь получить данные PCM из MP3. Я использую AVAssetReaderOutput
, и, похоже, данные считываются нормально.
while(true)
{
nextBuffer = [assetReaderOutput copyNextSampleBuffer];
if(nextBuffer)
{
countsample = CMSampleBufferGetNumSamples(nextBuffer);
NSLog(@"%i", countsample);
}
}
Я заметил, что если я сложу countsample
, это будет равно количеству секунд в песне (при условии частоты дискретизации 44100 Гц). По этой причине я уверен, что чтение обрабатывается идеально. Однако я хотел бы выполнить различные фильтры DSP для этих данных, но мне нужно сделать это для самой информации об образце. Как я могу получить доступ к образцу данных? Кроме того, я заметил, что CMSampleBufferGetNumSamples
всегда возвращается 8192
, кроме как в конце песни. Есть ли способ увеличить / уменьшить эту скорость чтения?
Спасибо
Ответ №1:
Добавьте данные к NSMutableData
объекту.
NSMutabelData *samples = [NSMutabelData data];
while(countsample)
{
nextBuffer = [assetReaderOutput copyNextSampleBuffer];
if(nextBuffer)
{
countsample = CMSampleBufferGetNumSamples(nextBuffer);
[samples appendBytes:nextBuffer length:countsample];
}
}
countsample
и nextBuffer
предполагается, что они уже существуют в вашем коде.