exoplayer 2185 获取所有音轨并切换音轨
要获取所有音轨,可以使用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());
}
}
}
}
}
}
原文地址: https://www.cveoy.top/t/topic/bW7J 著作权归作者所有。请勿转载和采集!