【问题标题】:How can I pause SCNAudioPlayer playback in ARKit?如何在 ARKit 中暂停 SCNAudioPlayer 播放?
【发布时间】:2020-12-10 17:57:37
【问题描述】:

我正在尝试为附加到 ARKit 场景中节点的位置音频实现播放/暂停按钮。我希望用户能够暂停音频,然后稍后从暂停点恢复。所以removeAudioPlayer() 不好,因为这会在重新连接时将音频重置为开始。

我能找到的唯一与 SCNAudioPlayers 相关的暂停方法深埋在:

myAudioPlayer.audioNode?.engine?.pause()

但这似乎没有任何效果。奇怪

myAudioPlayer.audioNode?.engine?.stop()

确实停止播放音频,但之后您将无法再次启动它!

我创建audioPlayer的代码如下:

audioSource = SCNAudioSource(fileNamed: "audio.caf")!
audioSource.loops = false
audioSource.isPositional = true
audioSource.shouldStream = false
audioSource.load()
// then a bit later...
audioPlayer = SCNAudioPlayer(source: audioSource)
myARNode.addAudioPlayer(audioPlayer)

请注意,不需要“播放”方法。只要将音频附加到节点,音频就会开始播放。并且缺少直接的 play() 和 pause() 方法作为 SCNAudioPlayer 的顶级属性,这让我想知道这是否可能。然而,这似乎有点疯狂,因为这是处理音频的一个非常基本的方面。

有谁知道这是否可以做到?

提前致谢。

【问题讨论】:

    标签: ios swift arkit audio-player scnaudioplayer


    【解决方案1】:

    要停止音频引擎,请使用 2 秒延迟。暂停在这里不起作用(我使用的是 Xcode 12.2)。

    DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
        player.audioNode?.engine?.stop()
    }
    

    【讨论】:

    • 这似乎与提供的示例存在相同的问题。 stop() 停止音频,但阻止它再次开始,而 pause() 什么也不做。我追求的是暂停的能力。如果我只是想停止音频,我可以使用 removeAudioPlayer()
    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多