软字幕与硬字幕:内嵌还是烧录?
字幕在视频中的存在方式只有两种,后续的一切工作流程都取决于你面对的是哪一种。软字幕是与视频流并存存储的文本轨——画面帧原封不动,播放器在播放时渲染文字。硬字幕则在编码时被画进像素:文字成为图像的一部分,永远无法分离。软字幕可以关闭、切换语言、重新样式化并提取为文本;硬字幕则在任何能播放该视频的设备上表现完全一致,代价是永久不可逆。一个是画面旁边的数据,另一个就是画面本身。
五个关键事实,奠定全页基础:
• 软字幕 = 混流进容器的文本轨(SRT/VTT/ASS);硬字幕 = 烧进画面的字幕
• 软内嵌是一次重混流(remux)——数秒完成、零质量损失;硬烧录是一次重编码——每一帧都要重新渲染和压缩
• 软字幕只有几 KB;硬字幕不增加体积但无法去除
• 提取只对软字幕有效(它们是文本);烧进画面的文字是像素——那需要 OCR,且质量永远没有保证
• SRT 时间戳格式为 HH:MM:SS,mmm——例如 00:01:22,480 → 00:01:25,120 是一条 2,640 毫秒的字幕
软内嵌:添加一条文本轨
软内嵌把你的字幕文件作为一条额外轨道写进容器,与视频轨、音频轨并列——视频流本身逐字节复制。这正是它数秒完成、零损失的原因:它与更换容器是同一种“重混流”操作(容器基础见 MP4 页)。短板在于支持度:容器必须接受字幕轨(MKV 和 MP4 都可以;但某些设备会无视它们),播放器也必须渲染它们——智能电视和手机自带播放器的表现出了名地不稳定,这正是硬烧录仍然存在的原因。
硬烧录:把文字画进帧
烧录字幕会带着叠加的文字重新渲染视频的每一帧,再重新压缩结果——一次完整的重编码,一切代价随之而来:耗时与编码相当,且每一帧都经历第二道压缩世代。字体被固化进去(不会出现观众设备上“缺字体”的意外),位置和样式分毫不差,播放兼容性是彻底的——因为输出就是一条普通视频。代价是终局性:文字与画面不可分离,改一个错别字就意味着从原始素材重新编码一遍。
SRT、VTT 与 ASS:三种字幕格式
SRT(SubRip)是最通用的最小公约数:编号行、开始 → 结束时间戳、纯文本。所有播放器都能读。VTT(WebVTT)是它的 Web 原生兄弟——思路相同,毫秒分隔符用 . 而非 ,,另加供 HTML5 <track> 元素使用的样式与定位钩子。ASS(Advanced SubStation Alpha)是爱好者的格式:字体、颜色、描边、旋转、逐字动画——风格化动漫字幕背后的格式——这也正是 MKV 能把轨道所需字体附在文件内的原因(见 MKV 页)。烧录 ASS 样式要求字体在编码时可用;软播放则要求在播放时可用。
提取:为什么只对软字幕真正有效
提取软字幕轨就是把文本从容器里解出来——完美还原,因为存储的本来就是文本。从硬烧录视频恢复字幕则是计算机视觉问题(逐帧 OCR、猜测文字区域位置、清除文字背后的背景);对干净、静态的文字效果尚可,遇到风格化字体、运动和噪点就迅速退化。如果以后还需要拿回文本,请保留(或索要)软字幕版本。
常见误区
- “文件自带的字幕永远可以关闭。”只有软字幕可以。如果怎么都关不掉,说明它已烧进像素,任何播放器都无法去除。
- “加字幕就要重新编码视频。”软内嵌是重混流——瞬间完成、无损。只有硬烧录才重新编码。
- “字幕文件会让视频大很多。”软轨是文本:整部电影的字幕文件不过几十到几百 KB,淹没在视频数百 MB 的舍入误差里。
- “硬烧录更保险,所以永远烧录。”它在播放兼容性上更保险,但对此后的编辑、翻译和无障碍访问是永久性的更糟。分发给未知设备时烧录;文本应保持为数据时内嵌。
相关工具:SRT/VTT/ASS 转换器在三种格式间搬运字幕文本,语音转字幕从音频生成字幕文件,视频转 MKV 提供对多字幕轨支持最好的容器,视频转 MP4 讲解重混流基础。