MusicPlayer输出的缓冲区大小

时间:2015-04-20 13:25:41

标签: ios swift avfoundation core-audio avaudiosession

在Swift的iOS 8应用程序中,我创建并存储MIDI数据 然后将数据传递给MidiPlayer,MidiPlayer在正确设置的AUGraph中播放MIDI。 虽然这在模拟器中运行良好,但有时音频在我的iPhone 4s上噼啪作响。当生成的MIDI包含快速音符的 lot 时会发生这种情况,我猜iPhone的CPU速度不够快。
我认为使用更大的缓冲区大小,情况会好一些。 如何设置更大的缓冲区?
我应该在AUGraph中解决RemoteIO,告诉它使用更大的缓冲区吗? 在初始化图表之前我尝试了以下操作:

var myAudioSession:AVAudioSession = AVAudioSession.sharedInstance()
println("IOBufferDuration : \(myAudioSession.IOBufferDuration)")

var theError:NSError?
myAudioSession.setPreferredIOBufferDuration(0.46, error: &theError)
if (theError != nil) {
    println("Error: \(theError!.localizedDescription)")
}
println("New IOBufferDuration : \(myAudioSession.IOBufferDuration)")

myAudioSession.setActive(true, error: &theError)
if (theError != nil) {
    println("Error: \(theError!.localizedDescription)")
}

但即使我没有收到错误,我的代码也没有影响缓冲区大小,这似乎是系统在启动时选择的。而且,音频变得沉默......

谢谢!

0 个答案:

没有答案