Swift 2 - m4a 文件无法在 iOS 上播放

Swift 2 - m4a file won't play on iOS

我正在尝试以编程方式在 iOS 设备上播放 m4a 文件。该文件是从服务器下载并存储的。当用户按下按钮时,它就会播放。该文件从设备复制到 OSX 时确实可以正常播放。我正在使用代码

var player:AVAudioPlayer = AVAudioPlayer()

func playAudio(sender: UIButton!) {
    let audioPath = FileUtils.getPath(audioPaths[sender.tag])
    print("PATH " + audioPath)//The printed path IS DEFINETLY correct
    do{
        player = try! AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath))
        player.prepareToPlay()
        player.play()
    }
}

路径是正确的,所以我不确定为什么它不起作用。可能是格式(即使它在 OSX 上播放)?

示例文件:https://www.dropbox.com/s/csewwg6n9vzan5z/131015-08%3A13%3A30.m4a?dl=0

这可能只是此 m4a 文件压缩方式的一个特点。一个简单的事实是,并非每个 m4a 文件,即使它是完全有效的文件,都可以在您的设备上播放。 (例如,这个文件可能 非常 压缩。)让事情变得更复杂的是,它因设备而异!为了让事情变得更 复杂,该文件可能会在音乐应用程序中播放,但不会在 AVAudioPlayer 中播放!!

为了验证这个理论,将文件重新编码为更中间的 m4a 并查看 是否播放。

该文件无法在 iOS 上播放,因为它使用 AMR 窄带编码,

我会尝试将 m4a 文件重新编码为 AAC,或切换到 mp3。