Какое правильное расширение для файла opus для AVURLAsset? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть аудиофайл opus, который я записал следующим образом:

AVAudioRecorder(url: url, settings: [
  AVFormatIDKey: Int(kAudioFormatOpus),
  AVSampleRateKey: 24000,
  AVNumberOfChannelsKey: 1
])

Я могу воспроизвести файл без проблем с AVAudioPlayer. Теперь я пытаюсь показать для него форму волны и думаю, что для этого мне нужно загрузить ее в AVAsset. Мой код выглядит следующим образом:

let asset = AVURLAsset(url: audioURL, options: [AVURLAssetPreferPreciseDurationAndTimingKey: NSNumber(value: true as Bool)])

asset.loadValuesAsynchronously(forKeys: ["tracks", "duration"]) {
  var error: NSError?

  var loadedTrack: AVAssetTrack?
  switch asset.statusOfValue(forKey: "tracks", error: &error) {
  case .loaded:
    loadedTrack = asset.tracks.first
  case .failed, .cancelled, .loading, .unknown:
    log.error("Couldn't load asset for tracks: \(error?.localizedDescription ?? "Unknown error")")
    break
  default:
    break
  }

  ...
}

К сожалению, это не работает и выдает следующую ошибку:

Не удалось загрузить ресурс для треков: Не удается открыть

Мой URL-адрес является локальным URL-адресом ресурса с расширением .opus. Файл существует и может быть воспроизведен с вышеупомянутым AVAudioPlayer. В нескольких сообщениях SO я прочитал, что для работы AVURLAsset требуется расширение файла, и мне интересно, не подходит ли .opus. Если это так, каково правильное расширение?

Если это не причина, я хотел бы знать, как еще я могу исправить свой код здесь. Спасибо!

...