使用SoundCloud Developers页面中的以下代码示例,AVAudioPlayer将在收到SCRequest响应后开始播放。根据所请求文件的大小,这可能需要一些时间。
由于iOS SoundCloud API提供预缓冲解决方案,因此可以在所有数据之前开始播放音频收到或者我需要在NSURLConnection的帮助下实现自己的解决方案才能实现这个目标吗?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *track = [self.tracks objectAtIndex:indexPath.row];
NSString *streamURL = [track objectForKey:@"stream_url"];
SCAccount *account = [SCSoundCloud account];
[SCRequest performMethod:SCRequestMethodGET
onResource:[NSURL URLWithString:streamURL]
usingParameters:nil
withAccount:account
sendingProgressHandler:nil
responseHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSError *playerError;
player = [[AVAudioPlayer alloc] initWithData:data error:&playerError];
[player prepareToPlay];
[player play];
}];
}
答案 0 :(得分:4)
要从SoundCloud流式传输曲目,您只需将URL传递给具有客户端ID的AVPlayer:
NSString *urlString = [NSString stringWithFormat:@"%@?client_id=%@", track.streamURL, self.clientId];
player = [[AVPlayer alloc] initWithURL:[NSURL URLWithString:urlString]];
[player play];
进行渐进式下载需要一些额外的工作。希望有所帮助。
答案 1 :(得分:1)
afaik目前没有预缓冲解决方案。如果您想为我们的SoundCloud API做出贡献,我们很乐意回复您关于此功能的Pull请求。
这可能会影响CocoaSoundCloudAPI和OAuth2Client。
快乐的编码!