gpt4 book ai didi

audio - 如何在 WatchOS 3 中播放将在 watch 扬声器上播放的自定义声音

转载 作者:行者123 更新时间:2023-12-04 22:19:25 29 4
gpt4 key购买 nike

我听说我们现在可以在 watchos 3 的 Apple Watch 上播放自定义声音。

根据 Apple 的公告,显然有,但我没有一个例子来测试它:使用 SCNAudioSource 或 SCNAudioPlayer 实现的 3D 空间音频。相反,请使用 playAudioSource:waitForCompletion: 或 WatchKit 声音或触觉 API。在这里找到:https://developer.apple.com/library/prerelease/content/releasenotes/General/WhatsNewInwatchOS/Articles/watchOS3.html

有人可以举一个简单的例子。我没有在我的应用程序中使用 SceneKit,因为我不需要它,但如果这是播放自定义声音的唯一方法,那么我想知道完成此操作所需的最少代码。最好在Objective c中,但我会以任何形式使用它。如果这也更容易的话,我可以使用 SpriteKit。

这是我到目前为止所拥有的,但它不起作用:

SCNNode * audioNode = [[SCNNode alloc] init];

SCNAudioSource * audioSource = [SCNAudioSource audioSourceNamed:@"mysound.mp3"];
SCNAudioPlayer * audioPlayer = [SCNAudioPlayer audioPlayerWithSource:audioSource];
[audioNode addAudioPlayer:audioPlayer];

SCNAction * play = [SCNAction playAudioSource:audioSource waitForCompletion:YES];
[audioNode runAction:play];

最佳答案

我可以确认,@ApperleyA 解决方案确实有效!

这是快速版本:

var _audioPlayer : AVAudioPlayerNode!
var _audioEngine : AVAudioEngine!

func playAudio()
{
if (_audioPlayer==nil) {
_audioPlayer = AVAudioPlayerNode()
_audioEngine = AVAudioEngine()
_audioEngine.attach(_audioPlayer)

let stereoFormat = AVAudioFormat(standardFormatWithSampleRate: 44100, channels: 2)
_audioEngine.connect(_audioPlayer, to: _audioEngine.mainMixerNode, format: stereoFormat)

do {

if !_audioEngine.isRunning {
try _audioEngine.start()
}

} catch {}

}


if let path = Bundle.main.path(forResource: "test", ofType: "mp3") {

let fileUrl = URL(fileURLWithPath: path)

do {
let asset = try AVAudioFile(forReading: fileUrl)

_audioPlayer.scheduleFile(asset, at: nil, completionHandler: nil)
_audioPlayer.play()

} catch {
print ("asset error")
}

}


}

关于audio - 如何在 WatchOS 3 中播放将在 watch 扬声器上播放的自定义声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39302699/

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