【发布时间】:2015-02-09 13:13:24
【问题描述】:
我可以分配一次字幕,但之后如果我尝试更改字幕。它不会接受新的,它每次都显示以前的。
下面是我用来更改字幕的代码。
MediaPlayer mediaPlayer;
public void changeSubtitle()
{
//disable subtitle if it has
if(textTrackIndex!=0){
mediaPlayer.deselectTrack(textTrackIndex);
textTrackIndex=0;
mediaPlayer.setOnTimedTextListener(null);
}
//try to asssign new subtitle
mediaPlayer
.addTimedTextSource(
(Environment.getExternalStorageDirectory()
.getPath()
+ "/"+"filename",
MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
int textTrackIndex = findTrackIndexFor(TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT,mediaPlayer.getTrackInfo());
if (textTrackIndex >= 0) {
mediaPlayer.selectTrack(textTrackIndex);
} else {
Log.w(TAG, "Cannot find text track!");
}
mediaPlayer.setOnTimedTextListener(this);
}
private int findTrackIndexFor(int mediaTrackType, TrackInfo[] trackInfo)
{
int index = -1;
for (int i = 0; i < trackInfo.length; i++) {
if (trackInfo[i].getTrackType() == mediaTrackType) {
return i;
}
}
return index;
}
【问题讨论】:
-
我个人建议不要再使用 MediaPlayer 来使用 ExoPlayer github.com/google/ExoPlayer# 由 Google 开发,这是 Android 视频的未来。它也支持字幕。
-
既然您大概不想按照@Mibit 的回答中的建议重新启动整个对象,您是否尝试过将时间文本源合并并将它们作为不同的轨道,而不是单独的资源?
标签: android android-mediaplayer subtitle