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 多次播放