使用来自 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 (将#修改为@)