使用预缓冲开始在iOS中播放SoundCloud音频流

时间:2013-02-13 07:54:07

标签: ios soundcloud

使用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];
         }];
}  

2 个答案:

答案 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请求。

这可能会影响CocoaSoundCloudAPIOAuth2Client

快乐的编码!