AVPlayer如何管理不同的URL

时间:2012-03-14 11:00:40

标签: ios avplayer

我正在尝试做一个小型收音机应用程序,我得到了一个URL列表,我将其传递给AVPlayer,但我无法理解如何管理不同的URL。

例如,如果我首先播放此网址:http://www.example.com/file.mp3 然后我打电话给http://www.example.net/file2.mp3 它工作正常,但是当我选择http://www.example.org/file.mp3.m3u时,它不会加载该URL并且AVPlayer将无法播放。

这是我使用的代码:

urlStream = [NSURL URLWithString:mp3URL];  
appDelegate = [[UIApplication sharedApplication]delegate];    
playerItem = [AVPlayerItem playerItemWithURL:urlStream];
playerItem addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:nil];
[playerItem addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:nil];
[appDelegate.player replaceCurrentItemWithPlayerItem:playerItem];

我使用replaceCurrentItemWithPlayerItem:playerItem因为如果我在选择其他流时使用initWithPlayerItem我就无法停止上一个播放:所以停止播放流并启动另一个流的唯一方法是使用replaceCurrentItemWithPlayerItem

在Apple文档中,我读到replaceCurrentItemWithPlayerItem必须与它所替换的项目具有相同的“compositor”:什么是合成器?

我看到前两个流和第三个流(在上面的示例中)之间的区别是文件扩展名。

任何建议在哪里寻找都将非常感激。

1 个答案:

答案 0 :(得分:2)

问题似乎不是替换项目 - 而是特定文件的文件格式。尝试首先打开m3u文件 - 可能它也会失败。

m3u-URL表示这不是mp3文件而是m3u文件 - 这是媒体文件的URL列表。 AVPlayerAVPlayerItem能够播放m3u8文件 - 即m3u文件,这些文件是UTF8编码的。

您是否尝试在Mobile Safari中打开这些网址?如果它们不起作用,AVPlayer可能也不支持该格式。

在任何情况下 - 如果您可以提供实际有问题的URL,则可以检查实际的文件格式。

对于“compositor”,“Quartz compositor”意味着 - 忘记这一点,这里不相关。 [编辑:也许这是相关的 - 在您对此答案发表评论后我感到茫然......]