gpt4 book ai didi

audio - 带有位置音频SCNAudioPlayer的ARKit SceneKit ARSCNView不会停止播放

转载 作者:行者123 更新时间:2023-12-03 00:28:10 25 4
gpt4 key购买 nike

使用ARSCNView运行ARKit 2.0。 iOS12
该应用程序使用多线程,这就是为什么要在主线程上执行这些功能的原因(请确保)。我也尝试了在主线程上也没有明确执行功能的情况,但是没有任何结果。

我正在使用.aiff声音文件,但也尝试过.wav。不开心

我什至尝试从节点层次结构中删除audioNode_alarm,声音仍在播放。我什至从 View 层次结构中删除ARSCNView,声音仍在播放。 FFS

据我所知,我正在按照预期的方式做事,以阻止音频播放。无论我如何尝试,音频都不会停止。谁能想到为什么?

weak var audioNode_alarm: SCNNode!
weak var audioPlayer_alarm: SCNAudioPlayer?

func setupAudioNode() {

let audioNode_alarm = SCNNode()
addChildNode(audioNode_alarm)
self.audioNode_alarm = audioNode_alarm

}

func playAlarm() {

DispatchQueue.main.async { [unowned self] in

self.audioNode_alarm.removeAllAudioPlayers()

if let audioSource_alarm = SCNAudioSource(fileNamed: "PATH_TO_MY_ALARM_SOUND.aiff") {

audioSource_alarm.loops = true
audioSource_alarm.load()
audioSource_alarm.isPositional = true
let audioPlayer_alarm = SCNAudioPlayer(source: audioSource_alarm)
self.audioNode_alarm.addAudioPlayer(audioPlayer_alarm)
self.audioPlayer_alarm = audioPlayer_alarm

}

}

}

func stopAlarm() {

DispatchQueue.main.async { [unowned self] in

self.audioNode_alarm?.removeAudioPlayer(self.audioPlayer_alarm!)
self.audioNode_alarm?.removeAllAudioPlayers()

}

}

最佳答案

我最终要做的是停止声音并通过

yourNode.audioPlayers.forEach { audioLocalPlayer in
audioLocalPlayer.audioNode?.engine?.stop()
yourNode.removeAudioPlayer(audioLocalPlayer)
}

根据文档, SCNAudioPlayer具有 audioNode,应将其用于“在播放过程中实时更改诸如音量和混响之类的参数”。

audioNode是AVAudioNode类型的,因此,如果我们跳到 engine prop及其 type定义,我们将找到所需的所有控件。

关于audio - 带有位置音频SCNAudioPlayer的ARKit SceneKit ARSCNView不会停止播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54064781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com