在 ExoPlayer 2.18.5 版本中,可以使用 'MappingTrackSelector' 类来切换音轨。下面是一个简单的示例:

MappingTrackSelector trackSelector = new MappingTrackSelector();
player = ExoPlayerFactory.newSimpleInstance(context, trackSelector);

// 获取可用音轨列表
MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
if (mappedTrackInfo != null) {
    // 获取可用的音频轨道列表
    TrackGroupArray audioTrackGroups = mappedTrackInfo.getTrackGroups(Format.TYPE_AUDIO);
    if (audioTrackGroups.length > 0) {
        // 选择第一个音频轨道
        int audioTrackIndex = 0;
        DefaultTrackSelector.ParametersBuilder parametersBuilder = new DefaultTrackSelector.ParametersBuilder();
        parametersBuilder.setPreferredAudioLanguage('en'); // 设置首选的语言
        trackSelector.setParameters(parametersBuilder.build());
        trackSelector.setParameters(trackSelector.buildUponParameters().setRendererDisabled(audioTrackIndex, false));
        trackSelector.setParameters(trackSelector.buildUponParameters().setSelectionOverride(audioTrackIndex, audioTrackGroups.get(0), 0));
    }
}

上述代码中,首先创建了一个 'MappingTrackSelector' 对象,然后获取可用的音轨列表。如果有可用的音频轨道,就选择第一个音频轨道,并设置首选的语言。最后,使用 'setRendererDisabled()' 方法和 'setSelectionOverride()' 方法来启用和选择音频轨道。根据需要,可以使用类似的方法来切换其他类型的轨道。

ExoPlayer 2.18.5 音轨切换指南:使用 MappingTrackSelector

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

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