2012-01-12 49 views

回答

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非常感謝你!!!!!! – 2012-01-12 22:41:21

+1

我試圖在背景中正是如此。但新的AVPlayer對象在後臺不開始播放。你是怎麼處理的? – V1ru8 2012-03-08 13:46:38

+0

當你說「背景」時,你的意思是什麼? – Alex 2012-03-08 21:53:44

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比引入另一個輪詢定時器更好地使用periodicTimeObserver。 – Till 2012-01-13 00:05:06

+0

非常感謝! – 2012-01-13 11:37:31

相關問題