无法使用AVAudioPlayer播放存储在文档目录中的本地mp3文件

时间:2017-09-06 10:07:41

标签: ios swift3 avaudioplayer

我在三星Android设备上生成了一个mp3音频文件。我从服务器下载同一个文件并存储在文档目录中。现在我使用下面的代码播放这个音频文件。 iAudioFileURL是我在外部用于设置音频文件URL的属性。设置URL后,我使用下面的代码为该URL设置AVAudioPlayer

var iAudioFileURL : URL?{
    didSet{
        if let audioFileURL = iAudioFileURL {
            if audioFileURL.isFileURL {
                if let previousURL = iAVAudioPlayer?.url {
                    if previousURL.path == audioFileURL.path {
                        return
                    }
                }

                self.stopPlayer()
                self.iToolBar.items?[0] = iPlayButton

                do {
                    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [AVAudioSessionCategoryOptions.mixWithOthers, AVAudioSessionCategoryOptions.duckOthers])
                    try AVAudioSession.sharedInstance().setActive(true)
                    try iAVAudioPlayer = AVAudioPlayer(contentsOf: audioFileURL)
                } catch  let error as NSError {
                    iError = error
                    return
                }
                iError = nil
                iAVAudioPlayer?.prepareToPlay()
                self.iProgressSlider.minimumValue = 0
                if let duration = self.iAVAudioPlayer?.duration {
                    let durationNumber = NSNumber(floatLiteral: duration)
                    self.iProgressSlider.maximumValue = durationNumber.floatValue
                }
            } else {
                print("Path:\(iAudioFileURL?.path) is not a file url")
            }

        }
    }
}

该代码适用于其他文件,但是从该设备生成的所有mp3文件都无法播放。 我有一个触发 AVAudioPlayer 实例的播放方法的按钮。 我已经从stackoverflow中提到了大部分问题和答案。他们没有为我提供解决方案。即使这些方法也不会抛出错误。请帮帮我。您可以找到档案here

1 个答案:

答案 0 :(得分:0)

问题是即使扩展名是mp3,文件的mimetype是audio / x-hx-aac-adts。在这个帖子[https://discussions.apple.com/thread/2365009?tstart=0][1] varjak paw回复

  

据我所知,iTunes不支持ADTS中的AAC   (音频数据传输流),仅MPEG-4中的AAC。你需要找到   在iTunes能够之前将这些文件转换为MPEG-4的转换器   阅读它们。对不起,我无法提供有关转换器的任何建议   尝试。

     

问候。

因此,这清楚地表明不支持具有mimetype audio / x-hx-aac-adts的文件。 您可以在Mac上打开终端并使用以下命令获取文件的mimetypes

  

file --mime-type -b myfile.extension