Как прочитать звуковой файл в массив с плавающей запятой на iOS? - PullRequest
1 голос
/ 16 сентября 2011

Я хочу прочитать звуковой файл, я создаю этот файл сам, чтобы я мог выбрать все, что Audacity может вывести, в массив float, чтобы у меня был float mySoundOneSecond [44100]; и у меня будет полно данных, чтобы я мог манипулировать этими «необработанными» плавающими данными, как мне угодно, на устройствах iOS.

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Вам придется использовать API-интерфейс ExtFileReader C в CoreAudio.Это будет читать ваш файл в lPCM.Однако следует помнить, что технически полученные буферы не будут содержать значения с плавающей запятой, а будут 8,24-битные целые числа с фиксированной запятой типа AudioUnitSampleType.Не обманывайте себя typedef этого типа, это 8.24bit.

0 голосов
/ 16 сентября 2011

NSMutableData, вероятно, самый простой способ прочитать этот файл.Примерно так: *

NSMutableData *data = [NSMutableData dataWithContentsOfFile:path options:0 error:&error];
if (!data) { ... do something with the error ... }

float *mySoundOnSecond = [data mutableBytes];

Возможно, вы захотите передать NSDataReadingMapped в ваших опциях для этого типа приложения.Это сэкономит вам некоторое время, отображая файл в память, а не читая его все сразу.

Обратите внимание, что этот подход заблокирует поток, в котором он находится.Если файл большой, вы можете сделать это в фоновом потоке или использовать асинхронное чтение.Смотрите Руководство по программированию файловой системы для различных опций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...