要获取所有音轨,可以使用ExoPlayer的TrackSelector类和TrackGroupArray类。以下是示例代码:

TrackSelector trackSelector = player.getTrackSelector();
MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
if (mappedTrackInfo != null) {
    for (int i = 0; i < mappedTrackInfo.getRendererCount(); i++) {
        TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(i);
        if (trackGroups.length > 0) {
            for (int j = 0; j < trackGroups.length; j++) {
                TrackGroup trackGroup = trackGroups.get(j);
                for (int k = 0; k < trackGroup.length; k++) {
                    Format format = trackGroup.getFormat(k);
                    // 输出音轨信息
                    Log.d(TAG, "Track " + i + " - " + format.sampleMimeType + " - " + format.language);
                }
            }
        }
    }
}

要切换音轨,可以使用TrackSelection类和TrackSelectionArray类。以下是示例代码:

TrackSelector trackSelector = player.getTrackSelector();
MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
if (mappedTrackInfo != null) {
    for (int i = 0; i < mappedTrackInfo.getRendererCount(); i++) {
        TrackGroupArray trackGroups = mappedTrackInfo.getTrackGroups(i);
        if (trackGroups.length > 0) {
            DefaultTrackSelector.ParametersBuilder builder = trackSelector.buildUponParameters();
            TrackSelectionArray trackSelectionArray = trackSelector.getCurrentTrackSelections();
            for (int j = 0; j < trackGroups.length; j++) {
                TrackGroup trackGroup = trackGroups.get(j);
                for (int k = 0; k < trackGroup.length; k++) {
                    Format format = trackGroup.getFormat(k);
                    if (format.sampleMimeType.equals(MimeTypes.AUDIO_AAC)) {
                        // 切换到指定的音轨
                        builder.setRendererDisabled(i, false);
                        DefaultTrackSelector.SelectionOverride override = new DefaultTrackSelector.SelectionOverride(j, k);
                        builder.setSelectionOverride(i, trackGroups, override);
                        trackSelector.setParameters(builder.build());
                    }
                }
            }
        }
    }
}
exoplayer 2185 获取所有音轨并切换音轨

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

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