

OBS 没有内置的实时字幕能力。跨境直播里通行的做法,是把字幕当成一个「视频源」处理:翻译工具画一个纯绿底的字幕窗口,OBS 抓这个窗口,再用色键把绿色抠成透明。
这个方案的可贵之处在于解耦——任何能画字的程序都能当字幕源,OBS 不需要知道字幕是怎么来的。代价是要处理窗口捕获这一层的一堆细节。
背景色:#00B140 和 #00FF00 的说法要分开看
#00B140 确实是影视行业的绿幕标准色,但它标的是布料和油漆的颜色——为的是在打光和镜头拍摄之后仍然均匀。字幕窗口是软件直接画出来的,没有布料褶皱、没有打光不均、也没有传感器噪声,那套理由在这里并不成立。
真正会咬人的是另一件事:OBS 预设的 Key Color Type「Green」在代码里就是 0x00FF00(见 chroma-key-filter.c 里的 key_type 分支)。也就是说,如果你把字幕窗口的背景设成 #00B140,却在 OBS 里选了预设的 Green,OBS 抠的是另一个颜色。表现是要把 Similarity 拉得很高才能勉强抠干净,然后文字边缘开始发毛——很多人会以为是「绿色选得不好」,其实是两端根本没对上。
所以这一节的结论只有两条,其余都是细节:
- 两端必须是同一个颜色。 用 Custom 填十六进制值,或者用取色器直接吸窗口背景;
- 背景色要和文字颜色在色相上尽可能远。 白字黑边配绿底是安全组合;如果字幕里有绿色元素,就换品红或蓝色做底。
至于取 #00FF00 还是 #00B140:对软件渲染的窗口,两个都能干净抠掉,前者的好处仅仅是和 OBS 预设对得上。
窗口捕获方式只有两种(加一个自动)
Windows 上 OBS 的 Window Capture 源里,Capture Method 下拉框只有三项,官方界面文案里写得很清楚:
- Automatic:让 OBS 自己挑;
- BitBlt (Windows 7 and up):老方法,开销低,但抓不到 GPU 加速渲染的内容,遇到 Electron、Chrome 这类应用经常抓到全黑;
- Windows 10 (1903 and up):这一项就是 Windows Graphics Capture,兼容性最好,能抓硬件加速渲染的窗口。
网上常见「Windows Graphics Capture 是第三种方式」的说法,是把同一项的技术名和界面名当成了两个东西。
关于那圈黄色边框。 用 Windows 10 (1903 and up) 抓窗口时,被抓的窗口周围会出现一圈黄色高亮。这是 Windows 自己画的采集提示,OBS 官方文档说明它来自微软的采集 API、出于安全目的存在。两个要点:它只画在你本机屏幕上,不会进入录制和推流;以及在系统提供了关闭接口的版本上(目前是 Windows 11),OBS 会自动请求关掉它,用户侧不需要做任何事(见 OBS 的 WinRT 采集实现里的 IsBorderRequired)。看到黄框不必排查,它不影响观众。
如果字幕窗口抓出来是黑的,第一件事就是切换捕获方式,而不是怀疑字幕程序有问题。
DPI 缩放是隐形杀手
这是最容易浪费半小时的坑:Windows 的显示缩放(125%、150%)会让窗口捕获拿到的实际像素尺寸和你在屏幕上看到的不一致。表现是字幕在 OBS 里模糊、或者只捕获到窗口的左上角一部分。
最稳的解决办法是把字幕窗口所在显示器的缩放设为 100%,让窗口的逻辑尺寸和像素尺寸一致。Windows 的兼容性设置里还有「替代高 DPI 缩放行为」可以试,但它的效果取决于具体程序怎么声明 DPI 感知,不是每次都管用,别把它当成第一选择。
另一个常被忽略的做法:让字幕窗口按你在 OBS 里最终要显示的像素尺寸去渲染,而不是渲染完再让 OBS 缩放。文字经过一次缩放就会变糊,这一步省下来的清晰度,比事后调任何滤镜都有效。
字幕的可读性比技术实现更重要
技术跑通之后,真正影响效果的是排版决策:
- 两行封顶。 双语字幕天然是两倍长度,超过两行观众根本读不完就换了。
- 原文在上、译文在下,且译文字号可以略大。海外观众看的是译文,原文只是佐证。
- 留驻时间不能只按字数算。 一句很短但信息密度高的话(比如价格、尺码)需要多留一会儿。
- 放在安全区内。 各平台的直播间界面会在底部盖一层评论和按钮,字幕压在下面会被遮住。各平台盖住多少没有公开规格,也会随版本变,唯一可靠的办法是自己开一场,用手机以观众身份进直播间截图,把遮挡区域量出来再定位置。定完用 Transform → Edit Transform 把数值记下来。
延迟的错觉
一个常见的误判:观众反馈「字幕比声音慢」。这时先别急着调翻译工具。
字幕和音频在 OBS 里走的是两条完全独立的路。OBS 的 Sync Offset 在 Advanced Audio Properties 里,是逐个音频源的设置;视频源(包括字幕这个窗口捕获)没有对应的东西。所以两个方向要分开处理:
- 如果字幕早于语音,往前对齐的手段在视频侧:OBS 的滤镜列表里有一个 Render Delay,官方的说明就是「延迟源的渲染,用于处理音画同步」(见 OBS 滤镜指南)。给字幕源加上它,按毫秒往后推。
- 如果字幕晚于语音,Render Delay 帮不上忙——它只能往后推,不能往前拉。这时要查的是字幕程序自己的出字速度。注意 Window Capture 源没有帧率设置,画面刷新率由 Settings → Video 里的 FPS 决定,去源属性里找「捕获帧率」是找不到的。
调之前先录一段本地文件逐帧看,靠肉眼在直播中判断谁快谁慢很不可靠。
操作步骤
- 1
打开翻译工具的绿幕字幕窗口
在翻译工具里开启独立的字幕窗口,背景设为一个纯色,字体白色加黑描边,保证在任何画面上都可读。记下这个背景色的十六进制值,下一步要用它。
- 2
在 OBS 添加窗口捕获
添加 Window Capture 源,选中字幕窗口。Capture Method 只有 Automatic、BitBlt (Windows 7 and up)、Windows 10 (1903 and up) 三项,优先选最后一项,抓不到时再退回 BitBlt。勾上 Client Area 可以只抓窗口内容、去掉标题栏。
- 3
添加色键滤镜
右键该源加滤镜。字幕窗口是软件画出来的纯色底,OBS 官方把 Color Key 归为「用于图形与窗口」的滤镜,Chroma Key 才是给绿幕和实拍画面用的,两个都可以试,先试 Color Key。Key Color Type 选 Custom 并填入上一步记下的颜色,不要直接用预设的 Green。
- 4
微调溢出与边缘
先只调 Similarity,从默认值小幅上调到背景色完全消失。文字边缘仍然带底色时,调高 Key Color Spill Reduction(这个值越高、去除越激进)。如果文字本身开始被吃掉,说明 Similarity 调过头,回退几格。
- 5
锁定尺寸与位置
把字幕源调整到画面下方安全区内,然后在 OBS 里对该源右键选「变换 → 编辑变换」记下数值,防止误拖动。

