AVAudioSourceNode как установить формат - PullRequest
0 голосов
/ 08 октября 2019

Я использую новый AVAudioSourceNode для предоставления потока сэмплов для воспроизведения через мой аудиоинтерфейс.

Однако я обнаружил, что AVAudioSourceNode выбирает свои собственные настройки формата.

engine.connect(srcNode, to: engine.mainMixerNode, format: stimulusFormat)

Я использую приведенную выше строку кода, чтобы подключить мой исходный узел к основному микшеру, используя формат'timulusFormat '. Я установил этот формат, используя:

let stimulusFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32,
        sampleRate: Double(sampleRate),
        channels: 1,
        interleaved: format.isInterleaved)

(спараметр с чередованием, запрашивающий то, что ожидает увидеть результат). Однако всякий раз, когда я запрашиваю формат моего srcNode (AVAudioSourceNode), консоль возвращает

<AVAudioFormat 0x600002131810:  2 ch,  44100 Hz, Float32, non-inter>

, поэтому ясно, что формат потока не установлен в строке соединения. Я также попытался изменить предпочтительную частоту дискретизации, однако это по-прежнему не меняет частоту дискретизации AVSourceNode. Все остальное в моем звуковом движке работает на частоте 48000 Гц, поэтому я не уверен, откуда он получает этот номер.

try AVAudioSession.sharedInstance().setCategory(.playAndRecord)
try AVAudioSession.sharedInstance().setPreferredSampleRate(Double(sampleRate))

Кто-нибудь может предложить способ определения формата потока?

...