ExoPlayer форсирует качественный рывок

Я пытаюсь получить видеоплеер, где я могу выбрать качество видео. Как и Youtube: по умолчанию он выбирает «авто», но с помощью переключателя вы можете выбрать: 360p, 720p и т. д.

Части 'auto' теперь работают с использованием этого кода: ```

        TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(BANDWIDTH_METER);
        trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
        player = ExoPlayerFactory.newSimpleInstance(getContext(), trackSelector, new DefaultLoadControl());

Позже я создаю новый DashMediaSource.

 return new DashMediaSource(uri, buildDataSourceFactory(true),
          new DefaultDashChunkSource.Factory(mediaDataSourceFactory), mainHandler, null);

Итак, видео сейчас воспроизводится, но как мне теперь настроить качество? Так, например, когда я выбираю 360p, я хочу, чтобы игрок выбрал это представление.

<AdaptationSet segmentAlignment="true" subsegmentAlignment="true" subsegmentStartsWithSAP="1"> <Representation bandwidth="954483" codecs="avc1.4d401f" frameRate="525007/17491" height="360" id="VIDEO-1" mimeType="video/mp4" startWithSAP="1" width="640"> <BaseURL>video360.fmp4</BaseURL> <SegmentBase indexRange="914-1425" indexRangeExact="true"> <Initialization range="0-913"/> </SegmentBase> </Representation> <Representation bandwidth="2351904" codecs="avc1.4d401f" frameRate="525007/17491" height="720" id="VIDEO-2" mimeType="video/mp4" startWithSAP="1" width="1280"> <BaseURL>video720.fmp4</BaseURL> <SegmentBase indexRange="914-1425" indexRangeExact="true"> <Initialization range="0-913"/> </SegmentBase> </Representation> </AdaptationSet>

Я нашел FixedTrackSelection и AdaptationSet но я не прихожу к решению

Кто-нибудь знает, как я могу этого добиться?


person raiders    schedule 16.07.2018    source источник
comment
Демонстрация Exoplayer фактически включает эту функцию, и доступен обзорный блог: stackoverflow.com/a/44068596/334402.   -  person Mick    schedule 16.07.2018