我剛剛創建了AVPlayer,它播放音樂的效果很好。我有兩個問題從另一個URL播放音樂時,我應該停止當前的AVPlayer實例嗎?
- 如何從另一個URL再踢音樂(我應該停止目前的播放器?)
- 如何顯示在UISlider(實際上是它那個叫首歌的時候方法歌曲的當前時間)
我剛剛創建了AVPlayer,它播放音樂的效果很好。我有兩個問題從另一個URL播放音樂時,我應該停止當前的AVPlayer實例嗎?
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
使用-[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比引入另一個輪詢定時器更好地使用periodicTimeObserver。 – Till 2012-01-13 00:05:06
非常感謝! – 2012-01-13 11:37:31
#Alex非常感謝你!!!!!! – 2012-01-12 22:41:21
我試圖在背景中正是如此。但新的AVPlayer對象在後臺不開始播放。你是怎麼處理的? – V1ru8 2012-03-08 13:46:38
當你說「背景」時,你的意思是什麼? – Alex 2012-03-08 21:53:44