AVAudioPlayer 在使用 M4A 文件初始化时抛出。 (操作系统状态错误 2003334207。)

AVAudioPlayer throws when initializing with M4A file. (OSStatus error 2003334207.)

我正在尝试从包含 M4A 文件的 URL 初始化并播放 AVAudioPlayer。文件如下:

https://audio-ssl.itunes.apple.com/apple-assets-us-std-000001/AudioPreview123/v4/e8/04/59/e80459fb-9429-3323-4f43-ce12d5df1be5/mzaf_5785529815715338950.plus.aac.p.m4a

这是我用来初始化 AVAudioPlayer 的代码:

var player: AVAudioPlayer!
let preview = "https://audio-ssl.itunes.apple.com/apple-assets-us-std-000001/AudioPreview123/v4/e8/04/59/e80459fb-9429-3323-4f43-ce12d5df1be5/mzaf_5785529815715338950.plus.aac.p.m4a"

func loadAudio() {
    do {
        self.player = try AVAudioPlayer(contentsOf: URL(string: preview!)!, fileTypeHint: AVFileType.m4a.rawValue)
        self.player.play()              
    } catch let error {
        print("Error:", error.localizedDescription)                              
    }
}

@IBAction func buttonPressed(_ sender: Any) {
    loadAudio()
}

当按下与名为 buttonPressed(sender:)IBAction 关联的按钮时,我收到以下错误消息:

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

我已尝试使用与此错误相关的类似问题进行故障排除,但 none 似乎解决了我的问题。

编辑:

我尝试用 AVPlayer 做一些类似的事情,虽然它没有抛出错误,但文件根本无法播放。这是一些示例代码:

var avPlayer: AVPlayer!
let preview = "https://audio-ssl.itunes.apple.com/apple-assets-us-std-000001/AudioPreview123/v4/e8/04/59/e80459fb-9429-3323-4f43-ce12d5df1be5/mzaf_5785529815715338950.plus.aac.p.m4a"

func loadAudio() {
    if let url = NSURL(string: preview!) {
        self.avPlayer = AVPlayer(url: url as URL)
        self.avPlayer.volume = 1.0
        self.avPlayer.play()
    }
}

@IBAction func buttonPressed(_ sender: Any) {
    loadAudio()
}

AVAudioPlayer 不播放远程内容。使用 AVPlayer。

var player: AVPlayer!
let preview = ....

func loadAudio() {
    self.player = AVPlayer(url:URL(string: preview)!)
    self.player.play()
}

我觉得自己像个白痴。当 运行 此代码时,我的 phone 在 "silent mode" 上。每 我需要添加

do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback)
    }
    catch {
        // report for an error
    }

在实际从 AVPlayer 播放之前。

我之所以没有想到这个问题,是因为在 iPhone 的控制中心查看音乐管理器时,没有显示正在播放音频。 播放音频并不意味着设备的控制中心正在处理播放控制。