5

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

2 回答 2

4

要从 SoundCloud 流式传输曲目,您只需将 URL 传递给带有客户端 ID 的 AVPlayer:

   NSString *urlString = [NSString stringWithFormat:@"%@?client_id=%@", track.streamURL, self.clientId];
player = [[AVPlayer alloc] initWithURL:[NSURL URLWithString:urlString]];
[player play];

使它成为渐进式下载需要一些额外的工作。希望有帮助。

于 2014-03-04T14:48:53.823 回答
1

afaik 目前没有预缓冲解决方案。如果您想为我们的 SoundCloud API 做出贡献,我们很乐意查看您关于此功能的 Pull Request。

这可能会影响CocoaSoundCloudAPIOAuth2Client

快乐编码!

于 2013-02-13T23:21:50.187 回答