首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于SRT字幕的Java API

用于SRT字幕的Java API
EN

Stack Overflow用户
提问于 2011-02-21 14:15:18
回答 4查看 14K关注 0票数 12

是否有用于SRT字幕的Java API?

EN

回答 4

Stack Overflow用户

发布于 2011-08-02 06:16:36

实际的SRT解析是通过正则表达式执行的,Java能够操纵正则表达式。

实际的regexp是:

代码语言:javascript
复制
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是字幕文本

票数 7
EN

Stack Overflow用户

发布于 2013-02-15 04:39:32

我制作了一个java逻辑,用来解析和读取不同的字幕格式,其中包括流行的srt:你可以在我的GiT存储库中找到遵循麻省理工学院开源许可证(免费使用)的代码:

https://github.com/JDaren/subtitleConverter

您可能只需要基本的类和SRTFormat类,有了它们,您就可以从InputStream中读取srt文件,或者在完成编辑后获得完整的String[]文件。

如果你觉得这很有用,或者我能帮上什么忙,请联系我。

PS:(其他支持的格式,部分或全部是.ASS .SSA .STL .SCC和.XML (来自W3C的TTAF-DFXP,也称为TTML1.0)

编辑:

您可以在www.subtitleconverter.net中找到工作逻辑

票数 6
EN

Stack Overflow用户

发布于 2013-12-28 23:12:09

实际上,支持多行字幕文本的@Panayotis修改后的正则表达式如下所示:

代码语言:javascript
复制
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);

([^\\|]*?)替换为出现为字幕文本概率较小的任何字符。我目前使用的是"|“字符否定规则。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5062914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档