iOS / Soundcloud API - 从没有stream_url请求的Soundcloud API下载曲目

时间:2013-08-22 19:23:40

标签: ios objective-c api soundcloud

我的iOS应用程序的一部分是在他们的API的帮助下播放从Soundcloud下载的歌曲。但是,歌曲完全下载然后播放,而不是流式播放。当使用stream_url发送GET请求时,请求需要花费很长时间才能加载到AVAudioPlayer中(我猜是因为轨道上的128kb / s上限超过一小时),并且使用download_url的请求不起作用,最有可能的原因是因为在轨道上下载只能通过Facebook Band页面访问。

我很好奇是否有更快的方式来下载这两个选项消除的轨道。否则,有没有办法开始流式传输歌曲,而歌曲的其余部分加载到播放器。例如,我可以将曲目的前5分钟加载到临时播放器中,然后当其他播放器完全加载时,是否接管播放?正在访问的Soundcloud曲目全部来自朋友,因此我可以要求他在必要时更改帐户选项。

2 个答案:

答案 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];

答案 1 :(得分:2)

您需要使用流技术而不是AVAudioPlayer。您可以使用AudioStreamer在加载时播放音频。这解决了我的问题