Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ExoPlayer更改选定曲目_Android_Streaming_Http Live Streaming_Exoplayer - Fatal编程技术网

Android ExoPlayer更改选定曲目

Android ExoPlayer更改选定曲目,android,streaming,http-live-streaming,exoplayer,Android,Streaming,Http Live Streaming,Exoplayer,我正在使用android ExoPlayer通过http(HLS)从互联网上传输内容。当我启动播放器时,它工作正常,但当我尝试更改播放内容的质量时- player.setSelectedTrack(视频类型,1) 例如,我得到和HTTP 403禁止的错误。如果我初始化播放器并再次运行内容,就可以了。我使用演示项目作为源代码 您知道是什么导致了这种行为,播放初始流和更改曲目有什么区别吗 有没有一种方法可以在不重新初始化整个播放器的情况下重置流媒体,因为url是在播放器初始化时传递给构建器的 不能使

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

player.setSelectedTrack(视频类型,1)

例如,我得到和HTTP 403禁止的错误。如果我初始化播放器并再次运行内容,就可以了。我使用演示项目作为源代码

您知道是什么导致了这种行为,播放初始流和更改曲目有什么区别吗


有没有一种方法可以在不重新初始化整个播放器的情况下重置流媒体,因为url是在播放器初始化时传递给构建器的

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

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

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


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

我发现了问题。我传递给ExoPlayer的URL是从外部API返回的,相当长,所以我没有注意到它实际上是由“|”()连接的两个URL。奇怪的是,如果您将此字符串传递给ExoPlayer,它将无误地播放流。。但是如果你试图改变播放流的质量,你就会遇到问题