单击/弹出使用iOS音频单元播放的重复低音音频样本

时间:2016-02-11 11:19:04

标签: ios swift audio audiounit

我正在iOS中开发一种乐器,它有两个音频样本(高音高和低音高),可以通过视觉触摸进行播放。第一个样本非常短(半秒),另一个样本稍大(两秒钟)。当我反复播放并快速播放低音时,会有音频点击/弹出。播放高音声音没有问题。 两个音频样本都在初始/结束时淡入和淡出,并且没有剪辑问题。

我正在使用此代码加载音频文件(在此处简化):

engine = AVAudioEngine()
mixer = engine.mainMixerNode

let player = AVAudioPlayerNode()
do {
    let audioFile = try AVAudioFile(forReading: instrumentURL)
    let audioFormat = audioFile.processingFormat
    let audioFrameCount = UInt32(audioFile.length)
    let audioFileBuffer = AVAudioPCMBuffer(PCMFormat: audioFormat, frameCapacity: audioFrameCount)
    try audioFile.readIntoBuffer(audioFileBuffer)
    engine.attachNode(player)
    engine.connect(player, to: mixer, format: audioFileBuffer.format)
} catch {
    print("Init Error!")
}

和这段代码来播放样本:

player.play()
player.scheduleBuffer(audioFileBuffer, atTime: nil, options: option, completionHandler: nil)

我在Android中使用类似的功能,使用相同的音频样本而没有任何点击/弹出问题。

此点击/弹出问题是否是实施错误? 我该如何解决这个问题?

更新1

我刚尝试了另一种方法AVAudioPlayer,我遇到了同样的弹出/点击问题。

更新2

我认为问题是在结束之前再次启动音频文件。声音突然停止。

0 个答案:

没有答案