在iOS中使用usb音频设备的外部时钟源

我的应用程序使用外部USB麦克风和非常精确的热补偿石英振荡器(TCXO).采样率为48KHz.
我通过相机套件连接器将其插入iOS.
我正在使用EZAudio库并且一切正常,除了iOS似乎保留了自己的内部时钟源用于音频采样而不是我精确的48KHz.

我阅读了有关CoreAudio的所有文档,但在使用闪电音频时,我没有找到与时钟源相关的任何内容.

有没有办法在内部或外部时钟源之间进行选择?

谢谢 !

var audioFormatIn = AudioStreamBasicDescription(mSampleRate: Float64(48000),mFormatID: AudioFormatID(kAudioFormatLinearPCM),mFormatFlags: AudioFormatFlags(kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked),mBytesPerPacket: 2,mFramesPerPacket: 1,mBytesPerFrame: 2,mChannelsPerFrame: 1,mBitsPerChannel: 16,mReserved: 0)

func initAudio()
{       
    let session : AVAudioSession = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
        try session.setMode(AVAudioSessionModeMeasurement)
        try session.setActive(true)
    }
    catch {
        print("Error Audio")
    }
    self.microphone = EZMicrophone(microphoneDelegate: self,withAudioStreamBasicDescription: audioFormatIn)
}

更新:
感谢@Rhythmic Fistman,设置首选采样率可以部分解决问题.不再从iOS重新采样,TCXO仍然是时钟主源.
但是信号现在很快就被破坏了,似乎是缓冲区中的空样本.记录长度越来越严重,这个问题越来越严重.当然,因为我需要闪电端口来插拔硬件,所以我很难轻松调试!

7分钟后波形的屏幕截图:

enter image description here

15分钟后波形的屏幕截图:

enter image description here

解决方法

在激活它之前将音频会话的首选采样率设置为48kHz有帮助吗?

session.setPreferredSampleRate(48000)

我不知道它是否会对时钟源做任何事情,或者它是否会影响输入(或输出)采样率,但它值得一试.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...