我下載音頻消息首先使用Avaudioplayer使用AVAudioPlayer迅速
downloadTask = NSURLSession.sharedSession().downloadTaskWithURL(urlStr, completionHandler: { (URL, response, error) -> Void in
self.play(URL!)
})
downloadTask
這工作得很好,然後發揮它播放音頻文件,但如果我叫打(URL)方法保存,我已經存儲的響應URL後在NSUserDefaults中。這兩種情況下的URL都是相同的。我已經檢查過了。它是這樣的:
file:///Users/mymac/Library/Developer/CoreSimulator/Devices/X-CD91-XXXXXXX-XXX-XXXXXX/data/Containers/Data/Application/XXXXXXX-XXXX-XXXXXXXXXX/tmp/CFNetworkDownload_InUTA3.tmp
傳遞這個文件的URL:
func play(url : NSURL) {
do {
player = try AVAudioPlayer(contentsOfURL: url)
player.prepareToPlay()
player.play()
} catch let error as NSError {
//self.player = nil
print(error.localizedDescription)
} catch {
print("AVAudioPlayer init failed")
}
}
URL路徑是一樣的,但audioPlayer無法播放聲音,它顯示了以下錯誤:
The operation couldn’t be completed. (OSStatus error 2003334207.)
任何人都可以在這方面指導我?
謝謝。
所以......只是想了解你是正確的。如果您使用存儲在UserDefaults中的URL調用'play',它可以工作嗎?如果你在'downloadTaskWithURL'的完成處理程序中直接調用它,它不起作用...正確?或者是周圍的其他方式? – pbodsk
您需要使用正確的文件擴展名將其存儲。 .tmp永遠不能播放,如果您知道文件的類型,請將其重命名爲該專有名稱。然後播放它。 –
@pbodsk使用UserDefaults禁止URL不起作用正確當我在完成塊中調用Play()時它正常工作正確,它在下載後正常工作。 –