ios - AVAudioPlayer.initWithData 抛出异常

标签 ios swift avaudioplayer nsdata nsurl

我正在尝试从远程 URL 播放音频。

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")

  }

我的服务器上有一个音频 url 列表。 对于某些音频 我能够获取Data 但在AVAudioPlayer 的init 方法中它抛出错误。我无法找到真正的原因。

我有 AVPlayer 的选项,但为什么这个东西会导致问题?

最佳答案

直接从您拥有的 URL 播放音频

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)

将有助于播放文件并且不会产生崩溃。

关于ios - AVAudioPlayer.initWithData 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49993885/

相关文章:

ios - 在导航 View Controller 登录屏幕上运行 performSegueWithIdentifier 通过两个屏幕转换

ios - UIWebView 开始加载但从未完成

swift - 实例化包含UIScrollView的Storyboard时,UIKit崩溃

iphone - 在 iPhone 应用程序中播放音频

ios - AVAudioPlayer的currentTime,deviceCurrentTime,playAtTime

ios - 如何避免大CKAssets的重新传输,跟随其他数据更新

带有来自 NSDictionary 的数据的 iOS TableView

ios - 单击 TableView 某个部分中的任意位置后如何执行 segue?

swift - 二元运算符 '~=' 不能应用于类型 'String' 和 'String?' 的操作数

iphone - 即使在静音模式下也能在 iPhone 上播放声音