You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ExoPlayer中开启视频文件的内嵌字幕?

ExoPlayer 开启内嵌字幕的方法

内嵌字幕不需要像外部字幕那样手动配置文件路径,ExoPlayer会自动解析视频文件中包含的内嵌字幕轨道。你可以通过以下方式开启:

1. 自动加载默认字幕轨道

如果视频文件中的内嵌字幕被标记为默认轨道,ExoPlayer在加载媒体时会自动启用并显示该字幕,不需要额外代码。

2. 手动指定要开启的字幕轨道

如果内嵌字幕不是默认轨道,你可以通过代码主动选择特定的字幕轨道:

首先监听播放器的轨道变化事件,找到目标字幕轨道后设置选中:

exoPlayer.addListener(object : Player.Listener {
    override fun onTracksChanged(tracks: Tracks) {
        // 筛选出所有字幕类型的轨道组
        val subtitleTrackGroups = tracks.groups.filter { it.type == C.TRACK_TYPE_TEXT }
        if (subtitleTrackGroups.isNotEmpty()) {
            // 这里选择第一个字幕轨道(可根据需求修改索引)
            val targetTrackIndex = subtitleTrackGroups[0].indexInTracks
            // 构建轨道选择参数,启用字幕并选中目标轨道
            val trackParams = exoPlayer.trackSelectionParameters
                .buildUpon()
                .setTrackTypeDisabled(C.TRACK_TYPE_TEXT, false)
                .setSelectedTextTrackIndex(targetTrackIndex)
                .build()
            exoPlayer.trackSelectionParameters = trackParams
        }
    }
})

3. 让用户手动切换字幕轨道

如果你想让用户自己选择字幕,可以直接使用ExoPlayer自带的PlayerView控制器,它默认支持字幕切换功能:

在XML布局中启用字幕按钮:

<com.google.android.exoplayer2.ui.PlayerView
    android:id="@+id/playerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:show_subtitle_button="true" />

用户点击控制器上的字幕按钮后,就能看到所有内嵌字幕选项,自行选择开启。

注意事项

  • ExoPlayer支持常见的内嵌字幕格式(如ASS、SSA、VTT、SRT、MP4内置的tx3g等),如果字幕无法识别,可能是格式不兼容,需要检查视频文件的字幕格式,或添加对应的扩展库支持。

内容的提问来源于stack exchange,提问作者VanechikSpace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:52:14