Я настраиваю Exo Player в своем приложении, и я внедрил адаптивную потоковую передачу DASH в своем плеере и хочу добавить функциональность для воспроизведения дорожки определенного качества, выбранной пользователем.
Моя версия проигрывателя Exo 2.9.3
, я попытался реализовать, следуя этим Пост Stackoverflow , Средний пост , но это немного сбивает с толку, и некоторая часть кодаустарела и говорит, что правда в том, что я новичок.
Вот мой код для инициализации игрока: -
private void initializePlayer() {
if (player == null) {
bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory factory = new PlayerTrackSelector(bandwidthMeter);
trackSelector = new DefaultTrackSelector(factory);
player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
player.addVideoListener(this);
playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_ZOOM);
player.setVideoScalingMode(C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
player.addListener(this);
playerView.setPlayer(player);
}
MediaSource mediaSource = buildMediaSource(Uri.parse("http://192.168.43.238:3000/storage/video-dash/9e351142a4eb1664643bf93ba13959e8.mpd"));
player.prepare(mediaSource, true, false);
player.setPlayWhenReady(playWhenReady);
player.seekTo(currentWindow, playbackPosition);
}
И TrackSelector
Класс: -
public class PlayerTrackSelector implements TrackSelection.Factory {
private BandwidthMeter bandwidthMeter;
public PlayerTrackSelector(BandwidthMeter bandwidthMeter) {
this.bandwidthMeter = bandwidthMeter;
}
@Override
public TrackSelection createTrackSelection(TrackGroup group, BandwidthMeter bandwidthMeter, int... tracks) {
return new AdaptiveTrackSelection(group,tracks,bandwidthMeter,
AdaptiveTrackSelection.DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_MS,
AdaptiveTrackSelection.DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_MS,
AdaptiveTrackSelection.DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_MS,
AdaptiveTrackSelection.DEFAULT_BANDWIDTH_FRACTION,
AdaptiveTrackSelection.DEFAULT_BUFFERED_FRACTION_TO_LIVE_EDGE_FOR_QUALITY_INCREASE,
AdaptiveTrackSelection.DEFAULT_MIN_TIME_BETWEEN_BUFFER_REEVALUTATION_MS,
Clock.DEFAULT);
}
}
Я ожидаю получить список доступных типов качества и позволить пользователю выбрать один из них и воспроизвести остальную часть контента с выбранным типом, этот вопрос может быть широким, но, пожалуйста, помогите мне немного.