ExoPlayer 切换内嵌字幕指南:使用 MappingTrackSelector.ParametersBuilder

ExoPlayer 是一个强大的 Android 视频播放器库,它支持多种功能,包括内嵌字幕切换。在 ExoPlayer 中,使用 MappingTrackSelector.ParametersBuildersetSelectionOverride 方法来选择不同的内嵌字幕轨道。

以下是如何切换内嵌字幕的步骤:

  1. 获取 ExoPlayer 的 TrackSelector:
TrackSelector trackSelector = exoPlayer.getTrackSelector();
  1. 获取当前媒体的轨道信息:
MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
  1. 获取内嵌字幕轨道的索引:
int subtitleIndex = getSubtitleIndex(mappedTrackInfo);

getSubtitleIndex 方法用于获取内嵌字幕轨道的索引,你可以根据需要自行实现。

  1. 构建参数并设置选择覆盖:
MappingTrackSelector.ParametersBuilder builder = trackSelector.buildUponParameters();
builder.setSelectionOverride(C.TRACK_TYPE_TEXT, mappedTrackInfo.getTrackGroups(C.TRACK_TYPE_TEXT).indexOf(mappedTrackInfo.getTrackGroups(C.TRACK_TYPE_TEXT).get(subtitleIndex)), null);

setSelectionOverride 方法需要传入三个参数:

  • 轨道类型:C.TRACK_TYPE_TEXT 表示文本轨道,即内嵌字幕。
  • 轨道索引:subtitleIndex 表示要选择的内嵌字幕轨道的索引。
  • 选择器:null 表示使用默认选择器。
  1. 设置新的参数:
trackSelector.setParameters(builder.build());

完整示例代码:

// 获取 ExoPlayer 的 TrackSelector
TrackSelector trackSelector = exoPlayer.getTrackSelector();

// 获取当前媒体的轨道信息
MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();

// 获取内嵌字幕轨道的索引
int subtitleIndex = getSubtitleIndex(mappedTrackInfo);

// 构建参数并设置选择覆盖
MappingTrackSelector.ParametersBuilder builder = trackSelector.buildUponParameters();
builder.setSelectionOverride(C.TRACK_TYPE_TEXT, mappedTrackInfo.getTrackGroups(C.TRACK_TYPE_TEXT).indexOf(mappedTrackInfo.getTrackGroups(C.TRACK_TYPE_TEXT).get(subtitleIndex)), null);

// 设置新的参数
trackSelector.setParameters(builder.build());

通过以上步骤,你就可以轻松地切换 ExoPlayer 的内嵌字幕。你可以根据需要自行实现 getSubtitleIndex 方法来获取不同的内嵌字幕轨道索引。

ExoPlayer 内嵌字幕切换指南:使用 MappingTrackSelector.ParametersBuilder

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

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