我正在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中使用类似的功能,使用相同的音频样本而没有任何点击/弹出问题。
此点击/弹出问题是否是实施错误? 我该如何解决这个问题?
我刚尝试了另一种方法AVAudioPlayer
,我遇到了同样的弹出/点击问题。
我认为问题是在结束之前再次启动音频文件。声音突然停止。