一、什么时候需要把VTT转成SRT?
VTT是网页上用的标准字幕,但你一旦把视频下载到本地,情况就不一样了。
📥 从网上下载的字幕
YouTube、B站、Coursera这些网站,后台用的是VTT。如果你用插件下载字幕,下来的很可能就是.vtt文件。但你的本地播放器(比如PotPlayer、VLC)虽然能打开VTT,有时候会出现乱码或者时间轴错位。转成SRT最保险。
🎬 导入剪辑软件
Premiere、剪映、Final Cut Pro这些软件,对SRT支持最好。VTT虽然也能导入,但经常出现样式丢失或者时间轴识别错误的情况。先转成SRT再导入,省得折腾。
📱 发给别人
你做好一个字幕文件,要发给朋友或者同事。你不知道对方用什么播放器,给SRT是最安全的选择。给VTT的话,对方可能打不开,或者打开了显示不正常。
反过来,什么时候需要把SRT转成VTT?场景相对少一些,主要是在网页里嵌入视频时需要。比如你用HTML5的<video>标签,字幕必须用VTT格式,SRT浏览器不认。
二、方法一:在线工具,最快最省事
如果你只是偶尔转一两个文件,用在线工具最方便。打开网页,上传文件,点一下转换,下载,完事。
推荐这几个网站:
- Subtitle Tools (subtitletools.com) - 界面干净,没有广告,支持批量转换,文件大小限制宽松。这是我最常用的。
- Convertio (convertio.co) - 功能全面,但免费版每天只能转10分钟的视频字幕量。偶尔用用够。
- Online-Convert (online-convert.com) - 老牌网站,稳定但广告多,需要关掉弹窗。
- Happy Scribe - 转换质量不错,但需要注册账号,稍微麻烦一点。
操作步骤:
- 打开网站,找到VTT to SRT或SRT to VTT的转换入口。
- 上传你的字幕文件。
- 点击转换按钮,等待几秒钟。
- 下载转换好的文件。
三、方法二:用字幕编辑软件,功能最强
如果你经常做字幕,或者对转换精度有要求,用专业软件最靠谱。推荐两个:
Subtitle Edit(免费,Windows)
这是目前最好用的字幕编辑软件之一,开源免费,支持几十种字幕格式互转。
- 下载安装Subtitle Edit(官网:nikse.dk/subtitleedit)
- 打开软件,把VTT或SRT文件拖进去。
- 点“文件” → “导出” → 选择目标格式(SRT或WebVTT)。
- 设置一下编码(推荐UTF-8),点确定,保存。
Subtitle Edit的优点是:转换时你可以预览时间轴,如果发现偏移可以手动调整。而且它支持批量转换,一次处理几十个文件。
Aegisub(免费,Windows/Mac/Linux)
字幕组常用的工具,功能很强大,但界面有点老。
- 打开Aegisub,把文件拖进去。
- 点“文件” → “导出字幕”。
- 在格式下拉菜单里选“SubRip(.srt)”或“WebVTT(.vtt)”。
- 点确定,保存。
Aegisub的优点是跨平台,Mac和Linux也能用。缺点是转换VTT到SRT时,VTT里的注释和样式信息会丢失,Aegisub不会给你提示,直接丢掉了。
🎯 选哪个?
Windows用户首选Subtitle Edit,功能全且更新快。Mac用户用Aegisub或者在线工具。Linux用户也是Aegisub。
四、方法三:手动改,适合应急或少量文件
如果你手边没有网络,也装不了软件,可以用记事本手动改。VTT和SRT的区别其实很小,改起来不复杂。
VTT转SRT(手动步骤)
- 用记事本打开.vtt文件。
- 删掉第一行的“WEBVTT”(如果有注释和空行,也一起删掉)。
- 把所有的点号(.)替换成逗号(,)(时间轴里的毫秒分隔符)。
- 删掉所有以“NOTE”开头的行(这些是注释,不会显示)。
- 删掉时间轴后面跟着的样式定义,比如
line:10% position:20%这些东西。 - 保存文件,把后缀名从.vtt改成.srt。
举个例子,原来的VTT文件:
WEBVTT NOTE 这是注释 00:00:15.200 --> 00:00:18.600 line:10% 你吃饭了吗?手动改完之后:
1 00:00:15,200 --> 00:00:18,600 你吃饭了吗?注意看,序号“1”需要自己加上去,SRT每段字幕必须有序号。如果你有几十句字幕,手动加序号会很累。所以手动改只适合字幕条数很少的情况(比如10句以内)。
SRT转VTT(手动步骤)
- 用记事本打开.srt文件。
- 在文件最开头加上一行“WEBVTT”,然后空一行。
- 把所有的逗号(,)替换成点号(.)。
- 删掉所有的序号行(就是每段字幕开头的1、2、3这些数字)。
- 保存文件,把后缀名从.srt改成.vtt。
SRT转VTT稍微麻烦一点,因为要删掉所有序号。如果你的字幕有几百句,手动删会很痛苦。建议这种情况还是用在线工具或者软件。
五、进阶:用Python脚本批量转换
如果你有大量文件需要转换(比如几百个字幕),用手动或者在线工具都不现实。写个简单的脚本,一次跑完。
下面这个脚本可以批量把VTT转成SRT。你只需要把脚本和.vtt文件放在同一个文件夹里,运行一下就行。
import re import os def vtt_to_srt(vtt_content): lines = vtt_content.strip().split('\n') srt_lines = [] index = 1 skip_until_empty = False for line in lines: # 跳过WEBVTT头 if line.strip() == 'WEBVTT': continue # 跳过NOTE注释 if line.strip().startswith('NOTE'): continue # 跳过样式定义行 if re.search(r'line:\d+%|position:\d+%|align:', line): continue # 处理时间行 if '-->' in line: # 去掉时间行后面的样式定义 time_part = line.split('-->')[0].strip() time_part2 = line.split('-->')[1].strip().split(' ')[0] # 把点号换成逗号 time_part = time_part.replace('.', ',') time_part2 = time_part2.replace('.', ',') srt_lines.append(str(index)) srt_lines.append(f"{time_part} --> {time_part2}") index += 1 # 处理空行 elif line.strip() == '': srt_lines.append('') # 处理字幕文本 else: srt_lines.append(line) return '\n'.join(srt_lines) # 批量转换文件夹里所有.vtt文件 input_folder = './' for filename in os.listdir(input_folder): if filename.endswith('.vtt'): with open(filename, 'r', encoding='utf-8') as f: content = f.read() srt_content = vtt_to_srt(content) output_name = filename.replace('.vtt', '.srt') with open(output_name, 'w', encoding='utf-8') as f: f.write(srt_content) print(f'转换完成:{filename} -> {output_name}')使用方法:
- 安装Python(如果电脑上没有的话)。
- 把上面的代码复制到一个文本文件里,保存为
convert.py。 - 把这个
.py文件和你的.vtt文件放在同一个文件夹。 - 打开命令行,进入这个文件夹,运行
python convert.py。 - 等几秒钟,所有.vtt文件旁边就会生成对应的.srt文件。
📌 注意
这个脚本只处理了最基础的情况。如果你的VTT文件里有复杂的样式、多轨道、或者非标准的时间格式,脚本可能会出错。建议先用一两个文件测试一下,确认没问题再批量跑。
六、转换过程中常见的坑
🕐 时间轴错位
有时候转换完打开,字幕和声音对不上。这种情况通常是源文件的时间格式不规范导致的。比如VTT里用了00:00:15.2(毫秒只有一位),转成SRT的00:00:15,200就会变成200毫秒,偏差很大。
解决办法:用Subtitle Edit打开,手动调整时间轴,或者用它的“修复时间格式”功能。
🔤 中文乱码
转完之后打开,看到的是一堆问号或者乱码。这是因为编码不对。老一点的SRT文件是ANSI编码(GB2312),VTT标准要求UTF-8。
解决办法:转换时强制选UTF-8编码。如果已经乱码了,用记事本打开,点“另存为”,下面编码选UTF-8,覆盖保存。
🔢 字幕序号乱了
转换后的SRT文件,序号可能是1、1、2、2这样重复的,或者跳号。这是因为转换工具解析VTT时,把空行识别错了。
解决办法:用Subtitle Edit打开,点“工具” → “重新编号”,一键修复。
七、总结
VTT和SRT互转,本质上就是处理三个东西:第一行的WEBVTT、毫秒分隔符(点号还是逗号)、以及序号。搞清楚了这三点,你甚至可以用记事本手动改。
但实际工作中,建议按这个顺序选方法:
- 偶尔转一两个文件 → 用在线工具(Subtitle Tools最快)。
- 经常做字幕或者要求精度高 → 用Subtitle Edit(Windows)或Aegisub(Mac)。
- 文件涉及隐私不想上传 → 用本地软件或者手动改。
- 有几百个文件要批量转 → 写Python脚本,一劳永逸。