Loops 如何在Xcode10中循环AvAudioPlayerNode
嗨,我正在用SpriteKit制作一个iOS游戏,并决定使用AvAudioPlayerNode和引擎,而不是常规的AvAudioPlayerNode,这样我可以改变音高和播放速度,但我遇到了一个问题,AvAudioPlayerNode在播放后不会重复 我已经使用了许多来自堆栈溢出的答案,但是它们都非常过时,如果你碰巧解决了这个问题,你能确保它与我的代码一起工作吗?否则它就没用了 // " //通过这样做,可以在游戏视图控制器中运行Loops 如何在Xcode10中循环AvAudioPlayerNode,loops,sprite-kit,repeat,avaudioengine,avaudioplayernode,Loops,Sprite Kit,Repeat,Avaudioengine,Avaudioplayernode,嗨,我正在用SpriteKit制作一个iOS游戏,并决定使用AvAudioPlayerNode和引擎,而不是常规的AvAudioPlayerNode,这样我可以改变音高和播放速度,但我遇到了一个问题,AvAudioPlayerNode在播放后不会重复 我已经使用了许多来自堆栈溢出的答案,但是它们都非常过时,如果你碰巧解决了这个问题,你能确保它与我的代码一起工作吗?否则它就没用了 // " //通过这样做,可以在游戏视图控制器中运行 let audioPath = Bundle.main.path
let audioPath = Bundle.main.path(forResource: "loop", ofType: "wav") ?? ""
do
{
try? play(URL(fileURLWithPath: audioPath))
}
catch {
}
实际上我不知道从哪里开始我对Xcode还比较陌生,所以任何帮助都会很有用,请不要把事情弄得太复杂,我15岁了你想把你的文件读入缓冲区,然后安排播放器循环
let file = try AVAudioFile(forReading: url)
let audioFileBuffer = AVAudioPCMBuffer(PCMFormat: file.fileFormat, frameCapacity: file.length)
try? read(into buffer: audioFileBuffer )
audioFilePlayer.scheduleBuffer(audioFileBuffer, atTime: nil, options:.Loops, completionHandler: nil)
audioFilePlayer.play()
我建议使用SKAudioNode。它附带了avAudioNode,可以转换为AVAudioPlayerNode,为您提供所需的功能。这会占用太多内存,有没有办法循环使用小的buffer@csguy也许回到1982年,想象一下82个声音文件在内存中,每个都有30秒。这在我的mac电脑上占用了大约700MB的内存,因为它们都是以整个声音文件大小的缓冲区加载到内存中的,这种方法会给IOS应用程序带来麻烦。。。所以我正在寻找一种循环设置缓冲区大小的方法,有没有一种方法?想象一下内存中有82个文件和声音文件。。。。为什么我需要想象82个声音文件需要循环。内存中没有82个文件,您最好更好地管理您的资源,只在内存中存储您需要的内容。因为我正在制作一个音频活套应用程序,屏幕上有82个按钮
let file = try AVAudioFile(forReading: url)
let audioFileBuffer = AVAudioPCMBuffer(PCMFormat: file.fileFormat, frameCapacity: file.length)
try? read(into buffer: audioFileBuffer )
audioFilePlayer.scheduleBuffer(audioFileBuffer, atTime: nil, options:.Loops, completionHandler: nil)
audioFilePlayer.play()