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/

ExoPlayer 2 中如何选择播放轨道

原文地址: https://www.cveoy.top/t/topic/jFtG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录