12

SRT 字幕用の Java API はありますか?

4

4 に答える 4

7

実際の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は字幕テキストです

于 2011-08-01T22:16:36.170 に答える
6

さまざまな字幕形式を解析して読み取るための Java ロジックを作成しました。その中には人気のある srt があります。MIT オープン ソース ライセンス (何にでも自由に使用できる) の下でライセンスされたコードは、私の GiT リポジトリにあります。

https://github.com/JDaren/subtitleConverter

基本的なクラスと SRTFormat クラスだけが必要な場合があります。これにより、InputStream から srt ファイルを読み取ったり、編集が完了したら完全な String[] ファイルを取得したりできます。

これが役に立つと思うか、何かお手伝いできることがあれば、私に連絡してください。

PS: (部分的または完全にサポートされているその他の形式は、.ASS .SSA .STL .SCC および .XML (TTML 1.0 とも呼ばれる W3C の TTAF-DFXP から)

編集:

www.subtitleconverter.netで動作中のロジックを見つけることができます

于 2013-02-14T20:39:31.750 に答える
6

実際、@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);

([^\\|]*?)字幕テキストになる可能性が低い任意の文字に置き換えます。現在「|」を使用しています 文字否定規則。

于 2013-12-28T15:12:09.230 に答える
3

SRT と ASS サブタイトルを処理できる別の基本的な (そしてオープン ソースの) API がここにあります

SRT の解析:

File file = Paths.get("subtitle.srt").toFile();
SRTSub subtitle = new SRTParser().parse(file);
于 2016-11-19T15:21:53.280 に答える