我可以从一个URL播放声音。但是要花费近10秒钟才能播放音频。
:global(.a-global-class) { ... }
我是iOS的新手。我不确定,如何下载URL音频然后播放该音频?我不想延迟10秒播放音频。
更新,我尝试过:
@IBAction func playBtnTap(_ sender: Any) {
let url = URL(string: muscUrl!)!
let playerItem = AVPlayerItem(url: url)
self.player = AVPlayer(playerItem: playerItem)
self.player!.play()
}
在控制台中出现错误:
该操作无法完成。 (OSStatus错误1954115647。)
第override func viewDidLoad() {
super.viewDidLoad()
let urlstring = "http://radio.spainmedia.es/wp-content/uploads/2015/12/tailtoddle_lo4.mp3"
let url = NSURL(string: urlstring)
print("the url = \(url!)")
downloadFileFromURL(url: url!)
}
func downloadFileFromURL(url:NSURL){
var downloadTask:URLSessionDownloadTask
var request = URLRequest(url:url as URL)
downloadTask = URLSession.shared.downloadTask(with: request, completionHandler: { (URL, response, error) -> Void in
self.play(url: URL as! NSURL)
})
downloadTask.resume()
}
func play(url:NSURL) {
print("Playing \(url)")
do {
self.player = try AVAudioPlayer(contentsOf: url as URL)
player!.prepareToPlay()
player!.volume = 1.0
player!.play()
} catch let error as NSError {
//self.player = nil
print(error.localizedDescription)
} catch {
print("AVAudioPlayer init failed")
}
}
行
答案 0 :(得分:0)
您的第一个密码是正确的。在设备上运行时,没有任何明显的延迟。自然,在慢速的Internet连接上可能需要一些时间才能填充缓冲区,然后才能开始播放。但是您的第二个代码(下载然后播放)会变得更慢。
如果您想了解AVPlayer缓冲区的状况,请使用KVO跟踪其timeControlStatus
中的更改。