如何解决AVAudioPlayer的问题:“ OpenFromDataSource失败”

时间:2019-06-20 10:03:44

标签: ios xcode avaudioplayer

我正在使用Xcode 10.1,这是音频播放应用程序的非常基本的代码段。

var audioplayer:AVAudioPlayer?

override func viewDidLoad() {
    super.viewDidLoad()

    let url = Bundle.main.url(forResource: "ringtone2", withExtension: "mp3")
    guard url != nil else{
        return
    }
    do{
        audioplayer = try AVAudioPlayer(contentsOf: url!)
        audioplayer?.play()
    }
    catch{
        print("error")
    }
}

它应该播放铃声,但是代码进入catch块并打印以下内容:

  

2019-06-20 15:29:11.573735 + 0530 letsplaymusic [1539:42595] 1410:扫描数据包时出现问题   2019-06-20 15:29:11.574033 + 0530 letsplaymusic [1539:42595] 1008:MPEGAudioFile :: OpenFromDataSource失败   2019-06-20 15:29:11.574204 + 0530 letsplaymusic [1539:42595] 101:OpenFromDataSource失败   2019-06-20 15:29:11.574427 + 0530 letsplaymusic [1539:42595] 76:打开失败   错误

2 个答案:

答案 0 :(得分:1)

您可能将音频文件放置在错误的位置。尝试将文件与ViewController.swift文件放在相同的层次结构级别。
我可以使用您发布的相同代码播放声音,但是我看不到音频文件的放置位置,因此我猜这一定是问题所在。

答案 1 :(得分:0)

1。确保捆绑包中包含.Mp3文件,并使用Log确认

2。 player.prepareToPlay()-播放资源所需的功能

func playAudioFile(_ url: URL) {
            print("playing \(url)")

            do {
                self.player = try AVAudioPlayer(contentsOf: url)
                player.prepareToPlay()
                player.volume = 1.0
                player.play()
            } catch {
                self.player = nil
                print(error.localizedDescription)
                print("AVAudioPlayer init failed")
            }

}

快乐编码...:)