SRT ↔ WebVTT 字幕转换
音视频所有处理都在浏览器本地完成,数据不上传服务器
把 SRT 与 WebVTT 互相转换,顺带调整时间轴。格式转换这一半没什么可说的,真正省事的是另外几件: 整体平移修音画不同步 —— 片源与字幕来自不同压片组时常常差上半秒到两秒,逐条改是不现实的。填负数就是整体提前。 按比例缩放修帧率错配 —— 这是最容易被误当成「平移」的一件事。23.976 fps 的片子配了按 25 fps 做的字幕,偏差越到后面越大:开头对得上,十来分钟后可能差好几秒,而中间某个点是对的。这种必须乘一个系数(25 ÷ 23.976 ≈ 1.0427),平移是修不好的。两者同时存在时顺序也重要,这里是先缩放、再平移。 ⚠️ 平移过量会明确报错,而不是给你一份坏文件。 整轨提前 5 秒时,开头那几条会变成负数时间。把它们钳到 0 会让那几条挤在一起、原样写出去则是 `-00:00:01,000` 这种非法时间戳 —— 播放器对两种情况的反应都是沉默:不报错、不提示,只是那几条再也看不见了。所以这里直接拒绝,并告诉你涉及几条。 两处细节也按规范处理了:SRT 的编号会被重编(它只是位置信息,输入里可能是乱的),而 WebVTT 输出不带编号(那个位置是 cue 标识符而不是序号,写成 `1` `2` 会让人误以为是一回事)。
功能
- SRT ↔ WebVTT 双向转换,格式自动判断
- 整体平移时间轴(秒,可为负)—— 修音画不同步
- 按比例缩放时间轴 —— 修帧率错配,这类偏差越到后面越大,平移修不好
- 两者叠加时先缩放、再平移(顺序反了会把偏移也放大一遍)
- ⚠️ 平移过量会导致负时间时明确报错,并说明涉及几条,不给一份坏文件
- SRT 的编号按顺序重编 —— 它只是位置信息,输入里的可能是乱的
- WebVTT 输出不带编号,但保留原有的 cue 标识符与时间轴设置
- 认 WebVTT 省略小时位的写法(`00:01.000` 是 1 秒而不是 1 小时)
- CRLF、BOM、NOTE / STYLE 注释块都处理
- 文件不上传、不经过任何服务器
使用方法
- 把 SRT 或 WebVTT 贴进输入框 —— 格式会自动判断
- 选输出格式
- 音画不同步就填平移秒数;帧率错配就填缩放系数
- 结果实时出现,复制或下载即可
常见问题
- 字幕整体对不上,该用平移还是缩放?
- 看偏差的规律。从头到尾差同样多 → 用平移,填一个固定的秒数(字幕比画面早出现就是负数,晚出现就是正数)。开头对得上、越到后面越偏 → 用缩放,这是帧率错配:按 23.976 fps 做的字幕配到 25 fps 的片源上要乘 25 ÷ 23.976 ≈ 1.0427,反过来则乘 23.976 ÷ 25 ≈ 0.959。⚠️ 两者常常同时存在(换过片源又换过字幕组),那就两个都填 —— 顺序是先缩放、再平移,反过来的话缩放会把刚加上的偏移又放大一次。
- 为什么平移太多会报错,别的工具都是直接截断?
- 因为截断是静默地弄坏文件。整轨提前 5 秒时,开头那几条的时间会变成负数:钳到 0 会让它们挤在同一时刻一起显示,原样写出去则是 `-00:00:01,000` 这种非法时间戳 —— 播放器对两种情况都不会报错,只是那几条再也看不见了。你会以为字幕「就是这样」,而实际上它被工具改坏了。所以这里拒绝执行并告诉你有几条越界:你可以把平移量调小,或者先删掉开头那几条确实不需要的字幕。
- SRT 的编号会变吗?
- 会,输出时一律按顺序重编成 1、2、3……。原因是 SRT 的编号不携带任何信息,只表示「这是第几条」—— 输入文件里的编号可能是乱的、缺号的(复制粘贴、手工编辑之后很常见),而少数播放器只认前面几条,编号乱了就直接不显示。WebVTT 那边则不写编号:那个位置是 cue 标识符(可以是任意字符串),写成 `1` `2` `3` 虽然合法,却容易让人以为它和 SRT 的编号是一回事。原有标识符会保留。
- 支持 ASS / SSA 吗?
- 不支持。ASS / SSA 不只是「带时间轴的文本」,它带完整的样式系统(字体、描边、定位、卡拉 OK 效果、图层),而 SRT 与 WebVTT 里没有可以承载这些的结构 —— 单向转换必然会丢掉大部分效果。一份丢了样式的字幕看起来「转换成功」了,实际在播放器里位置、字体全不对,而用户要等看片时才发现。所以这里只做 SRT 与 WebVTT 这两个可以无损互转的格式。
相关工具
在线翻译
转换中文、英语、日语、韩语等 12 种语言互译。默认用免费的 MyMemory,无需注册;也可以填自己的 Azure 翻译密钥。文本会发往第三方服务。
文本清洗
文本清洗从日志或表格里复制出来的一列内容:去重行、排序、去空行、去首尾空白、去行号、合并多空格,规则逐条开关。粘贴的内容只在本机处理。
多行合并成一行
文本把多行文本合并成一行:换行可换成空格、逗号、分号或直接删掉,空行与首尾空白先处理。适合粘进单行输入框。
视频转 GIF
音视频把视频的某一段转成 GIF,可调帧率、宽度、颜色数与循环。看着预览选范围,带进度条。视频不上传,浏览器本地完成。
视频截帧
音视频导出视频某一刻的画面,按视频自身分辨率输出 PNG、JPEG 或 WebP。比播放器截图清晰:没有控件、没有屏幕缩放。文件不上传。
音频转 WAV
音视频把 MP3 / M4A / FLAC 等音频转成 WAV,可改采样率(16k 语音、48k 视频)、转单声道、做峰值归一化。全部在浏览器里完成。