android–exoplayer-自动更改质量不起作用(hls)

android–exoplayer-自动更改质量不起作用(hls),第1张

概述我对exoplayer没什么问题.当我尝试从hls流播放视频时几乎一切正常. hls流包含3组不同的组块列表,每组用于不同的带宽.但是自适应流媒体不起作用,播放器只能使用一个块表,并且网络连接速度慢,这个解决方案无法使用.源代码: BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); Tr

我对exoplayer没什么问题.当我尝试从hls流播放视频时几乎一切正常. hls流包含3组不同的组块列表,每组用于不同的带宽.

但是自适应流媒体不起作用,播放器只能使用一个块表,并且网络连接速度慢,这个解决方案无法使用.

源代码:

 BanDWIDthMeter banDWIDthMeter = new DefaultBanDWIDthMeter(); TrackSelection.Factory vIDeoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(banDWIDthMeter); TrackSelector trackSelector = new DefaultTrackSelector(vIDeoTrackSelectionFactory); this.simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(getActivity(),trackSelector); this.vIDeoPlayer.setPlayer(this.simpleExoPlayer); DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this.getActivity(),Util.getUserAgent(this.getActivity(),"appname")); MediaSource mediaSource = new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(hlsUrl)); this.simpleExoPlayer.prepare(mediaSource); this.simpleExoPlayer.setPlayWhenReady(true);

我也尝试实现MediaSourceEventListener,并且在播放器初始化时只调用onDownstreamFormatChanged一次.

谢谢你的任何建议

最佳答案这里的关键是您需要将传递给AdaptiveTrackSelection.Factory的相同“banDWIDthMeter”传递给dataSourceFactory.
只有在这些更改之后,Exoplayer才会按预期进行自适应流式传输.

String userAgent = "XYZPLAYER";DefaulthttpDataSourceFactory httpDataSourceFactory = new DefaulthttpDataSourceFactory(userAgent,banDWIDthMeter,DefaulthttpDataSource.DEFAulT_CONNECT_TIMEOUT_MILliS,DefaulthttpDataSource.DEFAulT_READ_TIMEOUT_MILliS,true);DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(this,httpDataSourceFactory);
总结

以上是内存溢出为你收集整理的android – exoplayer-自动更改质量不起作用(hls)全部内容,希望文章能够帮你解决android – exoplayer-自动更改质量不起作用(hls)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1139569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存