【发布时间】:2016-10-20 08:48:52
【问题描述】:
我的应用使用带有非常精确的热补偿石英振荡器 (TCXO) 的外部 USB 麦克风。采样率为 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 仍然是主时钟源。 但是信号现在很快被缓冲区中的空样本破坏了。这个问题随着录音长度越来越严重。当然,因为我需要Lightning端口来插硬件,所以我很难轻松调试!
7分钟后的波形截图:
15分钟后的波形截图:
【问题讨论】:
标签: ios audio usb core-audio ezaudio