iOS Захват звука через гарнитуру Bluetooth выдает ошибку. AVFoundationErrorDomain Code = 11861 "Cannot Encode Media" - PullRequest
0 голосов
/ 31 января 2020

Я использую Xcode 11.3 с iOS 13.1, установленным на моем iPhoneX. Мой iPhoneX подключен через Bluetooth-гарнитуру SONY WI-C400 с микрофоном. Я пытаюсь записать мультимедиа в формате QuickTimeMov ie с MPEG4AA C для звука с гарнитуры Bluetooth следующим образом:

У меня есть следующий код для настройки AVAssetWriterInput для захвата звука.

let assetWriter = try AVAssetWriter(outputURL: outputURL, fileType: AVFileType.mov)
assetWriter.movieFragmentInterval = CMTimeMakeWithSeconds(1.0, preferredTimescale: AudioSources.timescale)

let audioOutputSettings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
                       AVNumberOfChannelsKey: 2, // stereo
                       AVSampleRateKey: 128000] as [String: Any]
let audioInput = AVAssetWriterInput(mediaType: AVMediaType.audio,
                                    outputSettings: audioOutputSettings)
if assetWriter.canAdd(audioInput!) {
    // canAdd is true
   assetWriter.add(audioInput!)
}

Я могу успешно добавить audioInput в assetWriter. Но когда аудиопакеты добавляются в audioInput следующим образом, я получаю ошибку

if audioInput?.isReadyForMoreMediaData ?? false {
    let success = audioInput?.append(sampleBuffer) ?? false
    if !success {
        if assetWriter?.status == AVAssetWriter.Status.failed {
            if assetWriter?.error != nil {
                print(assetWriter?.error)
                // Control comes here and error is getting printed
            }
        }
    }
}

Выводится ошибка

Optional(Error Domain=AVFoundationErrorDomain Code=-11861 "Cannot Encode Media" UserInfo={NSLocalizedFailureReason=The encoding parameters are not supported., NSLocalizedDescription=Cannot Encode Media, NSUnderlyingError=0x282f04ff0 {Error Domain=NSOSStatusErrorDomain Code=-12651 "(null)"}})

Чего мне здесь не хватает?

...