【问题标题】:ARKit SceneKit ARSCNView with Positional Audio SCNAudioPlayer WILL NOT STOP playing带有位置音频 SCNAudioPlayer 的 ARKit SceneKit ARSCNView 不会停止播放
【发布时间】:2019-01-06 18:50:30
【问题描述】:

使用 ARSCNView 运行 ARKit 2.0。 iOS12 该应用程序使用多线程,这就是为什么这些功能在主线程上执行(只是为了确定)。我也尝试过没有在主线程上显式执行功能,但无济于事。

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

我什至尝试从节点层次结构中删除 audioNode_alarm 并且声音仍在播放。我什至从视图层次结构中删除了 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()

    }

}

【问题讨论】:

    标签: audio scenekit arkit arscnview


    【解决方案1】:

    我最终做的是停止声音并删除播放器

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

    根据文档SCNAudioPlayeraudioNode,它应该用于“在播放期间实时改变音量和混响等参数”。

    audioNodeAVAudioNode 类型,所以如果我们跳转到 engine 属性和它的 type 定义,我们会找到我们需要的所有控件。

    【讨论】:

    • 我终于要测试一下了。你把钉子钉在了头上。这正是我需要的 audioLocalPlayer.audioNode?.engine?.stop()。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多