android - 视频卡在单比特率并且不适应 Exoplayer 2.6.1

标签 android azure exoplayer

我正在尝试使用 Exoplayer 2.6.1 在 Android 上使用 Microsoft Azure 实现自适应视频流。

问题是,即使连接较差,ExoPlayer 也会自动获取较高的比特率来播放,并继续缓冲,但不会切换到较低的比特率。

但是我可以使用 ExoPlayer 1.5.8 实现自适应流媒体。

ExoPlayer 是否在新版本中删除了此功能,还是我遗漏了某些内容。

此外,使用以前版本的 ExoPlayer 是否安全。请帮忙。

最佳答案

这可能是解决您问题的方法,但我已在 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; 

关于android - 视频卡在单比特率并且不适应 Exoplayer 2.6.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50599670/

相关文章:

android - SimpleExoPlayerView 自定义以保持背景透明和控件始终可见

azure - 在 Azure 中使用基于角色的授权时,如何允许服务帐户访问我的 REST API?

android - 如何在 Android 中为 ExoPlayer 设计自定义搜索栏和音量控制

android - 如何知道我的应用程序是否禁用了显示通知?

android - 运行android项目出错

azure - HTTP HEAD 响应中的 "303 See other"

sql - AWS Schema Conversion Tool可以连接到Azure吗

android - 系统UI(Statusbar和Navigation Bar)渲染神器

java - 通信选项 : Android client- Java server

java - 蓝牙扫描仪在屏幕关闭时停止扫描或减少扫描频率