16
我可以分配一次字幕,但之後如果我嘗試更改字幕。它不會接受新的,每次都顯示前一個。如何更改媒體播放器中的字幕
下面的代碼我用來改變字幕。
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 https://github.com/google/ExoPlayer#由Google開發,這是Android上視頻的未來。它也支持字幕。 – 2015-11-25 12:41:34
由於你可能不想按照@Mibit的回答建議的那樣重新啓動整個對象,你是否嘗試過將時間文本源合併在一起,並將它們作爲不同的軌道而不是單獨的資源? – craigts 2015-12-02 05:09:25