2013-08-22 92 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