AVAudioPlayer.initWithData抛出异常

时间:2018-04-24 05:16:01

标签: ios swift avaudioplayer nsdata nsurl

我正在尝试播放来自远程网址的音频。

let audioData = try! Data.init(contentsOf: URL)
do       
 {
      self.audioPlayer = try AVAudioPlayer.init(data: data) //Throwing error sometimes
      self.audioPlayer?.delegate = self
      self.audioPlayer?.prepareToPlay()     
      self.audioPlayer?.play()

 }
 catch {
          showErrorMessage("An error occurred while trying to extract audio file")

  }

我的服务器上有一个音频网址列表。某些音频的 我可以获得Data但是在AVAudioPlayer的init方法中它会抛出错误。我无法得到实际原因。

我可以选择AVPlayer,但为什么会出现此问题?

4 个答案:

答案 0 :(得分:2)

直接播放音频来自您的网址

do
{
  try Manager.player = AVAudioPlayer.init(contentsOf: returnPathAtSelectedIndex(fileName: fileName))
  //Set required delegates and Values

  Manager.player?.delegate = self
  Manager.player?.volume = 1.0
  Manager.player?.prepareToPlay()
  Manager.player?.play()
}
catch
{
  print("Error while playing music: \(error.localizedDescription)")
}

我的播放器

struct Manager 
{
   ///AVAudio Player
    static var player: AVAudioPlayer?
}

我的函数func returnPathAtSelectedIndex(fileName:String) -> URL返回URL

修改

当AVAudioPlayer播放保存到本地的文件时。您需要将文件保存到本地而不是

  

AVAudioPlayer.init(contentsOf:localFileUrl)

将有助于播放该文件并且无法生成崩溃。

答案 1 :(得分:1)

请将您的代码更改为此,以便您了解更多正在发生的错误:

let audioData = try! Data.init(contentsOf: URL)
do {
   self.audioPlayer = try AVAudioPlayer.init(data: data) //Throwing error sometimes
   self.audioPlayer?.delegate = self
   self.audioPlayer?.prepareToPlay()     
   self.audioPlayer?.play()

}
catch let error {
   print(error.localizedDescription)
   showErrorMessage(error.localizedDescription)

}

答案 2 :(得分:0)

我通过下面的代码尝试它并且工作正常

  let audioData = try! Data.init(contentsOf: url)
    do
    {
        let audioPlayer = try AVAudioPlayer.init(data: audioData) //Throwing error sometimes
        audioPlayer.delegate = self as? AVAudioPlayerDelegate
        audioPlayer.prepareToPlay()
        audioPlayer.play()

    } catch {
        print("An error occurred while trying to extract audio file")
    }

答案 3 :(得分:0)

调试本地化描述后,我收到了错误

The operation couldn’t be completed. (OSStatus error 1954115647.)

及以下链接帮助我解决了我的问题。

https://stackoverflow.com/a/5252724/5227570

  

而不是使用NSData对象初始化音频播放器,   将文件保存到Documents文件夹,然后初始化   具有文件URL的播放器