如何基于日文逗号拆分长SRT字幕行适配MPV播放?
解决日文SRT长句在MPV中无法自动换行的脚本方案
问题背景
我将整本书转制为SRT字幕配合有声书在MPV播放,由于日文没有单词空格,MPV不会自动给长句换行,只会缩小字体适配单行。尝试Subtitle Edit工具但对日文无效,自行编写脚本时卡在如何在包含多个日文逗号「、」的长句中选择中间位置的逗号进行拆分。
当前代码片段
with open("test.txt", encoding="utf8") as file: for line in file: #print(line) size = len(line) if size > 45: #break sentence in half, using Japanese comma 、
测试用SRT文本
10 00:00:55,640 --> 00:01:09,580 クラスで一番、明るくて、優しくて、運動神経がよくて、しかも、頭もよくて、みんなその子と友達になりたがる。 11 00:01:11,090 --> 00:01:24,500 だけどその子は、たくさんいるクラスメートの中に私がいることに気づいて、その顔にお日様みたいな眩しく、優しい微笑みをふわーっと浮かべる。 12 00:01:24,730 --> 00:01:32,250 私に近づき、「こころちゃん、ひさしぶり!」 13 00:01:32,910 --> 00:01:35,180 と挨拶をする。 14 00:01:37,450 --> 00:01:41,730 周りの子がみんな息を吞む中、「前から知ってるの。 15 00:01:42,000 --> 00:01:42,820 ね?」 16 00:01:43,820 --> 00:01:46,550 と私に目配せをする。
解决方案
核心思路
- 遍历SRT文件时,区分序号、时间轴、空行和字幕文本行,只处理字幕行
- 对长度超标的字幕行,提取所有「、」的索引位置
- 计算中间位置的逗号(取总逗号数的一半位置),以此为分割点拆分句子
- 拆分后保持SRT原有结构,不破坏序号和时间轴
完整脚本代码
def split_japanese_subtitle(input_path, output_path, max_length=45): with open(input_path, 'r', encoding='utf8') as infile, open(output_path, 'w', encoding='utf8') as outfile: for line in infile: line = line.strip('\n') # 保留换行外的原始格式 # 跳过序号、时间轴、空行,直接写入 if line.isdigit() or '-->' in line or line == '': outfile.write(line + '\n') continue # 处理字幕文本行 if len(line) <= max_length: outfile.write(line + '\n') continue # 找到所有日文逗号的位置 comma_positions = [i for i, char in enumerate(line) if char == '、'] if not comma_positions: # 没有逗号的话,直接在字符中间位置拆分 split_idx = len(line) // 2 outfile.write(line[:split_idx] + '\n' + line[split_idx:] + '\n') continue # 找到中间位置的逗号,在逗号后拆分避免逗号单独成行 middle_idx = len(comma_positions) // 2 split_pos = comma_positions[middle_idx] + 1 # 拆分并写入文件 outfile.write(line[:split_pos] + '\n' + line[split_pos:] + '\n') # 调用示例 split_japanese_subtitle("test.txt", "output.srt")
处理效果
以测试文本中的第10条字幕为例,原句拆分后变为:
クラスで一番、明るくて、優しくて、運動神経がよくて、 しかも、頭もよくて、みんなその子と友達になりたがる。
第11条原句拆分后变为:
だけどその子は、たくさんいるクラスメートの中に私がいることに気づいて、 その顔にお日様みたいな眩しく、優しい微笑みをふわーっと浮かべる。
拆分后的字幕在MPV中会自动换行,无需缩小字体,更适合语言学习观看。
内容的提问来源于stack exchange,提问作者Mrsha Solstice
相关产品推荐
相关产品推荐

