使用M4A文件初始化时,AVAudioPlayer引发。 (OSStatus错误2003334207。)

时间:2019-07-22 19:40:38

标签: swift avfoundation avaudioplayer core-audio

我正在尝试从包含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()
}

按下与名为IBAction的{​​{1}}关联的按钮时,出现以下错误:

buttonPressed(sender:)

我已尝试解决有关此错误的类似问题,但似乎没有一个能解决我的问题。

编辑:

我尝试使用The operation couldn’t be completed. (OSStatus error 2003334207.)做类似的事情,尽管它没有引发错误,但是文件根本没有播放。这是一些示例代码:

AVPlayer

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

我觉得自己是个白痴。运行此代码时,我的手机处于“静音模式”。对于this answer,我需要添加

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

在实际从AVPlayer播放之前。

这个问题之所以没有引起我的注意,是因为在iPhone的“控制中心”中查看音乐管理器时,没有迹象表明正在播放音频。 仅仅是因为正在播放音频,并不意味着播放控件由设备的控制中心处理。