字幕格式转换有五种方法:一、在线网站转换,便捷但需注意隐私;二、桌面软件如Aegisub,适合批量与精细编辑;三、FFmpeg命令行,适用于视频嵌入字幕提取与转换;四、Python脚本自定义,灵活性最高;五、VS Code正则替换,适合简单结构手动重构。

如果您需要将一种字幕格式转换为另一种(例如从SRT转为ASS,或从VTT转为SUB),但缺乏合适的工具或操作经验,则可能是由于不了解主流格式间的结构差异与转换逻辑。以下是完成字幕格式转换的多种可行方法:
一、使用在线转换网站
无需安装软件,通过浏览器上传原始字幕文件,由服务器端解析并重写为指定格式,适用于轻量级、单次转换需求。该方式依赖网络稳定性与站点持续运营,且需注意隐私敏感内容不建议上传。
1、访问支持多格式的在线字幕转换平台,例如“Subtitle Converter”或“ConvertCSV”字幕专用页面。
2、点击“选择文件”按钮,上传本地的SRT、VTT或TXT格式字幕文件。
3、在下拉菜单中选择目标格式,如ASS、SUB、DFXP或TTML。
5、点击“转换”按钮,等待进度条完成,再点击“下载”获取新格式文件。
二、使用桌面软件批量处理
借助功能完整的本地字幕编辑器,可实现格式转换、时间轴校准、样式编辑与多语言合并,适合频繁处理或需精细控制的用户。
1、下载并安装Aegisub(开源免费,支持Windows/macOS/Linux)。
2、启动软件后,选择“文件”→“导入”→“字幕文件”,加载原始SRT或VTT。
3、检查时间轴是否自动对齐,若出现偏移,使用“变换”→“移动时间轴”进行整体修正。
4、点击“文件”→“导出”→“ASS字幕文件”,在弹出窗口中勾选保留样式与字体设置。
5、另存为时,在文件名后缀栏手动输入“.ass”,确保格式正确识别。
三、使用命令行工具FFmpeg直转
FFmpeg内置字幕流提取与封装能力,适用于嵌入视频的字幕轨道转换,或从MKV中剥离并转为独立SRT,不依赖图形界面。
1、确保系统已安装FFmpeg,并在终端或命令提示符中输入ffmpeg -version验证可用性。
2、执行提取命令:ffmpeg -i input.mkv -map 0:s:0 -c:s srt output.srt,其中0:s:0表示第一个字幕流。
3、若需转换已有SRT为WebVTT,运行:ffmpeg -i input.srt -c:s:vtt output.vtt。
4、转换过程中如报错“Invalid data found when processing input”,请先用文本编辑器检查原SRT是否含非标准空行或错误序号。
四、使用Python脚本自定义转换
针对特殊格式(如带注释的LRC、自定义分隔符的TSV字幕),可通过编写轻量脚本实现字段映射与时间戳重写,灵活性最高。
1、安装Python 3.7+环境,并运行pip install pysrt获取字幕解析库。
2、新建convert.py文件,写入代码:读取SRT路径,调用pysrt.open()加载对象。
3、遍历每个字幕项,用sub.start.hours等属性提取HH:MM:SS,mmm格式时间戳。
4、按ASS格式模板拼接Dialogue行,将文字内容写入output.ass,每行结尾添加\N用于换行。
5、保存后在终端执行python convert.py,生成符合ASS规范的输出文件。
五、使用VS Code配合正则表达式手动重构
适用于格式结构简单、数量较少的字幕(如纯时间码+文本的TXT),通过编辑器内置查找替换功能快速重排字段顺序与符号。
1、用VS Code打开原始字幕文件,按Ctrl+H调出替换面板,启用“正则表达式”模式(.*图标)。
2、输入匹配模式:^(\d{2}):(\d{2}):(\d{2}),(\d{3})\s*-->\s*(\d{2}):(\d{2}):(\d{2}),(\d{3})$\n^(.*)$,捕获全部时间与文本。
3、替换为:Dialogue: 0,$1:$2:$3.$4,$5:$6:$7.$8,Default,,0,0,0,,\9,构建ASS基础行。
4、执行全部替换后,手动在文件头部插入ASS必需的格式头信息,包括[Script Info]与[V4+ Styles]区块。
5、保存文件时选择编码为UTF-8 with BOM,否则播放器可能无法识别中文样式。










