Android ExoPlayer更改选定的曲目

时间:2016-04-04 15:33:34

标签: android streaming http-live-streaming hls exoplayer

我正在使用Andorid ExoPlayer通过http(HLS)从互联网传输内容。当我启动播放器时它工作正常,但是当我尝试改变播放内容的质量时 -

player.setSelectedTrack(TYPE_VIDEO, 1)

例如,我得到了HTTP 403 Forbidden错误。如果我初始化播放器并再次运行内容,那很好。我正在使用Demo项目作为源。

您是否知道可能导致此行为的原因以及播放初始流和更改曲目有何不同?

有没有办法在不重新初始化整个播放器的情况下重置流媒体,因为在播放器初始化时,url会传递给构建器?

2 个答案:

答案 0 :(得分:2)

我发现了问题。我传递给ExoPlayer的URL是从外部API返回的,并且相当长,所以我没有注意到它实际上是由“|”(http://my_url_1.m3u8|http://my_url_2.m3u8)连接的2个URL。奇怪的是,如果你将这个字符串传递给ExoPlayer,它正在播放一个没有错误的流..但是如果你试图改变播放流的质量你就会遇到问题。

答案 1 :(得分:1)

您不使用setSelectedTrack()更改流的质量。这用于从可用流中选择要播放的内容(例如音频,字幕或视频的语言非常罕见,但例如,您可以设置体育赛事的不同摄像机角度)。

所有这些流都可以有多个质量级别,ExoPlayer的FormatEvaluator根据网络条件选择要下载的质量。

如果选择新曲目时解码器不同,则需要重新初始化播放器才能继续播放。

我建议手动下载HLS清单(.m3u8),然后检查列出的信息,在浏览器中逐个尝试URL。一切都应该有效,你不应该在这个测试中得到403测试。