Я вижу две возможные ошибки. Во-первых, как указал @invalidname, запись в стерео-формате, вероятно, не будет работать на монофоническом устройстве, таком как iPhone. Ну, это может сработать, но если это сработает, вы все равно просто вернете двойные монофонические стереопотоки, так зачем беспокоиться? Вы также можете настроить свой поток для работы в моно и сэкономить ресурсы ЦП.
Вторая проблема, вероятно, является источником искажения звука. Флаги формата описания вашего потока должны быть:
kAudioFormatFlagIsSignedInteger |
kAudioFormatFlagsNativeEndian |
kAudioFormatFlagIsPacked
Кроме того, не забудьте установить флаг mReserved в 0. Хотя значение этого флага, вероятно, игнорируется, не повредит явно установить его в 0 только для уверенности.
Редактировать : еще один более общий совет по отладке звука на iPhone - если вы получаете искажения, обрезки или другие странные эффекты, возьмите полезную информацию с телефона и посмотрите на запись Волновой редактор. Возможность уменьшить масштаб и посмотреть на отдельные образцы даст вам много подсказок о том, что происходит не так.
Для этого вам нужно открыть окно «Органайзер», нажать на свой телефон, а затем развернуть маленькую стрелку рядом с вашим приложением (там же, где вы обычно удаляете его). Теперь вы увидите небольшую стрелку, указывающую вниз, и если вы щелкнете по ней, Xcode скопирует данные из вашего приложения в другое место на вашем жестком диске. Если вы записываете свои записи на диск, вы найдете файлы, извлеченные здесь.