2014-12-11 13 views
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; 
     } 
+2

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. –

+0

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

Antwort

1

Werfen Sie einen Blick auf die state diagram. Versuchen Sie zu reset() und release() Ihre mediaPlayer bevor Sie es erneut mit neu zugeordneten Ressourcen initialisieren.

Verwandte Themen