ExoPlayer2 TrackSelection:选择音频/视频轨道
在 ExoPlayer2 中,可以使用 TrackSelection 来设置选中的音频/视频轨道。以下是一个示例代码:
// 获取 ExoPlayer 实例
ExoPlayer exoPlayer = ExoPlayerFactory.newSimpleInstance(context);
// 获取 TrackSelector 实例
DefaultTrackSelector trackSelector = new DefaultTrackSelector();
// 设置 TrackSelector 到 ExoPlayer 中
exoPlayer.setTrackSelector(trackSelector);
// 获取当前播放的 TrackGroups(音频/视频轨道组)
TrackGroupArray trackGroups = trackSelector.getCurrentMappedTrackInfo().getTrackGroups(0);
// 获取当前选中的 TrackSelections(音频/视频轨道选择)
TrackSelectionArray trackSelections = trackSelector.getCurrentTrackSelections();
// 选择一个轨道
int groupIndex = 0; // 音频/视频轨道组索引
int trackIndex = 0; // 轨道索引
trackSelector.setParameters(trackSelector.buildUponParameters()
.setSelectionOverride(groupIndex, trackGroups.get(groupIndex), new FixedTrackSelection.Factory(trackIndex))
);
// 取消选择一个轨道
trackSelector.setParameters(trackSelector.buildUponParameters()
.setSelectionOverride(groupIndex, trackGroups.get(groupIndex), null)
);
在上述代码中,trackSelector 是 ExoPlayer 的 TrackSelector,可以使用它来选择音频/视频轨道。首先,我们使用 getCurrentMappedTrackInfo() 方法获取当前的 TrackInfo,然后使用 getTrackGroups() 方法获取音频/视频轨道组,使用 getCurrentTrackSelections() 方法获取当前选中的轨道。接下来,我们可以使用 setParameters() 方法来选择或取消选择轨道。在选择轨道时,我们需要指定音频/视频轨道组索引、轨道组中的轨道索引和一个 FixedTrackSelection 对象,它表示选择固定的轨道。在取消选择轨道时,我们可以将 FixedTrackSelection 对象设置为 null。
原文地址: https://www.cveoy.top/t/topic/jHnT 著作权归作者所有。请勿转载和采集!