相关疑难解决方法(0)

如何在 Avfoundation 中正确更改采样率

我已经完成了这个简单的程序。它所做的只是同时记录和回放缓冲区。如果采样率为 44100 hz,一切正常,但如果我将采样率更改为 16000 或 8000,它根本不会产生任何声音,或者可能是一些听不见的白噪声。为什么会发生这种情况?

如何以不同的采样率进行录制?

以下代码我试过:

import UIKit
import AVFoundation

class ViewController: UIViewController  {

var engine = AVAudioEngine()
let player = AVAudioPlayerNode()
let audioSession = AVAudioSession.sharedInstance()
let newSrc:UnsafeMutablePointer<Float>! = nil
override func viewDidLoad() {
super.viewDidLoad()



let audioSession = AVAudioSession.sharedInstance()
print(audioSession.sampleRate) // here it prints 44100 hz. because it still using the internal mic.
do {

    try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: .allowBluetooth)
    try audioSession.setMode(AVAudioSessionModeDefault)
    try audioSession.setActive(true)

} catch {
}
print(audioSession.sampleRate) // here it will print 16000 hz if my bluetooth …
Run Code Online (Sandbox Code Playgroud)

audio avfoundation sample-rate ios swift

5
推荐指数
1
解决办法
3331
查看次数

标签 统计

audio ×1

avfoundation ×1

ios ×1

sample-rate ×1

swift ×1