Как воспроизвести звук из короткого буфера PCM в iOS? - PullRequest
0 голосов
/ 07 марта 2020

Мне нужно воспроизвести аудио из буфера 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. Когда я играю в эту игру, раздается только короткий звуковой сигнал, затем игрок останавливается.

...