用于SRT字幕的Java API

是否有SRT字幕的Java API?     
已邀请:
实际的SRT解析是通过Java能够操作的正则表达式执行的。 实际的正则表达式是:
protected static final String nl = "\n";
protected static final String sp = "[ \t]*";
Pattern.compile("(?s)(\d+)" + sp + nl + "(\d{1,2}):(\d\d):(\d\d),(\d\d\d)" + sp + "-->"+ sp + "(\d\d):(\d\d):(\d\d),(\d\d\d)" + sp + "(X1:\d.*?)??" + nl + "(.*?)" + nl + nl);
第2,3,4和5组是开始时间 第6,7,8和9组是完成时间 第11组是字幕文本     
我已经生成了一个用于解析和读取不同字幕格式的java逻辑,其中有一些是流行的srt:你可以在我的GiT存储库中找到MIT开源许可证(可以随意使用)许可的代码: https://github.com/JDaren/subtitleConverter 您可能只需要基本类和SRTFormat类,然后您可以从InputStream读取srt文件或在完成编辑后获取完整的String []文件。 如果您确实发现这个有用,或者我可以帮助您,请与我联系。 PS :(其他支持的格式,部分或全部是.ASS .SSA .STL .SCC和.XML(来自W3C的TTAF-DFXP,也称为TTML 1.0) 编辑: 你可以在www.subtitleconverter.net找到工作中的逻辑     
实际上来自
@Panayotis
的修改后的正则表达式支持多行字幕文本是这样的:
protected static final String nl = "\n";
protected static final String sp = "[ \t]*";
Pattern.compile(
                    "(\d+)" + sp + nl
                    + "(\d{1,2}):(\d\d):(\d\d),(\d\d\d)" + sp
                    + "-->" + sp + "(\d\d):(\d\d):(\d\d),(\d\d\d)" + sp
                    + "(X1:\d.*?)??" + nl + "([^\|]*?)" + nl + nl);
([^\|]*?)
替换为任何较不可能作为字幕文本的字符。我目前使用“|”性格否定规则。     
还有另一个基本(和开源)API可以在这里处理SRT和ASS字幕 解析SRT:
File file = Paths.get("subtitle.srt").toFile();
SRTSub subtitle = new SRTParser().parse(file);
    

要回复问题请先登录注册