Я пытаюсь записать формат Opus в iOS.Когда я тестирую записывающее устройство с форматом LinearPCM, т.е. функции wav
, AVAudioRecorderDelegate
и updateMeters вызывается правильно, и в URL записывающего устройства сохранен действительный файл, сохраненный по заданному пути.Вот конфигурация, которую я использую для перекодирования.
let fileMgr = FileManager.default
let dirPaths = fileMgr.urls(for: .documentDirectory,
in: .userDomainMask)
let soundFileURL = dirPaths[0].appendingPathComponent("audio.wav")
let recordSettings =
[AVEncoderAudioQualityKey: AVAudioQuality.low.rawValue,
AVEncoderBitRateKey: 16,
AVNumberOfChannelsKey: 1,
AVFormatIDKey : kAudioFormatLinearPCM,
AVSampleRateKey: 44100.0] as [String : Any]
Затем я попытался проверить его на Opus со следующими конфигурациями, но функции делегата не вызываются, значение метров постоянно -160db (тишина), а audioRecorder
url nil
, потому что я могу 'получить его в функции делегата:
func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) {
print(audioRecorder!.currentTime)
self.audioFileUrl = audioRecorder!.url
}
Конфигурации Opus, которые я использую:
let soundFileURL = dirPaths[0].appendingPathComponent("audio.opus")
let recordSettings =
[AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue,
AVEncoderBitRateKey: 16,
AVNumberOfChannelsKey: 1,
AVFormatIDKey : kAudioFormatOpus,
AVSampleRateKey: 44100.0] as [String : Any]
Как правильно настроить конфигурации для записи формата Opus для моего приложения для работы с аудио в социальных сетях,Что было бы лучше всего для 30-ти секундной загрузки аудио сообщений и прослушивания на стороне других пользователей.