我试图以编程方式在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
答案 0 :(得分:4)
该文件无法在iOS上播放,因为它是在AMR NarrowBand which is no longer supported中编码的。
我会尝试将m4a文件重新编码为AAC,或切换到mp3。
答案 1 :(得分:1)
这可能只是这个m4a
文件压缩方式的一个特性。简单的事实是,并非每个m4a
文件,即使它是一个完全有效的文件,也会在您的设备上播放。 (例如,也许这个文件非常压缩。)为了使事情变得更复杂,它因设备而异!为了使事情更多更复杂,文件可能会在音乐应用中播放,但不能在AVAudioPlayer中播放!!
要测试此理论,请将文件重新编码为更中间的m4a
,并查看是否播放。