AndroidMediaPlayer的addTimedTextSource方法仅在字幕'开始”时通知,而不在字幕'结束”时通知。
创始人
2024-10-09 02:01:04
0

通过在字幕文件中添加额外的特殊字幕来解决问题。这些字幕将在添加到媒体播放器后一段时间后触发,该时间等于该字幕的持续时间。

以下是包含代码示例的解决方案:

private void addSpecialSubtitle(String subtitlePath) {
    try {
        InputStream is = new FileInputStream(subtitlePath);
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        String line;
        int index = 1;
        while ((line = reader.readLine()) != null) {
            if (line.contains("-->")) { // check for time portion of subtitle
                String[] parts = line.split("-->");
                long startTime = parseSRTTime(parts[0].trim());
                long endTime = parseSRTTime(parts[1].trim());
                if (endTime > startTime) { // only add special subtitle if it has a duration
                    MediaPlayer mediaPlayer = new MediaPlayer();
                    mediaPlayer.setDataSource(subtitlePath);
                    mediaPlayer.setOnTimedTextListener(new MediaPlayer.OnTimedTextListener() {
                        @Override
                        public void onTimedText(MediaPlayer mp, TimedText text) {
                            if (text != null && text.getText().equals("SPECIAL_SUBTITLE_" + index)) {
                                // handle end of special subtitle
                            }
                        }
                    });
                    mediaPlayer.prepare();
                    mediaPlayer.addTimedTextSource(subtitlePath, MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
                    mediaPlayer.selectTrack(mediaPlayer.getTrackInfo()[0].getTrackId());
                    mediaPlayer.seekTo((int) startTime);
                    mediaPlayer.start();
                    mp.addTimedText("SPECIAL_SUBTITLE_" + index, endTime - startTime, startTime);
                    index++;
                }
            }
        }
    } catch (Exception e) {
        Log.e(TAG, "addSpecialSubtitle: ", e);
    }
}

private long parseSRTTime(String srtTime) {
    String[] parts = srtTime.split(":");
    long hours = Long.parseLong(parts[0].trim());
    long minutes = Long.parseLong(parts[1].trim());
    String[] secondsParts =

相关内容

热门资讯

不少玩家反映!衢州都莱辅助器免... 不少玩家反映!衢州都莱辅助器免费下载!好像确实有开挂辅助挂(有挂教学)-哔哩哔哩1、用户打开应用后不...
教学辅助挂!透视辅助工具!原来... 教学辅助挂!透视辅助工具!原来真的有开挂辅助app(有挂分析)-哔哩哔哩1、透视辅助工具免费辅助多个...
做出回应!仙桃晃晃辅助器!其实... 做出回应!仙桃晃晃辅助器!其实是真的有开挂辅助教程(新版有挂)-哔哩哔哩1、许多玩家不知道仙桃晃晃辅...
值得注意的是!决战卡五星最新辅... 值得注意的是!决战卡五星最新辅助!真是确实有开挂辅助方法(证实有挂)-哔哩哔哩1、值得注意的是!决战...
黑科技攻略!浙江宝宝游戏辅助器... 黑科技攻略!浙江宝宝游戏辅助器是真的嘛!真是真的是有开挂辅助脚本(有挂秘诀)-哔哩哔哩1、打开软件启...
刚刚!余干五十k攻略!切实确实... 刚刚!余干五十k攻略!切实确实有开挂辅助教程(竟然有挂)-哔哩哔哩1、超多福利:超高返利,海量正版游...
2026版攻略!川南九九辅助!... 2026版攻略!川南九九辅助!一直确实有开挂辅助攻略(有挂解密)-哔哩哔哩1)川南九九辅助免费钻石:...
此事迅速冲上热搜!哥哥打大a有... 此事迅速冲上热搜!哥哥打大a有没有辅助!一贯是真的有开挂辅助脚本(有挂秘籍)-哔哩哔哩1、该软件可以...
2026版规律!约局吧透视辅助... 2026版规律!约局吧透视辅助ios下载!一直真的有开挂辅助技巧(今日头条)-哔哩哔哩约局吧透视辅助...
2026版辅助挂!胡乐辅助脚本... 2026版辅助挂!胡乐辅助脚本是真的假的!切实真的是有开挂辅助app(有挂透视)-哔哩哔哩进入游戏-...