ExoPlayer 2 中如何选择播放轨道
ExoPlayer 2 中已经不再使用 'setSelectedTrack' 函数了。相反,你可以使用 'TrackSelection' 接口来选择要播放的轨道。通过 'TrackSelector' 能够获得 'TrackSelection' 对象,然后你可以调用 'TrackSelection' 的 'selectTrack' 方法来选择要播放的轨道。
例如,以下代码展示如何选择音频轨道:
TrackSelection.Factory trackSelectionFactory =
new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter());
TrackSelector trackSelector = new DefaultTrackSelector(trackSelectionFactory);
player = ExoPlayerFactory.newSimpleInstance(context, trackSelector);
// 获取音频轨道信息
MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
if (mappedTrackInfo != null) {
// 获取音频轨道Renderer的索引
int rendererIndex = 1; // 1表示音频轨道Renderer的索引
// 获取音频轨道的TrackGroupArray
TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(rendererIndex);
// 获取音频轨道的默认TrackSelection
TrackSelection trackSelection = trackSelector.getParameters().getSelectionOverride(rendererIndex, trackGroups);
if (trackSelection == null) {
// 如果没有选择音频轨道,则选择第一个可用的音频轨道
trackSelection = trackSelectionFactory.createTrackSelection(trackGroups.get(0));
trackSelector.setParameters(trackSelector.buildUponParameters().setSelectionOverride(rendererIndex, trackGroups, trackSelection));
} else {
// 如果已经选择了音频轨道,则取消选择
trackSelector.setParameters(trackSelector.buildUponParameters().clearSelectionOverrides(rendererIndex).build());
}
}
更多关于 ExoPlayer 2 的使用和配置信息,请参考 ExoPlayer 官方文档: https://exoplayer.dev/
原文地址: https://www.cveoy.top/t/topic/jFtG 著作权归作者所有。请勿转载和采集!