gpt4 book ai didi

swift - 音频未在 SwiftUI 中播放

转载 作者:行者123 更新时间:2023-12-03 09:29:22 28 4
gpt4 key购买 nike

我在调用该函数时遇到了播放音频文件的问题。

我正在使用 AVAudioPlayer 尝试按照此处的说明播放文件:
https://www.hackingwithswift.com/example-code/media/how-to-play-sounds-using-avaudioplayer
在 View 中按下按钮后,它调用一个 func 来播放声音,但据我所知,没有播放任何内容。没有抛出错误,并且找到了文件。当按下按钮时,该应用程序还使用语音合成器,播放效果很好。

我环顾堆栈溢出并按照此处的说明进行操作:
Where to place code for audio playback in a SwiftUI app

但是当按下按钮时仍然没有播放音频。

这是函数:

    func playSound() {
var sound = AVAudioPlayer()

if let path = Bundle.main.path(forResource: "TryAgain", ofType: "wav") {
do {
sound = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
print("Playing sound")
sound.play()
} catch {
print( "Could not find file")
}
}

这是类(class):

class Player: BindableObject {

let willChange = PassthroughSubject<Player, Never>()

var isPlaying: Bool = false {
willSet {
willChange.send(self)
}
}

func playSound() {
var sound = AVAudioPlayer()

if let path = Bundle.main.path(forResource: "TryAgainWav", ofType: "wav") {
do {
sound = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
print("Playing sound")
sound.play()
} catch {
print( "Could not find file")
}
}
}
}

更新:不确定这是否有帮助,但我使用 IB 而不是 SwiftUI 构建了它,并注意到当我单击按钮播放音频文件时,控制台中会打印相同的消息:

2019-07-22 11:29:41.075568-0700 PlaySoundPrac[13952:46549155] [插件] AddInstanceForFactory:没有工厂注册 ID F8BB1C28-BAE8-11D6-9C31-000469315

任何帮助将不胜感激

最佳答案

我自己也很新,但我会尽力而为。如果将 AVAudioPlayer 的声明移到函数之外会发生什么?例如:

import Combine

class Player: ObservableObject {

var sound: AVAudioPlayer!

let willChange = PassthroughSubject<Player, Never>()

var isPlaying: Bool = false {
willSet {
willChange.send(self)
}
}

func playSound() {

if let path = Bundle.main.path(forResource: "TryAgainWav", ofType: "wav") {
do {
sound = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
print("Playing sound")
sound.play()
} catch {
print( "Could not find file")
}
}
}
}
试试这个,让我知道它是否有效!谢谢。

关于swift - 音频未在 SwiftUI 中播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57153729/

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