2012-01-12 1 views
1

Я только что создал AVPlayer и хорошо играет музыку. У меня есть два вопросаДолжен ли я останавливать текущий экземпляр AVPlayer при воспроизведении музыки с другого URL-адреса?

  1. Как играть другую музыку с другого сайта (я должен остановить текущий игрок?)
  2. Как показывают текущее время песни в UISlider (на самом деле это метод, который вызывается, когда песня играет ли?)

ответ

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 
+0

#Alex большое спасибо !!!!!! –

+1

Я старался именно так в фоновом режиме. Но новый объект AVPlayer не начинает воспроизводиться в фоновом режиме. Как вы с этим справились? – V1ru8

+0

Что вы имеете в виду, когда говорите в «фоне»? – Alex

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

+1 Гораздо лучше использовать периодическийTimeObserver, чем ввести еще один таймер опроса. – Till

+0

СПАСИБО ВАМ ОЧЕНЬ! –

Смежные вопросы