1

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

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

4

2 回答 2

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];
于 2014-01-17T18:43:06.797 回答
2

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

于 2013-11-03T12:05:26.410 回答