Exoplayer不播放视频只播放音频

时间:2016-08-06 12:29:48

标签: android android-recyclerview exoplayer

builder.addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); // try the request Response response = null; int tryCount = 1; while (tryCount <= MAX_TRY_COUNT) { try { response = chain.proceed(request); break; } catch (Exception e) { if (!NetworkUtils.isNetworkAvailable()) { // if no internet, dont bother retrying request throw e; } if ("Canceled".equalsIgnoreCase(e.getMessage())) { // Request canceled, do not retry throw e; } if (tryCount >= MAX_TRY_COUNT) { // max retry count reached, giving up throw e; } try { // sleep delay * try count (e.g. 1st retry after 3000ms, 2nd after 6000ms, etc.) Thread.sleep(RETRY_BACKOFF_DELAY * tryCount); } catch (InterruptedException e1) { throw new RuntimeException(e1); } tryCount++; } } // otherwise just pass the original response on return response; } }); 未显示该视频。我可以听音频,但视频没有播放。我正在使用ExoPlayer中的Exoplayer。我只能看到黑屏并听音频。我无法跟踪问题。我正在Recyclerview播放HLS视频。

2 个答案:

答案 0 :(得分:0)

几天前我也遇到了同样的问题,现在将其发布在这里,这样可以使某人的生活变得轻松,因为当我们在RecyclerView中使用Exoplayer时,这个问题经常出现。

问题原因(就我而言):

每次进入屏幕时,PlayerView都会发生变化(由于存在RecyclerView)

我通过在showLivePlayer()方法内的PlayerView 对象上每次设置 player 来处理它,每次启用回收器视图的屏幕打开播放视频时都会调用该方法。

    public void showLivePlayer(PlayerView playerView, String videoURL, String tokenURL, ProgressBar progressBar){

        mPlayerView = playerView;
        if(player != null)
            mPlayerView.setPlayer(player);  //THIS IS THE FIX

        mProgressBar = progressBar;
        //register event bus
        if (!EventBus.getDefault().isRegistered(this))
            EventBus.getDefault().register(this);

        shouldAutoPlay = true;
        bandwidthMeter = new DefaultBandwidthMeter();
        mediaDataSourceFactory = new DefaultDataSourceFactory(mContext,
                Util.getUserAgent(mContext, mContext.getString(R.string.app_name)), bandwidthMeter);
        window = new Timeline.Window();
        getLiveVideoToken(tokenURL, videoURL);
}

答案 1 :(得分:0)

我不好的是我使用的是PlayerControlView而不是PlayerView