绿幕直播技术 Green Screen Live Streaming
1. 概述
直播(Live Streaming)是把现场音视频实时采集、处理、编码并推送到平台,再由平台分发给大量观众的技术过程。本页聚焦其中一个高频场景:绿幕抠像直播 —— 主播站在绿幕前,软件把绿色背景抠掉(透明化),再在人物下层垫上电脑屏幕画面、PPT、商品页或虚拟场景,形成"人 + 电脑画面同框"的直播效果。
1.1 梳理范围与边界
本页聚焦"绿幕同框直播"这条链路,即 采集 → 抠像 → 合成 → 编码 → 推流 → 平台分发。与之相邻但不在本页展开的:
- 直播连麦的音频与回声消除 —— 见同目录《直播连麦音频与回声消除》。
- 视频剪辑 / 后期制作 —— 见同目录《视频剪辑技术栈》。
- AI 数字人直播 —— 见同目录《数字人》。
- 平台运营、投流、带货玩法 —— 属运营范畴,非技术链路。
1.2 直播技术栈全景
绿幕直播技术的分层:最底层是音视频基础(采集、编码、协议),中层是画面处理引擎(抠像滤镜、场景合成、虚拟摄像机),上层是平台与产品(OBS、直播伴侣、平台推流)。本页自下而上逐层展开。
直播伴侣(Live Streaming Companion):抖音官方推出的 PC 直播工具,深度集成平台的带货、福袋、评论等互动能力,支持 Windows 与 macOS。
虚拟摄像头(Virtual Camera):把一个软件合成好的画面伪装成系统里的一路"摄像头设备",供其它程序(如直播伴侣、Zoom)调用。
2. 直播链路原理
要理解绿幕直播为什么"卡"、为什么"糊"、为什么"绿边",必须先看清一条直播流的完整旅程。
2.1 一条直播流的完整旅程
- 采集(Capture):摄像头把光信号转为数字帧;屏幕采集把显卡输出抓成帧。
- 处理(Process):抠像滤镜去背景、缩放、调色、叠加图层,合成一张最终画面。
- 编码(Encode):把连续画面压缩成 H.264 / H.265 等码流,体积大幅下降。
- 封装 / 推流(Mux / Push):按 RTMP 等协议,把码流实时上传到平台接入服务器。
- 分发(Deliver):平台转码后经 CDN 下发给千万观众,观众端解码播放。
整条链路的延迟通常为 2~8 秒(普通直播),连麦/互动场景会更低。绿幕与虚拟摄像头属于第 2 步,是最影响"画面观感"的一环。
2.2 编码与推流协议
编码器负责压缩,分软件编码(x264,吃 CPU)与硬件编码(NVENC / QuickSync / Apple VideoToolbox,走 GPU / 专用电路)。直播推荐硬件编码,把 CPU 留给抠像与合成。码率(Bitrate)决定画质与带宽:太低则画面糊、文字糊,太高则网络受限。协议上,通用推流几乎都走 RTMP。
码率(Bitrate):单位时间传输的数据量,单位 kbps。1080p 直播一般 4000~8000 kbps,录屏/文字场景需更高。
编码器(Encoder):把原始帧压缩成码流的组件。x264 为软件编码;NVENC(NVIDIA)、QuickSync(Intel)、VideoToolbox(Apple)为硬件编码。
关键帧(Keyframe / I-frame):可独立解码的完整帧。关键帧间隔越大,码率越低但拖动/换台越慢。直播常设 2 秒一个关键帧。
2.3 采集与画面质量基础
画面质量的下限由采集决定,上限由编码与推流决定。绿幕直播常见的"模糊"多数出在采集后的缩放与输出分辨率,而非摄像头本身。
| 要素 | 含义 | 绿幕直播建议 |
|---|---|---|
| 分辨率 Resolution | 画面像素尺寸,如 1920×1080 | 输出 ≥ 1080p,且与画布一致,避免二次缩放 |
| 帧率 FPS | 每秒画面帧数 | 30fps 足够;游戏/高动态才用 60fps |
| 白平衡 White Balance | 纠正色温,决定绿色是否"标准绿" | 固定值(如 5600K),关闭自动白平衡 |
| 曝光 Exposure | 画面明暗 | 关闭自动曝光,手动固定,保证绿幕亮度稳定 |
| 缩放滤镜 Scale Filter | 缩小画面时的插值算法 | 用 Lanczos / 双三次,不要用双线性 |
缩放滤镜(Scale Filter):把源画面放大/缩小时的采样算法。双线性(Bilinear)会模糊细节,双三次(Bicubic)与 Lanczos 更锐利,代价是略高的 GPU 开销。
3. 绿幕抠像原理
3.1 色度键原理
数字画面常用 YUV 表示:Y 是亮度,U/V 是色度(颜色信息)。人眼对亮度敏感、对色度不敏感,因此视频存储时可以降低色度分辨率(色度采样)。抠像正是利用"颜色"这一维度:软件识别出画面中接近纯绿的像素,把它们设为透明,露出下层背景——这就是色度键(Chroma Key)。
YUV / YCbCr:把亮度(Y)与色度(Cb/Cr)分离的颜色空间。抠像算法在色度平面上比较"离纯绿有多近",按距离阈值决定透明度。
溢色(Spill):绿幕反射的绿光落在人物头发、肩膀边缘,形成一层绿色辉光,是抠像后最常见的瑕疵。
3.2 三个关键参数
OBS 的"色度键"滤镜只有三个核心参数,理解它们就掌握了抠像:
| 参数(英文) | 作用 | 调大 / 调小的效果 | OBS 默认 |
|---|---|---|---|
| 相似度 Similarity | 判定"多接近纯绿才算背景"的颜色范围 | 太大:白色/浅色衣物被误抠;太小:绿幕抠不干净留杂斑 | 400 |
| 平滑度 Smoothness | 抠除边缘的羽化/过渡 | 太小:边缘锯齿;太大:边缘模糊、半透明发灰 | 80 |
| 溢出抑制 Key Color Spill Reduction | 压制边缘残留的绿色辉光 | 太大:人物边缘颜色失真(发红/发灰);太小:绿边明显 | 100 |
3.3 硬件布光与选型
再好的软件参数也救不了糟糕的物理环境。抠像的 90% 是"灯光与绿幕"的功夫:
- 绿幕材质:选哑光涤纶/棉混纺,避免反光产生"热点";颜色选标准的色谱绿 / 亮绿,不要草绿、墨绿。
- 平整度:绿幕必须拉平,褶皱会产生阴影与高光,抠像后边缘闪烁、出毛刺。
- 距离:人物与绿幕保持 1.5~2 米,防止绿光反射到头发、肩膀边缘形成溢色。
- 布光:主光照亮人物,背面再加一盏轮廓光把人物与绿幕分开;绿幕本身光线要均匀,杜绝阴影。
- 服装:不要穿绿色、反光或细密纹理的衣服。
- 相机设置:关闭自动曝光 / 自动白平衡 / 自动增益。
4. 行为图(系统做什么)
先看系统"做什么"。以下用例图刻画整体行为,活动图、时序图、状态机图围绕最核心的主流程逐步细化。
4.1 用例图
4.2 活动图 — 从搭建到开播
下图是绿幕同框直播的完整操作流程,也是第 7 章操作手册的骨架。
4.3 时序图 — 画面如何送到平台
同一套 OBS 场景,可以通过虚拟摄像头喂给直播伴侣,也可以直接 RTMP 推流,两条路线的时序如下。
4.4 状态机图 — 直播会话生命周期
5. 结构图(系统由什么组成)
再看"由什么组成"。从部署(放到哪些机器/设备)到组件(软件内部模块),再到包(分层)与类(数据结构)逐层细化。
5.1 部署图 — 主播端软硬件
5.2 组件图 — OBS / 直播伴侣模块
5.3 包图 — 软件分层
5.4 类图 — 场景 / 源 / 滤镜模型
源(Source):场景中的一个素材层,可以是摄像头、窗口/显示器、图片、文本、音频等。
滤镜(Filter):挂在源上的处理单元,如色度键、缩放、色彩校正。多个滤镜按顺序串联作用于该源。
6. 方案选型与链路对比
6.1 三条链路对比
| 链路 | 组成 | 优点 | 缺点 / 适用 |
|---|---|---|---|
| A. 直播伴侣直连 | 只开直播伴侣(自带绿幕) | 最简单;平台互动功能全 | 绿幕参数不可调,抠像易出毛边;适合灯光均匀、要求不高 |
| B. OBS + 虚拟摄像机 | OBS 抠像合成 → 虚拟摄像头 → 直播伴侣 | OBS 精细抠像 + 平台互动功能兼得 | 多一层处理,低配电脑可能加重负载;抖音/视频号通用 |
| C. OBS 直接 RTMP 推流 | OBS 抠像合成 → RTMP → 平台 | 链路最短最稳,无双重编码 | 需手动获取平台推流码;平台互动功能少 |
6.2 抖音:直播伴侣(含 Mac 版)
抖音官方工具是抖音直播伴侣,官网 streamingtool.douyin.com,同时提供 Windows 版与 macOS 13+ 的 Mac 原生版。它自带绿幕抠像、背景素材、屏幕分享等能力,可直接完成"简单绿幕同框"。
- 最省事:只用直播伴侣,添加摄像头 → 开启绿幕抠像 → 叠加屏幕分享素材。
- 最精细:在 OBS 抠像并合成好,启动虚拟摄像机,直播伴侣添加摄像头时选
OBS Virtual Camera。
6.3 视频号:OBS + RTMP 直推
视频号官方工具是视频号助手(网页版 channels.weixin.qq.com,或 PC 端直播助手)。RTMP 推流需在直播管理 → 创建直播后获取"推流地址 + 推流密钥",填入 OBS。注意:账号需完成认证才可推流;推流地址有时效性,每次开播建议重新复制密钥。
6.4 自带绿幕 vs OBS 绿幕
| 对比项 | 直播伴侣自带绿幕 | OBS 色度键 |
|---|---|---|
| 参数可调 | 基本不可调(仅取色器) | 相似度/平滑度/溢出全可调 |
| 抠像精度 | 灯光不均时边缘发绿、半透明 | 可精细收敛,稳定 |
| 多图层合成 | 支持,但更偏素材化 | 支持无限源与滤镜链 |
| 上手难度 | 低 | 中 |
| 结论 | 图省事、灯光好时够用 | 要求高、场景复杂时首选 |
7. 实战操作手册
7.1 场景一:直播伴侣 + OBS 虚拟摄像机(推荐)
目标:OBS 里完成绿幕抠像 + 电脑画面合成,再作为摄像头喂给直播伴侣,保留平台全部互动能力。
- OBS 添加视频采集设备(摄像头),右键 → 滤镜 → 加色度键,按 7.3 调参抠绿。
- 添加窗口采集或显示器采集作为电脑画面,缩放到画面中"显示器"的位置;图层顺序:电脑画面在下,人像在上。
- 屏幕源右键 → 变换 → 缩放滤镜 → Lanczos(见 7.4)。
- OBS 右下角点「启动虚拟摄像机」。
- 打开直播伴侣,添加素材 → 摄像头 → 设备选
OBS Virtual Camera。 - 本地预览确认画面、声音正常,再点平台"开始直播"。
7.2 场景二:OBS 直接 RTMP 推流
- 在平台后台创建直播,复制推流地址与串流密钥。
- OBS → 设置 → 推流 → 服务选「自定义」 → 服务器填推流地址,串流密钥填密钥。
- 设置 → 输出 → 输出模式「高级」→ 编码器选硬件(Mac 用
Apple VideoToolbox,N 卡用NVENC),码率参考 8.1。 - 设置 → 视频:基础(画布)与输出分辨率都设 1080p,帧率 30。
- 点「开始推流」,回平台后台点"开始直播"。
视频号助手 → 直播管理 → 创建直播 → 获取 服务器地址(RTMP URL)→ 填 OBS「服务器」 串流密钥(Stream Key)→ 填 OBS「串流密钥」 注意:推流地址有有效期,关播后失效;每次开播重新复制密钥。
7.3 场景三:绿幕抠像调参流程
- 摄像头属性里关闭自动曝光 / 自动白平衡 / 自动增益。
- 色度键滤镜 → 点取色器,在绿幕中间调区域取色。
- 先把相似度从小往大调,直到绿色背景完全消失、无杂斑。
- 观察人像边缘:有锯齿 → 提高平滑度;有绿边/辉光 → 提高溢出抑制。
- 仍不干净时:拉平绿幕、均化布光、加轮廓光,或叠加一个"亮度键"补暗部发丝。
参数 OBS 默认 常见范围 说明 相似度 400 350~450 太小留杂斑,太大误抠浅色衣物 平滑度 80 60~100 太小锯齿,太大边缘发灰 溢出抑制 100 80~150 太大边缘失真,太小绿边明显
7.4 场景四:屏幕采集清晰度优化
屏幕采集"太模糊"的九成原因是缩放滤镜或输出分辨率,按此顺序排查:
- 缩放滤镜:选中屏幕源 → 右键 → 变换 → 缩放滤镜 → 双三次 / Lanczos(默认双线性,缩小到"显示器"框里必然发糊)。
- 输出分辨率:设置 → 视频,输出分辨率 ≥ 1080p,不要低于屏幕;录屏时输出=画布。
- 码率:设置 → 输出 → 高级 → 录制/推流,1080p 用 10000~20000 kbps;录制可选"近乎无损"。
- 编码器预设:选"质量"而非"性能/低延迟"。
- 若文字太小被缩小,物理上必糊 → 放大屏幕内容再采集,或提高该源分辨率。
7.5 场景五:音频与回声
虚拟摄像头不带音频,且"外放 + 麦克风"极易产生回声。要点:系统输出走耳机;只让一路程序采集麦克风;全链路采样率统一 48 kHz;直播伴侣的回声消除按需开启。完整原理与排查见同目录《直播连麦音频与回声消除》。
8. 参数速查手册
8.1 视频 / 编码参数
| 项目 | 推荐值 | 说明 |
|---|---|---|
| 基础(画布)分辨率 | = 屏幕分辨率 | 如 1920×1080 / 2560×1440 |
| 输出(缩放)分辨率 | 1920×1080 | 不要低于 1080p |
| 帧率 | 30 fps | 绿幕口播 30 足够;游戏 60 |
| 直播码率 | 4000~8000 kbps | 受平台上限约束 |
| 录制码率 | 10000~20000 kbps | 或选"近乎无损" |
| 编码器 | 硬件编码 | Mac: VideoToolbox;N卡: NVENC;Intel: QuickSync |
| 编码预设 | 质量(Quality) | 不要用性能/低延迟 |
| 关键帧间隔 | 2 秒 | 与平台要求一致 |
| 缩放滤镜 | Lanczos / 双三次 | 屏幕源与缩小的人像源都要设 |
8.2 色度键参数
| 参数 | 英文 | OBS 默认 | 调节方向 |
|---|---|---|---|
| 关键颜色类型 | Key Color Type | 绿色 | 用取色器取实际绿幕颜色 |
| 相似度 | Similarity | 400 | 背景不干净↑,误抠浅色衣物↓ |
| 平滑度 | Smoothness | 80 | 边缘锯齿↑,边缘发灰↓ |
| 溢出抑制 | Spill Reduction | 100 | 绿边明显↑,边缘失真↓ |
8.3 RTMP 推流参数
| 平台 | 工具 | 获取推流码 |
|---|---|---|
| 抖音 | 直播伴侣(Win / macOS 13+) | 直播伴侣设置内可查看推流地址 |
| 视频号 | 视频号助手(网页 / PC) | 直播管理 → 创建直播 → 推流地址 + 密钥 |
8.4 常见问题速查
| 现象 | 根因 | 解法 |
|---|---|---|
| 开了虚拟摄像头很卡 | 双重编码 + 预览占资源 | 关 OBS 预览;改硬件编码;降 720p/30;改用 RTMP 直推 |
| 屏幕画面模糊 | 双线性缩放 / 输出分辨率低 / 码率低 | 缩放滤镜改 Lanczos;输出 ≥1080p;码率拉高 |
| 抠像边缘发绿 | 溢色 + 溢出抑制不足 | 加轮廓光、人物远离绿幕;提高溢出抑制 |
| 背景抠不干净留杂斑 | 绿幕褶皱 / 布光不均 | 拉平绿幕、均化布光;重取色、提高相似度 |
| 人像边缘被抠掉 | 相似度太高 / 穿绿衣 | 降相似度;换服装 |
| 直播伴侣找不到摄像头 | 虚拟摄像机未启动 / 授权未允许 | OBS 启动虚拟摄像机;macOS 隐私与安全性允许系统扩展 |
9. 总结
- 链路:采集 → 抠像 → 合成 → 编码 → RTMP 推流 → 平台分发;绿幕同框的观感主要由"抠像"与"缩放/码率"决定。
- 抠像:本质是色度键按颜色透明度;三个参数(相似度/平滑度/溢出抑制)配合布光与绿幕选型,功夫在物理环境。
- 选型:图省事用直播伴侣自带绿幕;要精细用 OBS 抠像,再经虚拟摄像头喂直播伴侣,或直接 RTMP 推流。
- 清晰度:屏幕采集模糊先查"缩放滤镜 → 输出分辨率 → 码率"三件事。
- 音频:虚拟摄像头不传声,注意单路采集与采样率统一,防范回声。