Exoplayer 2,如何检测字幕变化?
Exoplayer 2, How to detect subtitles change?
我正在使用 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
我通过简单的代码解决了这个问题。
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);
我正在使用 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
我通过简单的代码解决了这个问题。
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);