我的iOS应用程序的一部分是在他们的API的帮助下播放从Soundcloud下载的歌曲。但是,歌曲完全下载然后播放,而不是流式播放。当使用stream_url发送GET请求时,请求需要花费很长时间才能加载到AVAudioPlayer中(我猜是因为轨道上的128kb / s上限超过一小时),并且使用download_url的请求不起作用,最有可能的原因是因为在轨道上下载只能通过Facebook Band页面访问。
我很好奇是否有更快的方式来下载这两个选项消除的轨道。否则,有没有办法开始流式传输歌曲,而歌曲的其余部分加载到播放器。例如,我可以将曲目的前5分钟加载到临时播放器中,然后当其他播放器完全加载时,是否接管播放?正在访问的Soundcloud曲目全部来自朋友,因此我可以要求他在必要时更改帐户选项。
答案 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在加载时播放音频。这解决了我的问题