我正在尝试使用 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/