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

时间:2015-10-08 21:02:31

标签: ios swift2 avaudioplayer m4a

我试图以编程方式在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

2 个答案:

答案 0 :(得分:4)

该文件无法在iOS上播放,因为它是在AMR NarrowBand which is no longer supported中编码的。

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

答案 1 :(得分:1)

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

要测试此理论,请将文件重新编码为更中间的m4a,并查看是否播放。

相关问题