アセットカタログAssets.xcassets
のサウンドを再生するためにAVAudioPlayerNode
を使用しようとしていますが、その方法を理解できません。AVAudioPlayerNodeを使用してアセットカタログからサウンドを再生するにはどうすればよいですか?
私はこのようなNSDataAsset
で初期化することができAVAudioPlayer
、使用している:私は(ピッチシフトやその他の理由で)代わりにAVAudioPlayerNode
を使用したい
let sound = NSDataAsset(name: "beep")!
do {
let player = try AVAudioPlayer(data: sound.data, fileTypeHint: AVFileTypeWAVE)
player.prepareToPlay()
player.play()
} catch {
print("Failed to create AVAudioPlayer")
}
を。私はエンジンを作成して、ノードOKフックすることができます:それはplayerNode.scheduleFile()
あるファイルを再生するために使用する方法のように見えます
var engine = AVAudioEngine()
func playSound(named name: String) {
let mixer = engine.mainMixerNode
let playerNode = AVAudioPlayerNode()
engine.attach(playerNode)
engine.connect(playerNode, to: mixer, format: mixer.outputFormat(forBus: 0))
// play the file (this is what I don't know how to do)
}
を。それはAVAudioFile
を取るので、私は1つを作ろうと思った。しかし、AVAudioFile
のイニシャライザではURLが必要です。私が知る限り、アセットカタログのアセットはURLで利用できません。私はNSDataAsset
を使って直接データを得ることができますが、それを使用してAVAudioFile
を設定する方法はないようです。
資産カタログの音をAVAudioPlayerNode
で再生することはできますか?そしてもしそうなら、どうですか?