exoplayer:自动质量更改不起作用(hls)

amrnrhlw  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(137)

我对外星玩家有点小问题。当我尝试播放一个直播的电视网址,质量总是很低,并没有改变到一个高质量,我有一个很好的wifi信号,我尝试了网址直接到浏览器和质量开始低,几秒钟后,它把全高清
我使用的是exoplayer 2.7.3,这些是我的代码,我不知道我做错了什么,或者我是否遗漏了一些需要补充的东西

private SimpleExoPlayerView simpleExoPlayerView ;
private String hlsVideoUri = "https://mdstrm.com/live-stream-playlist/533adcc949386ce765657d7c.m3u8" ;
private SimpleExoPlayer player ;
private ProgressBar progressBar ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    Handler mainHandler = new Handler();
    BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
    TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);

    LoadControl loadControl = new DefaultLoadControl();

    player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);

    simpleExoPlayerView = (SimpleExoPlayerView) findViewById(R.id.player_view);
    progressBar = (ProgressBar) findViewById(R.id.progress);

    simpleExoPlayerView.setPlayer(player);

    DefaultBandwidthMeter defaultBandwidthMeter = new DefaultBandwidthMeter();
    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,
            Util.getUserAgent(this, "ejemplom3u8"), defaultBandwidthMeter);
    ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();

    HlsMediaSource hlsMediaSource = new HlsMediaSource(Uri.parse(hlsVideoUri), dataSourceFactory, mainHandler, new AdaptiveMediaSourceEventListener() {
        @Override
        public void onLoadStarted(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs) {

        }

        @Override
        public void onLoadCompleted(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs, long bytesLoaded) {

        }

        @Override
        public void onLoadCanceled(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs, long bytesLoaded) {

        }

        @Override
        public void onLoadError(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs, long bytesLoaded, IOException error, boolean wasCanceled) {

        }

        @Override
        public void onUpstreamDiscarded(int trackType, long mediaStartTimeMs, long mediaEndTimeMs) {

        }

        @Override
        public void onDownstreamFormatChanged(int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaTimeMs) {

        }
    });

    hlsMediaSource2 = hlsMediaSource ;

    simpleExoPlayerView.requestFocus();
    player.addListener(this);
    player.prepare(hlsMediaSource2);

    player.setPlayWhenReady(true);

}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题