【问题标题】:How to change subtitle in mediaplayer如何在媒体播放器中更改字幕
【发布时间】: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


【解决方案1】:

看看state diagram。在使用新关联的资源再次初始化它之前,尝试 reset()release() 你的 mediaPlayer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    相关资源
    最近更新 更多