2017-07-31 52 views
1

我使用Jukebox庫來傳輸遠程音樂。我流的音樂長達60分鐘。當我嘗試尋找他們時,需要30-40秒的時間來玩。我改變了庫中的一些代碼,使它們第一次立即播放。它的工作,但它並沒有加快尋求。在AVPlayer播放長音樂時更快找到時間

public func seek(toSecond second: Int, shouldPlay: Bool = false) { 
    guard let player = player, let item = currentItem else {return} 

    player.seek(to: CMTimeMake(Int64(second), 1)) 
    item.update() 
    if shouldPlay { 
     if #available(iOS 10.0, *) { 
      player.playImmediately(atRate: 1.0) 
     } else { 
      player.play() 
     } 
     if state != .playing { 
      state = .playing 
     } 
    } 
    delegate?.jukeboxPlaybackProgressDidChange(self) 
} 
+0

30〜40秒對我來說相當長。這讓我覺得有些東西與資源或連接有關。嘗試不同的可玩資產和網絡?您還可以獲取網址並從Safari瀏覽器中進行比較以比較差異。 – Breek

+0

是的。在safari中需要5秒和In vlc,1-2秒。 avplayer是否需要在查找之前下載所有歌曲? – eonr

+0

我不是100%,但如果資源支持直播,那麼'AVPlayer'將會緩衝部分資源並播放任何可用的資源。如果safari只需要5秒鐘,那麼你應該嘗試創建你自己的'AVPlayer'實例。 – Breek

回答

0

從您的評論中,我發現每次滑動滑塊時都會調用函數。例如,當您將滑塊從0移動到50時,它會被調用50次。所以您需要創建一個事件處理程序,它將顯示用戶停止滑動。

你可以從How to detect the end of slider drag答案得到答案。