Видео застряло на одном битрейте и не адаптируется с Exoplayer 2.6.1 - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь реализовать адаптивную потоковую передачу видео с помощью Microsoft Azure на Android с использованием Exoplayer 2.6.1.

Проблема в том, что ExoPlayer автоматически выбирает более высокую скорость передачи данных для воспроизведения, даже если соединение плохое и продолжает буферизоватьсяно не переключается на более низкий битрейт.

Но я могу добиться адаптивной потоковой передачи с помощью ExoPlayer 1.5.8.

Удалил ли ExoPlayer эту функцию в более новой версии или я что-то упустил.

Также безопасно ли использовать предыдущую версию ExoPlayer.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 05 июня 2018

Это может быть обходной путь для вашей проблемы, но я использовал его в Exoplayer 2.6.1.Кроме того, Exoplayer 1.5.8 является устаревшей версией и содержит множество устаревших кодов.Последняя версия 2.8.1

final PopupMenu popupMenu = new PopupMenu(PlayerActivity.this, btn_settings);
            popupMenu.getMenuInflater().inflate(R.menu.popup_menu, popupMenu.getMenu());

            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    if (menuItem.getItemId() == R.id.Playback || menuItem.getItemId() == R.id.Quality) {
                        return true;
                    } else {
                        if (menuItem.getGroupId() == R.id.playbackGroup) {
                            // Was clicked on a sub menu item  in playback sub menu
                            mExoPlayerView.getPlayer().setPlaybackParameters(new PlaybackParameters(playerSpeedSettings.get(menuItem.getItemId()), playerSpeedSettings.get(menuItem.getItemId())));
                            Toast.makeText(PlayerActivity.this, "" + menuItem.getTitle(), Toast.LENGTH_SHORT).show();
                        } else if (menuItem.getGroupId() == R.id.qualityGroup) {
                            // was clicked on a sub menu item in quality sub menu
                            Toast.makeText(PlayerActivity.this, "" + menuItem.getTitle(), Toast.LENGTH_SHORT).show();

                            // For selecting the Quality Tracks
                            MappingTrackSelector.MappedTrackInfo info = ((MappingTrackSelector) trackSelector).getCurrentMappedTrackInfo();

                            if (menuItem.getItemId() == R.id.onem) {
                                ((DefaultTrackSelector) trackSelector).setSelectionOverride(0, info.getTrackGroups(0), new MappingTrackSelector.SelectionOverride(
                                        new FixedTrackSelection.Factory(),
                                        0,
                                        2
                                ));
                            } else if (menuItem.getItemId() == R.id.sixk) {
                                ((DefaultTrackSelector) trackSelector).setSelectionOverride(0, info.getTrackGroups(0), new MappingTrackSelector.SelectionOverride(
                                        new FixedTrackSelection.Factory(),
                                        0,
                                        1
                                ));
                            } else if (menuItem.getItemId() == R.id.fourk) {
                                ((DefaultTrackSelector) trackSelector).setSelectionOverride(0, info.getTrackGroups(0), new MappingTrackSelector.SelectionOverride(
                                        new FixedTrackSelection.Factory(),
                                        0,
                                        0
                                ));
                            } else {
                                ((DefaultTrackSelector) trackSelector).setSelectionOverride(0, info.getTrackGroups(0), new MappingTrackSelector.SelectionOverride(
                                        new AdaptiveTrackSelection.Factory(bandwidthMeter),
                                        0,
                                        0
                                ));
                                Toast.makeText(PlayerActivity.this, "" + menuItem.getTitle(), Toast.LENGTH_SHORT).show();
                            }
                        }
                    }


                    return true; 
...