iPhone 11: нет данных с микрофона после подключения микшера к AVAudioEngine - PullRequest
0 голосов
/ 28 октября 2019

У меня есть приложение для записи, которое использует AVAudioEngine. Я подключаю микшер к микрофону, чтобы преобразовать данные в нужный формат, а затем прикрепляю к микшеру сигнал, чтобы получить данные. Раньше он работал нормально, пока не вышел iPhone 11. В iPhone 11 данные, которые я получаю с микрофона, являются просто полной тишиной.

Получив сообщение о проблеме от пользователей приложения, я впервые проверил симулятор iPhone 11 в новейшем XCode и, как ни странно, там работает нормально. Поэтому я купил себе новый блестящий iPhone 11, и я мог только подтвердить, что приложение записывает ничего, кроме молчания.

Проблемная часть заключается в следующем:

let audioEngine = AVAudioEngine()
let inputNode = audioEngine.inputNode
let main = audioEngine.mainMixerNode
let inputFormat = inputNode.inputFormat(forBus: 0)
let outputFormat = AVAudioFormat(commonFormat: AVAudioCommonFormat.pcmFormatInt16, sampleRate: 44100, channels: 1, interleaved: true)

audioEngine.attach(downMixer)
audioEngine.connect(inputNode, to: downMixer, format: inputFormat)
audioEngine.connect(downMixer, to: main, format: outputFormat)
downMixer.installTap(onBus: 0, bufferSize: 640, format: outputFormat) { (buffer, time) -> Void in
    print("First 20 bytes of recorded data:", terminator: " ")
    let data = Data(buffer: buffer)
    var i = 0
    for byte in data {
        print("\(byte)", terminator: ", ")
        i += 1
        if i > 20 {
            break;
        }
    }
    print("")
}

Однажды эти строки:

audioEngine.connect(inputNode, to: downMixer, format: inputFormat)
audioEngine.connect(downMixer, to: main, format: outputFormat)

Выполняется, вывод с микрофона становится нулевым:

First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
First 20 bytes of recorded data: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
etc.

Я выполнил поиск в Интернете, и, похоже, ни у кого не возникло подобной проблемы. Я что-то не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...