2013-08-22 115 views
1

我的iOS應用程序的一部分正在播放從Soundcloud藉助API下載的歌曲。但是,歌曲完全下載後播放,而不是流式播放。當使用stream_url發送GET請求時,請求花費很長時間才能加載到AVAudioPlayer中(我猜是因爲一個小時以上的軌道上有128kb/s的上限),並且使用download_url的請求不起作用,很有可能是因爲賽道上的下載設置爲只能通過Facebook Band頁面訪問。iOS/Soundcloud API - 從Soundcloud API下載音軌,無需stream_url請求

我很好奇,如果有更快的方式下載這兩個選項被淘汰的曲目。否則,當歌曲的其餘部分加載到播放器中時,是否有方法開始播放歌曲。例如,我可以將一首曲目的前五分鐘加載到臨時播放器中,然後當另一個播放器完全加載時,讓它接管播放嗎?被訪問的Soundcloud曲目全部來自朋友,因此如有必要,我可以要求他更改帳戶選項。

+0

你有什麼解決辦法?我也堅持相同的觀點。 –

+0

不幸的是,我決定暫時嵌入SoundCloud播放器,直到我找到一個更好的方式來做到這一點。 – Xpistoforos

回答

2

您需要使用流式技術而不是AVAudioPlayer。您可以使用AudioStreamer在加載時允許播放音頻。這解決了我的問題

+0

謝謝!我會盡快嘗試這個機會。 – Xpistoforos

+0

非常感謝..對我非常有幫助 –

3

我發現一個非常好的答案在這裏加快播放使用AVPlayer。

的SoundCloud的iOS API - 從鏈接

播放聲音我已經嘗試過的反應真的很好!

的代碼是:

NSString *trackID = @"100026228"; 
NSString *clientID = @"YOUR_CLIENT_ID"; 
NSURL *trackURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.soundcloud.com/tracks/%@/stream?client_id=%@", trackID, clientID]]; 

NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:trackURL completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
    // self.player is strong property 
    self.player = [[AVAudioPlayer alloc] initWithData:data error:nil]; 
    [self.player play]; 
}]; 

[task resume]; 
+0

我想你應該提及你在這裏發佈的解決方案的人的名字/參考! –

+0

你是對的,但現在我不記得了。我下次肯定會這樣做。 – santibernaldo