Получение текущей записи сегментов данных из AVAudioRecorder - PullRequest
1 голос
/ 02 марта 2012

Моя проблема заключается в следующем:

Мне нужно захватить каждые 320 байт необработанных аудиоданных.
Я делаю это с помощью NSTimer, который запускает метод каждые 0,02 секунды - это потому, что мне нужно записывать 8000 Гц и 16-битный монофонический звук, и я рассчитал, что это должно быть 50x в секунду (8000 * 16/320/8).

Итак, зная, что AVAudioRecorder сохраняет в файл, я могу получить каждые 320 байт из этого файла на [[NSData dataWithContentsOfURL:[audioRecorder url]] subdataWithRange:NSMakeRange(bytesUsed, 320)], но меня смущает то, что в тот момент, когда я начинаю при записи размер файлов данных составляет 4096 байт , а затем через 0,5 секунды - 9424 байт и увеличивается примерно на 5,3 тыс. байт каждые полсекунды.

Так что я запутался, если получаю правильные данные и думаю, что настройки могут быть неправильными. Текущие настройки для AVAudioRecorder:

[NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey,  
[NSNumber numberWithInt:16], AVLinearPCMBitDepthKey,  
[NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey,  
[NSNumber numberWithInt:16], AVEncoderBitRateKey,  
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,  
[NSNumber numberWithFloat:8000.0], AVSampleRateKey,

Итак, главная проблема:
Какие настройки я должен использовать?
Правильный ли это способ получения сегментов из текущей аудиозаписи?

Я прошу прощения за плохое объяснение, задавайте вопросы, чтобы помочь мне сделать его более понятным.

...