Как найти код ошибки "com.apple.coreaudio.avfaudio"?

Где я могу получить информацию о com.apple.coreaudio.avfaudio коды ошибок, такие как:

Завершение работы приложения из-за необработанного исключения "com.apple.coreaudio.avfaudio", причина: "ошибка -50"

Я всегда получаю сообщение об ошибке при записи буфера PCM в AVAudioFile, Буфер приходит из AVAudioEngine выходной узел.

Ошибка:

* Завершение приложения из - за неперехваченное исключением 'com.apple.coreaudio.avfaudio', причина: 'ошибка -50' * Первый стек бросить вызов: (0x18eb46fe0 0x18d5a8538 0x18eb46eb4 0x1a8d051cc 0x1a8d731dc 0x1000d45e0 0x1000d4820 0x1a8d14654 0x1a8d146c0 0x1a8d8c26c 0x1a8d8c1fc 0x100ae5a10 0x100af1a84 0x100b001f8 0x100ae7a60 0x100af3128 0x100ae9634 0x100af5630 0x100af6f48 0x18dc0968c 0x18dc0959c 0x18dc06cb4) libC++abi.dylib: завершается с необработанным исключением типа NSException

Не могли бы вы помочь мне?

2 ответа

https://www.osstatus.com/search/results?platform=all&framework=all&search=-50

Я нашел ссылку только сейчас. Вы можете увидеть все коды ошибок кодирования яблока

Я не нашел точного описания ошибки, но, похоже, это общее исключение "неверные параметры".

В моем случае, и, вероятно, в вашем случае, проблема заключалась в несоответствии между буфером и форматом экземпляра AVAudioFile.

let settings: [String: Any] = [
    AVFormatIDKey: kAudioFormatLinearPCM,
    AVSampleRateKey: 44 * 1000,
    AVNumberOfChannelsKey: 2
]

do {

    try avFile = AVAudioFile(forWriting: URLFor(filename: "test.caf"), settings: settings)

    avEngine.inputNode?.installTap(onBus: 0, bufferSize: 1024, format: avEngine.mainMixerNode.outputFormat(forBus: 0)) {
        buffer, time in

        do {
            try self.avFile?.write(from: buffer)
        }
        catch {
            // TODO
        }

    }

    try avEngine.start()

} catch  {
    // TODO
}

В приведенном ниже примере я получаю ошибку "-50", когда создаю AVAudioFile в любом формате, кроме PCM, 2 канала 44 кГц.

У меня была аналогичная проблема, когда я получал ошибку com.apple.coreaudio.avfaudio -50 с несоответствующей частотой дискретизации. Мне просто нужно было настроить AVAudioFile, чтобы он соответствовал выходному формату mainMixerNode.

let format = engine.mainMixerNode.outputFormat(forBus: 0)

self.musicTrackFinalOutputFile = try AVAudioFile(forWriting: temporaryFileURL, settings:  [
          AVFormatIDKey: NSNumber(value:kAudioFormatMPEG4AAC),
          AVEncoderAudioQualityKey : AVAudioQuality.high.rawValue,
          AVEncoderBitRateKey : 320000,
          AVNumberOfChannelsKey: format.channelCount,
          AVSampleRateKey : format.sampleRate
])
Другие вопросы по тегам