Мне нужно воспроизвести аудио из буфера PCM. Буфер имеет тип Array. Я понятия не имею, как играть в это. Нужно ли сначала конвертировать это в AVAudioBuffer? Я искал решения, но понятия не имел.
Данные PCM выглядят так:
[2716, 3541, 3045, 1200, -7897, 1873...]
Я знаю, что выборка должна быть 2 байта на выборку. Итак, я думаю, что буфер содержит воспроизводимый контент. Но для AVAudioPlayer я вижу вход для данных, поэтому я преобразую это в данные, а затем передаю его в AVAudioPlayer
Это то, что я пробовал:
let data = Data(buffer: UnsafeBufferPointer(start: pcmOutputPointer, count: pcmOutputSize))
do
{
player = try AVAudioPlayer(data: PCMConverter.convert(data, sampleRate: 16000))
player?.volume = 1.0
player?.play()
}
catch let ex
{
print(ex.localizedDescription)
}
PCM Converter просто добавит WAVE-заголовок для данных PCM. Когда я играю в эту игру, раздается только короткий звуковой сигнал, затем игрок останавливается.