我需要创建音频播放器。我从网址获取音频,我从网址下载音频然后我播放它。但我需要播放音频,而音频下载我怎么能这样做?
这是我的代码如何从url:
播放 func URLSession(session: NSURLSession,
downloadTask: NSURLSessionDownloadTask,
didFinishDownloadingToURL location: NSURL){
do {
loadingView.hidden=true
actInd.stopAnimating()
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
player=try AVAudioPlayer(contentsOfURL: location)
player?.delegate=self
selectedAudio.status=true
selectedAudio.isDownload=true
player?.enableRate=true
switch speedType_Index {
case 0:
appDelegate.player?.rate=Float(1)
break
case 1:
appDelegate.player?.rate=Float(1.5)
break
case 2:
appDelegate.player?.rate=Float(2)
break
case 3:
appDelegate.player?.rate=Float(0.5)
break
default:
break
}
switch playingType_Index {
case 0:
appDelegate.player?.numberOfLoops = 0
break
case 1:
appDelegate.player?.numberOfLoops = -1
break
default:
break
}
player?.volume=Float(volume)
player?.play()
self.tableView.reloadData()
}catch let error as NSError{
print(error.localizedDescription)
}
}
func URLSession(session: NSURLSession,
downloadTask: NSURLSessionDownloadTask,
didWriteData bytesWritten: Int64,
totalBytesWritten: Int64,
totalBytesExpectedToWrite: Int64){
let progress=Float(totalBytesWritten) / Float(totalBytesExpectedToWrite);
bite.text=String(format: "%.1f%%",progress * 100)
}
答案 0 :(得分:4)
AVAudioPlayer
无法 - 直接 - 从远程网址流式传输内容。
正如documentation for AVAudioPlayer
中所述Apple建议您使用此类进行音频播放,除非您正在播放从网络流中捕获的音频或需要非常低的I / O延迟。
例如,另请参阅this thread或this answer。
如果您想从远程网址流式传输,可以使用AVPlayer
代替AVAudioPlayer
。可以找到文档here
要创建一个能够流式播放的播放器,您可以沿着这些方向做点什么。
var player = AVPlayer() //declared as a property on your class
if let url = NSURL(string: "https://archive.org/download/testmp3testfile/mpthreetest.mp3") {
player = AVPlayer(URL: url)
player.volume = 1.0
player.play()
}
希望对你有所帮助。