【问题标题】:Using AudioKit and SpriteKit audio simultaneously同时使用 AudioKit 和 SpriteKit 音频
【发布时间】:2017-05-20 14:57:49
【问题描述】:

我正在构建一个使用 AudioKit 框架来检测麦克风接收到的声音频率的游戏。我设置如下:

import SpriteKit
import AudioKit

class GameScene: SKScene {
    var mic : AKMicrophone!
    var tracker : AKFrequencyTracker!
    var silence : AKBooster!
    let mixer = AKMixer()

    override func didMove(to view: SKView) {
       mic = AKMicrophone()
       tracker = AKFrequencyTracker.init(mic)
       silence = AKBooster(tracker, gain: 0)
       mixer.connect(silence)
       AudioKit.output = mixer
       AudioKit.start()
    }
}

我也想用SKAction.playAudioFileNamed来播放音效等,但是用的时候播放音量很小。我认为它与场景的混音器节点和 AKMixer 有关?使用 AudioKit 播放声音文件比我需要的要复杂得多。

我需要扩展 SKScene 吗?非常感谢您的帮助!

【问题讨论】:

  • 其实我只是用耳机测试了一下,使用SKAction.playAudioFileNamed电平是正常的。一定和反馈保护有关吗?
  • 也许音频被路由到了错误的扬声器?我不确定这一点,但有些人提到音频可以路由到铃声扬声器?也许 AudioKit 使主扬声器不可用,所以 sprite kit 正在尽其所能?
  • 你是对的!不敢相信我没有注意到在没有插入耳机时它是通过手机的听筒而不是扬声器。有没有办法将 SKScene 的音频明确连接到 AKMixer?
  • 我可能正在查看类似的内容,但我遇到了错误:var sceneAudio = AKNode();场景音频.avAudioNode =(场景?.audioEngine.mainMixerNode)! ; Mixer.connect(场景音频)
  • 错误:[0x1abca6c40] >avae> AVAudioEngine.mm:404:ConnectMultipleOutputs:所需条件为假:[_nodes containsObject:sourceNode] 2017-01-06 11:49:20.456297 MicAnalysisGame[2096:470307 ] *** 由于未捕获的异常“com.apple.coreaudio.avfaudio”而终止应用程序,原因:“所需条件为 false:[_nodes containsObject: sourceNode]”

标签: ios audio sprite-kit audiokit


【解决方案1】:

Aurelius 似乎是正确的,因为 AudioSession 输出路由被定向到耳机。我仍然不确定为什么会这样,但是覆盖和设置输出的工作方式如下:

        let session = AVAudioSession()

    do {
        try session.overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
    } catch {
        print("error setting output")
    }

这需要在初始化 AudioKit 组件后完成。如果有更好的方法,请告诉我!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多