Exoplayer 2,如何检测字幕变化?

时间:2017-11-15 14:23:50

标签: android subtitle exoplayer2.x

我正在使用ExoPlayer 2在Android上开发视频播放器 我正在寻找在SubtitleView(屏幕的上半部分)中检测字幕变化的方法,以在TextView(屏幕的下半部分)中自动滚动字幕。
看起来没有听众这样做 我在SubtitleView中尝试了几个监听器但没有工作 你有什么想法吗?

这是SubtitleView的库 https://google.github.io/ExoPlayer/doc/reference/com/google/android/exoplayer2/ui/SubtitleView.html
这是我正在开发的视频播放器 https://github.com/yuseisako/TangoPlayer
This is video player I am developing

1 个答案:

答案 0 :(得分:0)

我通过遵循简单的代码来解决这个问题。

https://github.com/yuseisako/TangoPlayer/blob/master/app/src/main/java/me/yusei/tangoplayer/VideoPlayerActivity.java#L527

scrollSubtitleRunnable = new Runnable() {

    List<Caption> subtitles = new ArrayList<>(timedTextObject.captions.values());

    @Override
    public void run() {
        if(mMediaPlayer != null && mMediaPlayer.isPlaying()){
            float currentPos = mMediaPlayer.getTime();
            int index = 0;

            for (Caption caption : subtitles) {
                if (currentPos >= caption.start.mseconds - subtitleDelay
                        && currentPos <= caption.end.mseconds - subtitleDelay) {
                    listView.setItemChecked(index,true);
                    int height = listView.getHeight();
                    listView.setSelectionFromTop(index, height/2);
                    setSubtitleTextView(caption);
                    break;
                } else {
                    setSubtitleTextView(null);
                    if(currentPos < caption.end.mseconds - subtitleDelay){
                        break;
                    }
                }
                index++;
            }
        }

        scrollSubtitleHandler.postDelayed(this, 300);
    }
};
scrollSubtitleHandler.post(scrollSubtitleRunnable);