ios - 如何在 AVAudioRecorder 中控制 Opus 比特率

标签 ios swift avfoundation avaudiorecorder opus

我试图在 AVAudioRecorder 中设置 Opus (kAudioFormatOpus) 的比特率,但它不起作用。比特率始终在 20kb/s 左右。

let recordSettings =
    [AVEncoderBitRateKey: 32000,
     AVFormatIDKey: kAudioFormatOpus,
     AVSampleRateKey: 16000.0] as [String: Any]
let recordingFormat = AVAudioFormat(settings: recordSettings)!
let recorder = try! AVAudioRecorder(url: url, format: recordingFormat)
recorder.record()

我是不是做错了什么?

最佳答案

事实证明,在这种情况下初始化 AVAudioRecorder 的正确方法应该是:

let recordSettings =
    [AVEncoderBitRateKey: 32000,
     AVFormatIDKey: kAudioFormatOpus,
     AVSampleRateKey: 16000.0] as [String: Any]
let recorder = try! AVAudioRecorder(url: url, settings: recordSettings)
recorder.record()

不要尝试先初始化 AVAudioFormat 然后将其传递给 AVAudioRecorder。 而是直接使用设置调用 init:

AVAudioRecorder(url: url, settings: recordSettings)

关于ios - 如何在 AVAudioRecorder 中控制 Opus 比特率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55722828/

相关文章:

IOS - 来自本地 HTML 文件的 WKWebView 中的 CORS

ios - 收到 NSNotification 后执行选择器会调用我的 View Controller 的 deinit

ios - Storyboard segue 导致 AVAudioEngine 崩溃

avfoundation - 如何访问 AVAsynchronousCIImageFilteringRequest 中的帧号?

ios - UICollectionReusableView - 函数中缺少返回值

ios - 如何在我的项目中使用 SDWebImage

ios - 如何以编程方式在所有 iOS 设备上的 View 之间保持相等的空间?

swift 包管理器。错误 : Found multiple packages with the name. ..?

ios - 如何从数据库中的随机点开始使用 Parse 发出请求?

ios - 将两个视频与 AVMutableComposition 合并,但其中一个播放效果不佳