【发布时间】:2015-12-22 22:35:13
【问题描述】:
我正在尝试从 soundcloud 播放歌曲。由于 iOS-SDK 已经停产,我必须自己完成所有的身份验证和流式传输。流式传输歌曲时,我基本上使用 Alamofire 创建流并将接收数据解析为 AVAudioplayer 实例。然后它会播放声音一秒钟并自行暂停。我错过了什么?
class SoundcloudPlayer: NSObject, AVAudioPlayerDelegate {
var clientProvider: SoundcloudConnectorProvider!
var track: SoundcloudTrack?
private var stream: Request?
private var audioData = NSMutableData()
private var audioPlayer: AVAudioPlayer!
override init() {
super.init()
}
func play(){
if let client = clientProvider?.currentClient() where client.hasUnexpiredAccessToken() && track != nil{
stream = client.request(.GET, self.track!.url!).stream({ (data) -> Void in
self.audioData.appendData(data)
if self.audioPlayer == nil{
do{ self.audioPlayer = try AVAudioPlayer(data: self.audioData)} catch {print("error") }
self.audioPlayer.delegate = self
self.audioPlayer.play()
}
print(self.audioPlayer.data?.length)
}).progress({ (read, total, expected) -> Void in
Async.main(block: { () -> Void in
//print("\(total)/\(expected)")
})
})
}
}
}
【问题讨论】:
标签: ios avaudioplayer alamofire