У меня есть аудиофайл 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. Если это так, каково правильное расширение?
Если это не причина, я хотел бы знать, как еще я могу исправить свой код здесь. Спасибо!