Exoplayer2.x 为什么Exoplayer 2.x在自适应播放期间不在低网络上切换到较低比特率?

Exoplayer2.x 为什么Exoplayer 2.x在自适应播放期间不在低网络上切换到较低比特率?,exoplayer2.x,adaptive-bitrate,Exoplayer2.x,Adaptive Bitrate,我们使用的是exoplayer v2.x,正在播放一个HLS文件,该文件有4个比特率磁道 当我们将exoplayer配置为自适应播放时,它从较高比特率的曲目开始,但在我们使用Charles限制网络速度时,不会切换回较低比特率的曲目。播放器似乎坚持使用已选择的较高比特率曲目,并继续缓冲,而不是切换到较低比特率的曲目 我们已按以下方式配置exoplayer: private DefaultBandwidthMeter BANDWIDTH_METER = new DefaultBandwidthMe

我们使用的是exoplayer v2.x,正在播放一个HLS文件,该文件有4个比特率磁道

当我们将exoplayer配置为自适应播放时,它从较高比特率的曲目开始,但在我们使用Charles限制网络速度时,不会切换回较低比特率的曲目。播放器似乎坚持使用已选择的较高比特率曲目,并继续缓冲,而不是切换到较低比特率的曲目

我们已按以下方式配置exoplayer:

private DefaultBandwidthMeter BANDWIDTH_METER = 
new DefaultBandwidthMeter(mUiUpdateHandler, new BandwidthMeter.EventListener() {

@Override
 public void onBandwidthSample(int elapsedMs, long bytes, long bitrate) {
       Log.v(TAG, "Elapsed Time in MS " + elapsedMs + " Bytes " + bytes + " Bitrate " + bitrate);
       bitrateEstimate = bitrate;
       bytesDownloaded = bytes;

 }
});

TrackSelection.Factory adaptiveTrackSelectionFactory =
             new AdaptiveTrackSelection.Factory(BANDWIDTH_METER);

trackSelector = new DefaultTrackSelector(adaptiveTrackSelectionFactory);


player = ExoPlayerFactory.newSimpleInstance(getActivity(), trackSelector, 
new CustomLoadControl(new CustomLoadControl.EventListener() {

@Override
   public void onBufferedDurationSample(long bufferedDurationUs) {
           long bufferedDurationMs = bufferedDurationUs;
   }
}, mUiUpdateHandler), drmSessionManager, extensionRendererMode);

有人能确认这是配置播放机的正确方法吗?还有没有人注意到这个问题并对此进行了修复


提前感谢。

您好,我们可以找到玩家行为不正确的根本原因。我们已经为更快的启动配置了缓冲区大小,这打破了自适应行为。由于较短的缓冲区大小,当网络断开时,播放机无法切换到较低的比特率轨道。适当调整缓冲区大小解决了这个问题。您现在使用的缓冲区大小是多少,以前是多少?您好,我们可以找到播放器行为不正确的根本原因。我们已经为更快的启动配置了缓冲区大小,这打破了自适应行为。由于较短的缓冲区大小,当网络断开时,播放机无法切换到较低的比特率轨道。适当调整缓冲区大小解决了这个问题。您现在使用的缓冲区大小是多少,以前是多少?