一句话定义:SRT(SubRip Subtitle)和 ASS(Advanced SubStation Alpha)都是纯文本字幕文件格式,用「一段时间码 + 一段文字」描述画面下方该出现什么;区别在于 SRT 只管台词,ASS 还管长相。
打个比方:SRT 像一份电子剧本,每行写着「几分几秒到几分几秒,谁说了什么」。ASS 则像舞台总谱,除了台词,还规定了字体、字号、颜色、描边、出现在屏幕哪个角落、要不要淡入淡出。
两者的骨架差异:
| SRT | ASS | |
|---|---|---|
| 时间写法 | 00:00:01,250 --> 00:00:03,800,逗号 + 毫秒 | 0:00:01.25,0:00:03.80,点号 + 厘秒 |
| 样式信息 | 没有,字号颜色全看播放器心情 | 集中在 [V4+ Styles] 段落里定义,逐句可用 \pos、\fs、\c 等覆盖标签改写 |
| 定位与特效 | 基本不支持 | 支持定位、旋转、卡拉 OK 变色等 |
| 兼容性 | 几乎什么播放器都认 | 常见于播放器与压制流程,部分简易工具不认 |
时间码为什么总差几帧。 第一层原因是精度和取整:ASS 只保留到厘秒(10 毫秒),SRT 到毫秒,而编辑器的「对齐到帧」功能会把时间吸附到最近的帧边界。25 帧每秒时一帧是 40 毫秒,吸附一次就偏半帧左右,来回转换几次就能看出来。第二层原因是帧率本身不是整数:常见的 23.976、29.97 都是分数帧率(如 24000/1001)。如果把 23.976 当成 24 来换算,一小时会漂大约 3.6 秒,也就是快一百帧。第三层是丢帧时间码(drop-frame):29.97 系为了追上真实墙钟时间,会定期跳过一些时间码编号,看起来「跳号」其实是正常的。第四层是工程侧偏移:音视频起始点、转码延迟、整体偏移量没一起搬过去,都会表现为「字幕整体早半秒」。
对从业者的实际意义。 用模型批量生成字幕时,先确认帧率和时间基准,沟通时用「秒」而不是「第几帧」,否则稿子对不上时间线。生成完别只看文本,抽开头、中段、结尾各播一遍,检查是否有累计漂移;改样式时优先在 ASS 的样式段改,而不是逐行硬覆盖。只想要台词、要最大兼容,就用 SRT;要花字、双语排版、歌词效果,再上 ASS。各播放器与工具对格式边角的支持略有差异,具体行为以你所用的工具与规范页面为准。
