srt 转ass 方便自己看的

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值