PCM - это просто цифровое представление аналогового аудиосигнала. К сожалению, он не содержит никаких метаданных об аудиоканалах, битовой глубине или частоте дискретизации - все это необходимо для правильного считывания указанных данных PCM. Я бы предположил, что AVAudioPlayer примет эти данные PCM, обернутые в объект NSData, до тех пор, пока вы сможете установить эти переменные вручную в объекте AVAudioPlayer. К сожалению, эти переменные доступны только для чтения, поэтому, несмотря на то, что в документации говорится, что AVAudioPlayer может обрабатывать все, что может обрабатывать Core Audio, он не может обрабатывать необработанные данные LPCM.
Как заявил zoul, я бы предположил, что самый простой способ сделать это - добавить WAV-заголовок, поскольку он информирует AVPlayer о необходимых выше переменных. Его размер составляет 44 байта, его легко смоделировать, и он хорошо определен - я использовал то же самое определение , которое было дано выше, для реализации кодирования и декодирования wav-заголовка. Кроме того, он просто добавляется к вашим неизмененным данным LPCM.