ExoPlayer 支持多种字幕格式,但需要确保字幕文件的格式与视频文件的格式兼容。对于 MKV 文件,ExoPlayer 可以支持内置字幕,但需要确保字幕文件的格式是 'SRT'、'WebVTT' 或 'TTML'。

如果您的 MKV 文件中包含多个内置字幕,可以通过以下步骤将字幕显示出来:

  1. 确保您的 ExoPlayer 版本是最新的,可以尝试将版本更新到最新的 2.15.1 版本。

  2. 在 ExoPlayer 中设置字幕轨道,可以使用以下代码:

// 获取 ExoPlayer 实例
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context);

// 创建字幕轨道
MediaSource subtitleSource = new SingleSampleMediaSource(Uri.parse(subtitleUri),
        dataSourceFactory, new Format.Builder().setSampleMimeType(MimeTypes.APPLICATION_SUBRIP)
        .build(), C.TIME_UNSET);

// 将字幕轨道添加到 ExoPlayer 中
MergingMediaSource mergedSource = new MergingMediaSource(videoSource, subtitleSource);
player.prepare(mergedSource);

其中,subtitleUri 是字幕文件的 URL 地址,dataSourceFactory 是用于创建 MediaSource 的数据源工厂,videoSource 是视频文件的 MediaSource。

  1. 在 ExoPlayerView 中启用字幕轨道,可以使用以下代码:
// 获取 ExoPlayerView 实例
SimpleExoPlayerView playerView = findViewById(R.id.player_view);

// 启用字幕轨道
playerView.getSubtitleView().setVisibility(View.VISIBLE);
playerView.getSubtitleView().setFixedTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
playerView.getPlayer().setSubtitleEnabled(true);

其中,playerView 是 ExoPlayerView 的实例。

如果您仍然无法将字幕显示出来,请检查字幕文件的格式是否正确,并确保字幕文件与视频文件的名称相同。如果问题仍然存在,请尝试使用其他字幕文件或视频文件进行测试。

Exoplayer2.18.5 播放 MKV 文件字幕不显示?如何解决?

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

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