16
Posso assegnare i sottotitoli una volta, ma dopo ho provato a cambiare i sottotitoli. Non accetterà uno nuovo, visualizzerà il precedente ogni volta.Come modificare i sottotitoli in mediaplayer
Sotto il codice che sto usando per cambiare i sottotitoli.
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;
}
Raccomando personalmente di non utilizzare più MediaPlayer per utilizzare ExoPlayer https://github.com/google/ExoPlayer# Sviluppato da Google, questo è il futuro dei video su Android. Supporta anche i sottotitoli. –
Dato che presumibilmente non vuoi riavviare l'intero oggetto come suggerito nella risposta di @ Mibit, hai provato a combinare le fonti di testo del tempo e le hai semplicemente come tracce diverse, invece di risorse separate? – craigts