16
Ich kann Untertitel einmal zuweisen, aber danach, wenn ich versuchte, Untertitel zu ändern. Es wird kein neues akzeptiert, es wird jedes Mal vorher angezeigt.Wie ändere ich Untertitel in Mediaplayer
Unter Code verwende ich Untertitel zu ändern.
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;
}
Ich empfehle, den MediaPlayer nicht mehr zu verwenden, um ExoPlayer zu verwenden https://github.com/google/ExoPlayer# Entwickelt von Google, das ist die Zukunft des Videos auf Android. Es unterstützt auch Untertitel. –
Da Sie vermutlich nicht das gesamte Objekt neu starten möchten, wie in @ Mibits Antwort vorgeschlagen, haben Sie versucht, die Zeittextquellen zu kombinieren und sie nur als unterschiedliche Spuren anstelle von separaten Ressourcen zu verwenden? – craigts