2016-04-04 30 views
1

我使用Andorid ExoPlayer通過http(HLS)從互聯網傳輸內容。當我開始播放它工作正常,但是當我嘗試改變播放內容的質量 -Android ExoPlayer更改所選軌道

player.setSelectedTrack(TYPE_VIDEO, 1)

例如,我GET和HTTP 403禁止錯誤。如果我初始化播放器並再次運行內容,那很好。我正在使用Demo項目作爲源。

你知道什麼可能導致這種行爲,以及播放初始流和改變曲目有什麼不同?

有沒有一種方法可以在不重新初始化整個播放器的情況下重置流式傳輸,因爲當播放器初始化時url會傳遞給構建器?

回答

1

我發現了這個問題。我傳遞給ExoPlayer的URL從外部API返回並且相當長,所以我沒有注意到它實際上是由「|」(http://my_url_1.m3u8|http://my_url_2.m3u8)連接的2個URL。奇怪的是,如果你將這個字符串傳遞給ExoPlayer,它將播放一個沒有錯誤的流..但是如果你試圖改變播放流的質量,你就會遇到問題。

1

您不會使用setSelectedTrack()更改流的質量。這用於從可用的流中選擇要播放的內容(如音頻,字幕的語言,或者視頻非常罕見,但例如可以設置不同的視頻角度)。

所有這些流可以有多個質量級別,ExoPlayer的FormatEvaluator根據網絡條件選擇要下載的質量。

如果在選擇新曲目時解碼器不同,則播放器需要重新初始化才能繼續播放。

我建議手動下載HLS清單(.m3u8),然後檢查列出的信息,在瀏覽器中逐一嘗試。一切都應該工作,你也不應該在這個測試中得到403測試。