private static void exchange(String srtFilePath,String assFilePath){
try (BufferedReader reader = new BufferedReader(new FileReader(srtFilePath));
BufferedWriter writer = new BufferedWriter(new FileWriter(assFilePath))) {
writer.write("[Script Info]\n");
writer.write("Title: Converted from SRT\n");
writer.write("ScriptType: v4.00+\n");
writer.write("WrapStyle: 0\n");
writer.write("PlayResX: 1280\n");
writer.write("PlayResY: 720\n");
writer.write("\n");
writer.write("[V4+ Styles]\n");
writer.write("Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding\n");
writer.write("Style: Default,微软雅黑,50,&H005aff65,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,2.0,0,1,2.0,0,2,10,10,22,1\n");
writer.write("Style: Secondary,微软雅黑,38,&H00ffffff,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0.4,0,1,2.0,0,2,10,10,22,1\n");
writer.write("\n");
writer.write("[Events]\n");
writer.write("Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\n");
String line;
while ((line = reader.readLine()) != null) {
if (line.trim().isEmpty()) {
continue;
}
try {
int srtIndex = Integer.parseInt(line.trim());
String time = reader.readLine().trim();
String[] timeParts = time.split(" --> ");
String startTime = srtToAssTime(timeParts[0]);
String endTime = srtToAssTime(timeParts[1]);
String text = reader.readLine().trim();
if(text.contains("[")&&text.contains("]")){
continue;
}
writer.write("Dialogue: 0," + startTime + "," + endTime + ",Default,,0,0,0,, " + text + "\n");
} catch (NumberFormatException e) {
// 可能是多行字幕文本,继续读取下一行
continue;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static String srtToAssTime(String srtTime) {
String[] parts = srtTime.split(":");
int hours = Integer.parseInt(parts[0]);
int minutes = Integer.parseInt(parts[1]);
String[] secondsParts = parts[2].split(",");
int seconds = Integer.parseInt(secondsParts[0]);
int milliseconds = Integer.parseInt(secondsParts[1]);
return String.format("%01d:%02d:%02d.%02d", hours, minutes, seconds, milliseconds);
}
srt 转ass 方便自己看的
最新推荐文章于 2025-09-13 02:12:58 发布
1万+

被折叠的 条评论
为什么被折叠?



