AVAudioEngine Проблема воспроизведения аудио в реальном времени - PullRequest
0 голосов
/ 05 октября 2018

Я работаю над функцией PTT, при которой отправитель может отправлять аудио в виде массива байтов на сервер, а получатель может прослушивать его в режиме реального времени через сокетное соединение.

при попытке воспроизвести видео на приемникепрекратите использовать AVAudioEngine, он не работает.

    let buffer = dataToPCMBuffer(format: format16KHzMono!, data: data)
    let player = AVAudioPlayerNode()
    self.audioEngine?.attach(audioPlayerNode)   
    let mixer = self.audioEngine?.mainMixerNode

    self.audioEngine?.connect(player, to: mixer!, format: AVAudioFormat.init(commonFormat: AVAudioCommonFormat.pcmFormatInt16, sampleRate: 16000, channels: 1, interleaved: true) )

    self.playerQueue.async {
        self.audioPlayerNode.scheduleBuffer(buffer!) {
            print("stopping")
            if self.audioEngine!.isRunning  {
                self.audioPlayerNode.play()
            }else {
              try? self.audioEngine?.start()
        }
    }

И я столкнулся с падением ниже указанной строки.

 self.audioEngine?.connect(player, to: mixer!, format: AVAudioFormat.init(commonFormat: AVAudioCommonFormat.pcmFormatInt16, sampleRate: 16000, channels: 1, interleaved: true) )

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 07 октября 2018

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

...