如何在当前正在播放HTTP Live Streaming的情况下加载下一个文件?

时间:2013-03-10 23:53:57

标签: objective-c avfoundation avplayer http-live-streaming avqueueplayer

我正在开发一个应用程序,我需要在其中流式传输大量的音频文件,每个文件的范围为5到15秒。 我想尽可能减少文件之间的加载时间。

主要问题: 有没有办法在当前播放最后一段时开始缓冲下一个文件(通过HLS)?

AVQueuePlayer在iOS方面是否适用于此?

我将非常感谢详细解释,因为我是HTTP Live Streaming和AV Foundation的新手。

相关问题: 广播应用如何在歌曲之间没有延迟地传输音频?

1 个答案:

答案 0 :(得分:1)

是的,AVQueuePlayer是播放通过HTTP协议从互联网流式传输的音频序列的合适解决方案。

我现在使用AVQueuePlayer已经有一段时间了,效果非常好而且歌曲之间没有滞后。以下是有关如何使用AVQueuePlayer的简单示例:

NSURL *url1 = [NSURL URLWithString:[urlsToPlay objectAtIndex:0]];
NSURL *url2 = [NSURL URLWithString:[urlsToPlay objectAtIndex:1]];
NSURL *url3 = [NSURL URLWithString:[urlsToPlay objectAtIndex:2]];

self.item1 = [[AVPlayerItem alloc] initWithURL:url1];
self.item2 = [[AVPlayerItem alloc] initWithURL:url2];
self.item3 = [[AVPlayerItem alloc] initWithURL:url3];

self.radioPlayerURLs = [[NSArray alloc] initWithObjects:self.item1,self.item2, self.item3, nil];
self.onDemandPlayer  = [AVQueuePlayer queuePlayerWithItems:self.radioPlayerURLs];
[self.onDemandPlayer play];

有关详细信息,请参阅Apple文档:

AVFoundation

AVQueuePlayer