我有一個ExoPlayer實例和一個seekbar。當用戶尋求時,我想用ExoPlayer.seekTo()
來更新視頻的位置。Exoplayer - 你可以在緩衝時調用seekTo()嗎?
您是否可以根據需要頻繁撥打ExoPlayer.seekTo()
,並且如果他們還沒有完成,它應該處理取消先前的seekTo()
請求?或者我們是否必須防止過度打電話seekTo()
自己?
感謝
我有一個ExoPlayer實例和一個seekbar。當用戶尋求時,我想用ExoPlayer.seekTo()
來更新視頻的位置。Exoplayer - 你可以在緩衝時調用seekTo()嗎?
您是否可以根據需要頻繁撥打ExoPlayer.seekTo()
,並且如果他們還沒有完成,它應該處理取消先前的seekTo()
請求?或者我們是否必須防止過度打電話seekTo()
自己?
感謝
你可以調用ExoPlayer.seekTo()一樣頻繁只要你想,它應該處理並取消以前seekTo()請求,如果他們還沒有完成?或者,我們是否必須防止overTopping seekTo()調用自己?
我認爲你可以。
它將不取消先前的尋找請求。實際上,至少有三個線程涉及查找過程。
一旦內部播放線程已經做了尋找動作的處理,也可以安排doSomeWork這個動作的嘗試看看是否有被渲染(或跳過)解碼幀。 最後,當查找目標被渲染時,您可以看到顯示屏上顯示的查找目標的時刻。
總之,先前的查找操作(例如ExoPlayer.seekTo())已將相應的消息發送到internalPlaybackThread的消息隊列後,您可以再次按下(遞送)下一個查找。查找操作是序列化並按內部播放線程順序處理。
一旦內部播放螺紋檢索求消息&已處理它。加載線程開始加載。如果您下載,demux &解碼速度足夠快,並且在下一次搜索前有一個doSomeWork,您可以看到搜索結果。 否則,下一次查找將停止加載&再次查找(在這種情況下,它看起來好像前一個查找是取消)。
結果,這取決於如何快速您提供一個連續的尋找動作和內部的執行順序。