Java API для субтитров SRT

Есть ли какой-нибудь Java API для субтитров SRT?

4 ответа

Фактический анализ 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 - текст субтитров.

На самом деле измененное регулярное выражение из @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);

замещать ([^\\|]*?) с любым символом, который имеет меньшую вероятность, чтобы прийти в качестве текста субтитров. Я в настоящее время использовал "|" правило отрицания персонажа.

Я создал Java-логику, с помощью которой можно анализировать и читать различные форматы субтитров, в том числе популярный srt: вы можете найти код, лицензированный по лицензии MIT с открытым исходным кодом (бесплатно для любых целей), в моем репозитории GiT:

https://github.com/JDaren/subtitleConverter

Возможно, вам просто нужны базовые классы и класс SRTFormat, и с этим вы можете читать файлы srt из InputStream или получать полные файлы String[], как только вы закончите их редактирование.

Если вы нашли это полезным или я могу вам чем-нибудь помочь, пожалуйста, свяжитесь со мной.

PS: (другими поддерживаемыми форматами, частично или полностью, являются.ASS .SSA .STL .SCC и.XML (из TTAF-DFXP W3C, также известного как TTML 1.0)

РЕДАКТИРОВАТЬ:

Вы можете найти логику на работе в http://subtitleconverter.net/

Здесь есть еще один базовый (и с открытым исходным кодом) API, который может работать с субтитрами SRT и ASS.

Разбор СТО:

File file = Paths.get("subtitle.srt").toFile();
SRTSub subtitle = new SRTParser().parse(file);
Другие вопросы по тегам