从其他网址播放音乐时,我应该停止当前的AVPlayer实例吗?

时间:2012-01-12 20:34:07

标签: iphone avfoundation uislider avplayer

我刚刚创建了AVPlayer,它可以很好地播放音乐。我有两个问题

  1. 如何播放其他网址的其他音乐(我应该停止当前的播放器吗?)
  2. 如何在UISlider中显示歌曲的当前时间(实际上它是一种在播放歌曲时调用的方法?)

2 个答案:

答案 0 :(得分:6)

使用-[AVPlayer replaceCurrentItemWithPlayerItem]替换重播播放器实例的当前播放项目。您可以使用URL或资产创建项目。

为了知道某个项目何时结束播放,请使用通知AVPlayerItemDidPlayToEndTimeNotification

在玩家正在玩游戏时,使用-[AVPlayer addPeriodicTimeObserverForInterval]定期执行某些操作。见这个例子:

[self.player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(0.1, 100) 
                                          queue:nil 
                                     usingBlock:^(CMTime time) { 
                                     <# your code will be called each 1/10th second #> 
 }];

答案 1 :(得分:3)

1)如果您使用 - (id)initWithURL:(NSURL *)URL,那么您应该暂停播放器,释放它并创建新实例。

    AVPlayer *player = [AVPlayer alloc] initWithURL:[NSURL URLWithString:@"http:/someurl.com"]];
    [player play];
    [player pause];
    [player release];

    player = [AVPlayer alloc] initWithURL:[NSURL URLWithString:@"http:/someurl2.com"]];
    [player pause];
    [player release];

如果您使用了playerWithURL,那么只需再次调用同一行。

2)。最简单的是当前项https://stackoverflow.com/a/3999238/619434的获取持续时间,然后使用该值更新UISlider。您可以使用NSTimer定期检查持续时间。

      self.player.currentItem.asset.duration