Android ExoPlayer 字幕:获取和设置

ExoPlayer 提供了一个 SubtitleView 类,用于显示字幕。以下介绍如何获取和设置字幕:

获取字幕

  1. 在您的布局文件中添加一个 SubtitleView
<com.google.android.exoplayer2.ui.SubtitleView
    android:id="@+id/subtitle_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
  1. 在您的 ActivityFragment 中,获取 SubtitleView 并设置它的播放器:
// 获取 SubtitleView
SubtitleView subtitleView = findViewById(R.id.subtitle_view);

// 设置播放器
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(this);
player.setSubtitleView(subtitleView);
  1. 在您的 ExoPlayer 实例中,设置字幕轨道:
// 创建一个字幕轨道
MediaSource subtitleSource = new SingleSampleMediaSource(Uri.parse("file:///android_asset/subtitle.srt"),
    new DefaultDataSourceFactory(this, "ExoPlayer"), Format.createTextSampleFormat(null, MimeTypes.APPLICATION_SUBRIP, null, Format.NO_VALUE, Format.NO_VALUE, "en", null), C.TIME_UNSET);

// 将字幕轨道添加到播放器
player.prepare(new MergingMediaSource(mediaSource, subtitleSource), true, false);

设置字幕

  1. 在您的 ExoPlayer 实例中,添加一个字幕轨道:
// 创建一个字幕轨道
MediaSource subtitleSource = new SingleSampleMediaSource(Uri.parse("file:///android_asset/subtitle.srt"),
    new DefaultDataSourceFactory(this, "ExoPlayer"), Format.createTextSampleFormat(null, MimeTypes.APPLICATION_SUBRIP, null, Format.NO_VALUE, Format.NO_VALUE, "en", null), C.TIME_UNSET);

// 将字幕轨道添加到播放器
player.prepare(new MergingMediaSource(mediaSource, subtitleSource), true, false);
  1. 在您的布局文件中添加一个 Button,用于切换字幕:
<Button
    android:id="@+id/subtitle_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Subtitle" />
  1. 在您的 ActivityFragment 中,获取 Button 并添加一个点击事件:
// 获取 Button
Button subtitleButton = findViewById(R.id.subtitle_button);

// 添加点击事件
subtitleButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 切换字幕
        player.nextSubtitle();
    }
});

注意:

  • 请确保您的字幕文件(例如 subtitle.srt)位于 assets 文件夹中。
  • nextSubtitle() 方法将切换到下一个可用的字幕轨道。
  • 您可以根据您的需求调整代码。
Android ExoPlayer 字幕:获取和设置

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

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