做视频字幕时,有一个问题很容易被“看起来差不多”掩盖:同一组字幕,在不同分辨率的画面里,观感并不会保持不变。一次调整字幕时,我先注意到,1080P 里字号不算大,换成720P或480P后却明显偏大。字幕内容没有变,字体也没有变,真正变的是画布的尺寸。
当时最直接的反应,是把字号往下调一点,再看画面是不是顺眼。但这种改法只能救当前这一版。下一次如果输出尺寸又换了,原来的经验就要重新来一遍。更麻烦的是,凭肉眼调出来的“差不多”,很难变成别人也能执行的规则。
同一个字号,为什么换画面就失衡
字幕字号本质上是画布上的尺寸。画布变小以后,如果字号仍保持原来的绝对值,文字占画面的比例就会变大。1080×1920的竖屏画面里,76号字可能还留有足够的呼吸空间;当画面降到720×1280或480×854时,文字相对于短边的占比已经不同,视觉重量自然会上升。
这件事表面上是字幕大小问题,实际上是尺寸单位的问题。原流程把76号字当成固定值使用,默认所有视频都会拥有相同的显示尺度。这个默认前提一旦被720P或480P打破,字幕就会从“能读”变成“压住画面”。
如果不处理,后果不只是字幕看起来粗大。它会挤压人物和主体的留白,长句更容易超出安全区域,描边也可能显得过重。最后为了救画面,又会临时改断句、改位置、改字号,几个本来应该分开的变量被混在一起,排查成本越来越高。
字幕的合理大小不是一个固定数字,而是它在画面中所占比例是否稳定。
先选基准,再做比例换算
我选择1080×1920作为基准,是因为这次遇到的原始字号就是在这个尺度下判断出来的。基准字号设为76,基准短边设为1080。之后不再把76当作所有视频都适用的答案,而是把它当成一个参照点。
换算时只看短边,公式是:round(76 × 当前短边 ÷ 1080)。这样做的理由很简单:横屏和竖屏的长边方向不同,但短边更能代表字幕在画面里的相对高度。只要文字是在相同的视觉层级上阅读,就应该尽量保持它与短边的比例,而不是盯着横向宽度硬套数值。
按这个规则,720×1280的短边是720,字号约为51;480×854的短边是480,字号约为34。对应的描边也要一起缩放,不能字号变小了,描边却还保留原来的厚度。实际换算后,720×1280使用字号51、描边2,480×854使用字号34、描边1,视觉上的重量才会比较接近基准画面。
这里最容易误判的是,把字号和描边当成两个互不相关的装饰参数。实际上,描边会改变文字的外轮廓和占用空间。只缩字号不缩描边,文字边缘会显得脏、硬、厚;只缩描边不缩字号,字幕仍然会挤压画面。它们都服务于同一个目标:保持字幕相对画面的比例。
横屏竖屏都先看短边
短边比例还有一个好处,是不必为横屏和竖屏分别记一套完全不同的字号。1920×1080的横屏视频,短边仍然是1080;1080×1920的竖屏视频,短边同样是1080。它们的构图、主体位置和安全区可能不同,但基准字号可以从同一个比例规则开始。
这不意味着换算结果拿来就能交付。短边比例解决的是尺寸尺度,不能替代语义断句和布局判断。横屏里,一句较长的话可能有足够的横向空间;竖屏里,同一句话更容易变成两行甚至三行。字号已经合适,长句仍可能超宽,所以还要用语义断句控制每行长度,而不是把所有问题都推给继续缩小字号。
我没有采用“为了放下一句话,统一把字号再缩小”的做法,是因为那会牺牲所有短句的可读性。更稳妥的顺序是先按分辨率得到字号,再观察句子是否过长;如果过长,优先调整断句和行数,只有在实际版式确实承受不了时,才考虑局部处理。
分辨率换算解决比例,语义断句解决内容长度,二者不能互相代替。
生成前必须知道实际画幅
比例公式成立有一个前提:我必须知道视频最后会以什么尺寸输出。不能因为任务描述里写了“竖屏”或“高清”,就直接假定它一定是1080×1920。原生生成任务要读取任务映射里的画幅信息;如果手里已经有现成视频,则应该先用ffprobe探测实际宽高,再进入字号计算。
我把“先确认分辨率,再设置字号”放在流程前面,是因为顺序本身会影响结果。如果先设置字幕,后面才发现画幅是720P,已经做好的字幕位置、断句和描边可能全部要重新调整。反过来,先得到实际短边,字号和描边可以一次算出,后续只需要处理内容和构图的差异。
这里有一个常见的错误捷径:把1080P的76号字原样套到所有视频尺寸,再靠肉眼补救。它看起来快,实际只是把判断推迟到了最后。肉眼在单个画面上能发现“太大”,却不容易告诉你下一个尺寸应该改到多少,也不能保证不同视频之间的结果一致。
如果视频经过了裁切、转码或平台压缩,文件名和任务描述更不能作为尺寸依据。实际输出的宽高才是可信输入。一个小小的探测步骤,换来的是后面字号、描边和版式判断都有共同起点。
把规则写成可复用的流程
这次之后,我会把字幕适配拆成几个连续判断。第一步,确定最终画面宽高,并取宽高中的较小值作为短边。第二步,确认基准字号和基准描边;本次基准是短边1080、字号76。第三步,按短边比例分别计算字号和描边,并进行四舍五入。第四步,检查长句是否会超出安全区域,用语义断句调整内容。最后,再在目标分辨率下看字幕是否压住人物、是否显得过厚,以及多行字幕之间有没有拥挤。
这个流程的价值不在于记住51和34这两个数字,而在于下次出现新的尺寸时,不需要重新猜。比如当前短边不是720或480,也可以直接代入公式得到新的起点。数字是计算结果,比例才是规则。
我还会把计算结果和检查结果放在同一处记录下来,而不是只留下最终视频。这样做不是为了增加文档工作,而是为了让异常有迹可循:如果某个尺寸下字幕仍然偏大,可以先判断是探测到的画幅不对、换算没有执行,还是字体和行距本身造成了差异。问题被分层以后,下一次修改就不会重新从“要不要把字调小”开始。
一个成熟的字幕流程,不是保存一组看似漂亮的字号,而是保存从画幅到字号的判断链。
当然,比例换算也有边界。不同字体的字面宽度、字重、行距和字形都会影响最终观感;视频内容如果有复杂背景,描边或阴影也可能需要小幅调整。因此,公式应该负责提供稳定起点,最后的可读性检查仍然不可省略。它不是让人完全不看画面,而是让“看画面”不再从一个随意数字开始。
下次我会怎么做
下次遇到字幕在不同清晰度下观感不一致,我会先问一个具体问题:最终画幅到底是多少?如果是生成任务,就从任务映射读取;如果是现成视频,就先探测宽高。没有这个输入,我不会先动字号。
拿到短边以后,我会选定一个已经验证过的高分辨率基准,用短边比例换算字号和描边,再检查横竖屏下的安全区。遇到长句,我先调整语义断句,不把所有超宽问题都归结为字号太大。完成后,我会至少在目标分辨率下复核一次,确认文字仍然清楚、描边没有喧宾夺主,主体也没有被字幕挤住。
这件事让我重新意识到,很多“视觉上不稳定”的问题,根源不是审美忽高忽低,而是流程里缺少了一个明确的输入。字幕不是贴在画面上的固定标签,它是画面尺度的一部分。只要先把尺度说清楚,字号就不必靠记忆,也不必靠临场补救。