如何解决使用来自 Firebase URL 的 AVAudioPlayer 播放声音
在我的应用中,我播放来自 Firebase 的声音文件。对于这项任务,我最初使用的是 AVPlayer,但后来由于增强的功能而切换到 AVAudioPlayer。但是,我现在面临的问题是,当我从播放列表中的一个音频文件切换到另一个音频文件时,下一个文件会在播放整个文件之前连续重新启动(仅播放文件的 1 秒)4-5 次。播放音频文件位于可观察对象内。
class FViewModel: ObservableObject {
@Published var player = AVAudioPlayer()
func playAudio(url: String) {
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback)
}
catch {
print(error)
}
guard let url = URL(string: url) else {
print("Invalid URL")
return
}
do {
let session = AVAudioSession.sharedInstance()
try session.setCategory(AVAudioSession.Category.playback)
let soundData = try Data(contentsOf: url)
player = try AVAudioPlayer(data: soundData)
player.prepareToPlay()
let minuteString = String(format: "%02d",(Int(player.duration) / 60))
let secondString = String(format: "%02d",(Int(player.duration) % 60))
print("TOTAL TIMER: \(minuteString):\(secondString)")
}
catch {
print(error)
}
if player.isPlaying {
player.pause()
}
else {
player.play()
}
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.success)
}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。