Мы используем 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);
Может кто-нибудь подтвердить, что это правильный способ настройки плеера? Также кто-нибудь наблюдал эту проблему и есть решение для этого?
Заранее спасибо.