AVAudioPlayer 失败并出现错误“无法完成操作。(OSStatus 错误 2003334207。)”

Posted

技术标签:

【中文标题】AVAudioPlayer 失败并出现错误“无法完成操作。(OSStatus 错误 2003334207。)”【英文标题】:AVAudioPlayer fails with error "The operation couldn’t be completed. (OSStatus error 2003334207.)" 【发布时间】:2018-01-12 14:52:53 【问题描述】:

这是我的代码示例...对于少数音频文件(mp4 扩展名),它失败并出现异常“操作无法完成。(OSStatus 错误 2003334207。)” 我从 iPhone 下载了容器并确认该文件存在于路径中

do   

    audioPlayer = try AVAudioPlayer(contentsOf: url)

     //guard let player = player else  return 
     audioPlayer.delegate = self
     audioPlayer.prepareToPlay()
     audioPlayer.play()
     audioPlayer.volume = 1.0

     if timer != nil && timer.isValid 
         timer.invalidate()
         timer = nil
     

     timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(LynkAudioPlayer.checkPlayTime), userInfo: nil, repeats: true)

 catch let error as NSError 
     print(error.description)

【问题讨论】:

【参考方案1】:

您的代码看起来不错。发生此错误是因为您访问的文件不在指定的 url 处,或者在返回后该值为 nil。确保您有一个格式正确的 URL,用于使用 AVAudioPlayer(contentsOf: url) 访问的资源。音频数据还必须采用 Core Audio 支持的格式。您可能想在设置后检查audioPlayer 是否为nil

audioPlayer = try AVAudioPlayer(contentsOf: url)

if audioPlayer != nil  
    audioPlayer.delegate = self
    audioPlayer.prepareToPlay()
    audioPlayer.play()
    audioPlayer.volume = 1.0
 else 
    //try to load a different resource?

【讨论】:

audioPlayer 即使使用 mp3 音频也会在您的第一行引发异常 AVAudioPlayer(contentsOf: URL) 抛出,确保您将代码包装在 do/try/catch 语句中。这是一个有用的资源,显示为最新:artoftheapp.com/ios/playing-audio-using-avaudioplayer-swift 或 hackingwithswift.com/example-code/media/… 谢谢,已修复。就我而言,错误是 audioPlayer 是一个局部变量

以上是关于AVAudioPlayer 失败并出现错误“无法完成操作。(OSStatus 错误 2003334207。)”的主要内容,如果未能解决你的问题,请参考以下文章

iOS AVAudioPlayer播放音频时,已经将音频下载了本地,怎么还出现下面的错误啊

SwiftUI 上出现 AVAudioPlayer 多次播放

AVAudioPlayer 错误域=NSOSStatusErrorDomain 代码=-43

AVAudioPlayer 初始化:错误代码 -50

声音 AVAudioPlayer 不工作

FBSDKLoginManager 失败并出现错误代码 - 308