略懂OBS——强大的推流录制工具
OBS (Open Broadcaster Software) 是一款开源、免费、跨平台的直播推流和视频录制工具,它功能强大、可调空间大、上限很高,但是因为它主要为直播而设计,录制操作的便利性较差,上手有一定难度。和一众录屏工具(包括N/A卡驱动自带录屏)和它的套皮软件相比,OBS 属于那种 “愿意花一些时间研究能带来更高画质和效率” 的工具。
本文将会基于最新的 28.0
版本介绍直播推流和录制相关的设置,并以CSGO素材录制为例介绍游戏场景下的设置策略和一些 Trick,注意 OBS 实际分为 Studio 和 Classic 两个版本,Classic 版本有更好的兼容性,对较老的系统和设备有些用处,一般都用 Studio 版本。
# 安装
官网:https://obsproject.com (opens new window)
项目:https://github.com/obsproject/obs-studio (opens new window)
论坛:https://obsproject.com/forum (opens new window)
资源:https://obsproject.com/forum/resources (opens new window)
资源页包含各种插件、脚本、主题和工具。
OBS Studio 已经登录 Steam 商店,同样免费。如果担心下载和更新的速度,可以直接从 Steam 下载,相对更加方便。
# 初识OBS
启动 OBS,忽略首次引导,主界面如图所示。可以看到界面分为以下几个部分:
- 顶部菜单栏
- 预览窗口
- 快捷工具栏
- 来源
- 混音器
- 场景
- 转场特效
- 控件
# 来源面板
看到 来源
面板,我们需要添加合适的源得到想要的画面,这里的源类似 PhotoShop
里 图层
的概念,上层会覆盖下层,顺序可以随意调整,来源不可用时为透明,不会影响下一层。
可以添加的来源有很多种,首先添加一个 显示器采集
源,一切默认,这样我们就能预览看到画面了。
游戏源
和 窗口采集
可以专门捕获全屏游戏或某个游戏/窗口,捕获游戏时的性能会更好,可以把它们放在显示器源的上层,兼顾性能和便利,也可以关闭显示器源,不暴露桌面情况只展示特定游戏或窗口。
应用程序音频捕获
是当前正在测试的功能,可以获取特定程序的声音,特别适合分离游戏/语音音源,方便后期处理,后面会详细介绍。
# 混音器面板
这里我们可以调整各个声音来源的音量和滤镜,改变它们的混合比例。打开某个音源的滤镜页,可以添加 降噪、阈值
等滤镜,包括电脑中已安装的VST效果,图中简单加了一个 噪音抑制
,效果尚可。
点“齿轮”按钮或右键打开高级音频属性,这里可以进一步调整音量、左右平衡、偏移和监听,和较为重要的轨道。轨道中某个数字是否勾选代表它是否在该轨道中出现,一般会在轨道1中保留主要声音/直播观众听到的声音,其他轨道分别设置麦克风、开黑语音等音源,方便后期处理。
# 场景面板
设置和调整各个场景(Scene),直播往往需要多个不同场景,如正式开播前的等候场景、游戏A、B、C的场景、聊天场景等等。提前设置好各个场景可以避免来源面板臃肿和不断开关来源的麻烦。搭配相应的工具(如StreamDeck)可以实现快速切换场景,给直播带来便利。
场景之上还有一个场景集合的概念,在顶部菜单栏可以看到,可以更方便的分组、导入导出场景设置。
# 转场特效面板
调整场景切换时的转场特效,默认只有渐变和裁切,即交叉溶解和硬切,通过安装转场插件可以添加更多效果。
# 预览窗口
除了实时预览效果,在预览窗口还可以全屏投影、截屏和调整源的尺寸及位置。
# 配置文件
类似刚才提到的场景集合,每一个配置文件对应一组接下来要介绍的设置,整个设置面板的内容都包括在内(录制、推流、快捷键等),注意它和场景互不干扰,要分别设置。
# 设置
从控件面板点击按钮打开设置面板,这里按照录制设置的逻辑顺序介绍,以下每一小节对应左侧的标签栏名称。
# 视频
在这里可以调整画布和输出的分辨率、缩小方法和录制帧率FPS。
两个分辨率一般保持一致,即你想要的录制/推流分辨率,并且此时缩小方法不会生效。基础分辨率大于输出分辨率相当于超采,理论上画面细节会更好,性能消耗也会更高。不过这里调整缩放和来源设置的缩放有些重复,除非想要1080P推流同时4K录像,一般不要动,一致即可。
常用 FPS 值 不超过60,想要录制更高帧率可以改成 整数 FPS 值,最高能到120,再往上可以设置分数 FPS 值,如 180FPS -> 180/1
,不过此时录制的性能一般有瓶颈。
# 高级
高级页一般要注意的是 视频、录像、串流延迟这三个部分。
色彩格式默认的NV12适合推流,设置成其他格式则会有格式转换的性能消耗,但如果机器的性能尚可,建议设置成 I420
。如果追求更高的画质,I420
下色彩信息损失较多,可以考虑修改为 I444
,但它的兼容性较差,请务必确认你所使用的软件能够正确识别和播放。
想要进一步了解可以搜索
色度抽样
色彩范围设置为有限会丢弃掉一些超黑超白数据。直播场景建议保持 受限
以规避一些问题。在录制场景下可以设置为 完全
,注意此时部分播放器可能会出现异常。
录像的文件名格式中包含年月日和时间,可以根据需要修改。
自动封装至MP4格式再录制文件格式为MKV时会自动在录制完成后转换格式,后文中展开说明。
回放缓存文件名前缀/后缀 设置回放缓存(即时重放)功能保存的视频文件名,和录制得到的文件作区分,建议前缀或者后缀改成即时重放
。
串流延迟顾名思义,主要用于游戏直播防窥屏等需求。
# 输出
输出页包含推流、录像、音频和回放缓存(即时重放)的设置,也是OBS设置的难点。
输出模式建议设置成 高级
以获得最大的调整空间,简单模式
下的录像设置不是很够。如果你想要更简单一些,可以先看下去,如果你需要的选项在 简单模式
下就能调整好也可以不动。
# 编码器
编码器是OBS设置的重点。其中 x264 是 CPU 软件编码,比较吃CPU的性能和多核性能,而显卡编码一般对性能影响较小,但是画质较差,NVIDIA显卡有 NVENC,AMD显卡有 AMF,Intel显卡有 QuickSync,Mac下也有对应的编码器。
显卡编码非常适合游戏场景,我们可以把推流和录像都设置成显卡编码或者一个CPU编码、一个显卡编码平衡负载。
# x264 编码器
一般关注这三个设置
- 码率控制:固定码率CBR/可变码率VBR/CRF
- VBR 更节省码率,但画面变换时码率变换可能滞后导致码率不够,出现明显模糊
- CRF 模式适合录像,数值越低画质越高
- 比特率:CBR/VBR下可用
- 直播建议在 4000Kbps 以上
- 8000Kbps 附近比较适合 1080P 直播
- 码率上限取决于网络的上行带宽,建议测试网速确保带宽足够
- CPU使用预设:对CPU占用影响较大,掉帧时提高(使用更快)预设
# NVIDIA NVENC H.264 编码器
可以尝试使用
NVIDIA NVENC HEVC
,但要考虑到直播平台是否支持,和部分设备无法硬解时出现的卡顿情况。
- 速率控制:同上码率控制
- 最大比特率:可以在比特率的基础上加
2000~5000 Kbps
- 预设:直播时尽可能在带有
性能
的三个档位中选择,推荐性能
- 录像:CQP 模式,数值
12~23
;预设改为质量/最高质量
# Apple ProRes 编码器
安装 Streamfx (opens new window) 插件后可用,录像时可以考虑尝试使用,适用于对画质要求高且配置、存储足够的用户,建议配置设置 422标准
或 422高品质
更多的编码知识和OBS编码器设置作业参见大佬 iAvoe的文档 (opens new window)
# 录像
录像格式:即录像文件的封装格式,OBS 里的编码格式基本都支持 mp4/mov/mkv 封装,区别是 mkv 封装遇到断电等意外情况时可以保留之前录好的部分,菜单栏-文件-录像转封装
处转换为 mp4 格式后即可正常播放,但是部分播放器和软件(如旧版本Pr/Ae)支持较差,可能会无法播放。有需要可以前往 高级页
设置自动转换封装。
音轨:如要分离音频方便后期处理,这里务必勾选上所有要用到的音轨。
编码器:如设置成 (使用推流编码器),则会把直播的画面直接保存到本地,但对录像来说画质可能不够好,只求记录时可以这样设置,追求画面则设置成其他编码器。
重新缩放输出:期望的推流和录像分辨率不一致时启用。
自动分割文件:录制时间较长时可以固定文件大小/时长分割保存到硬盘中,降低意外情况下的风险,也方便筛选素材。
# 音频
这里可以设置更高的比特率/码率/位率,提高声音质量,也可以给不同的轨道起名字方便后期区分。
# 回放缓存
相当于N卡的即时重放,非常适合保存游戏的高光时刻。
最长回放时间:建议设置 90s
或 120s
强迫症玩家可以 +1s 不然实际时长会小 1s
最大内存:无法估计时尽可能给高,如 4096MB
或 8192MB
# 推流
这里设置推流的服务器和秘钥,OBS默认并不支持国内的直播平台,把服务修改成 自定义...
,从直播平台的开播页找到服务器地址和秘钥并复制到这里,注意不要泄露秘钥。
# 快捷键
这里没有什么难点,注意开始推流/停止推流设置同一个快捷键时,按键为开关式,一开一关。一般建议设置的快捷键:
- 开始推流
- 停止推流
- 开始录制
- 停止录制
- 开始回放缓存
- 停止回放缓存
- 保存回放(输出页启用回放缓存后才可见)
# CSGO素材录制
# 画面捕获
- 想得到拉伸画面,对源右键-变换-拉伸到全屏 或者选中源
Ctrl+S
- 取消相应游戏源/窗口捕获/显示器捕获中的
显示鼠标指针
- 受CSGO受信任模式的影响,官方匹配/直接启动游戏时无法捕获游戏流,只能捕获显示器,性能较差;平台游戏不受影响。
- 针对本地回放录像 demo 录屏有两种解决方法:
- 启动项添加
-allow_third_party_software
- 使用 HLAE (opens new window) 启动 CSGO
- 启动项添加
# 声音捕获
- 在来源面板添加应用程序音频捕获,先启动一次游戏并设置好捕获的窗口
csgo.exe
。 - 在高级音频属性中调整轨道分配,让游戏的音频单独一轨,设置-音轨-录像启用对应轨道。
# 录像设置
CPU/显卡编码根据个人偏好和电脑配置情况选择,以下给出推荐设置:
# x264 编码器
- 码率控制模式:强烈建议选择 CRF
- CRF 的数值越小,画质越高,文件越大,推荐范围
6~16
- CRF 数值减 6,码率翻倍
- CPU 使用预设
veryfast ~ ultrafast
选一个当前设置下不掉帧的档位,建议ultrafast
# NVIDIA NVENC H.264/HEVC 编码器
- 编码器:HEVC 比 H.264 效率更高,尤其是高分辨率
- 速率控制:由于没有 CRF 模式,这里选择 CQP 模式
- CQ 级别:
- H.264:推荐
12
,不超过23
- HEVC:推荐
16
,不超过26
- H.264:推荐
- 预设:选
质量
或最高质量
# Apple ProRes 编码器
配置选择 422 标准(APCN)
# 游戏设置
- 窗口模式
- 取消绑定 Ctrl,追踪投掷物从 Alt 改为 R,避免切屏和截图时出现异常
- 游戏中播放和暂停快捷键可与 OBS 开始/结束录制保持一致
- 控制台指令
engine_no_focus_sleep 0
确保窗口失焦后不掉帧 - 慢放录像,如 1/4:
demo_timescale 0.25
或Shift+F2
在 demoui 中手动操作 - 限制游戏渲染帧率,如 120fps:
fps_max 120
# 帧率调整
录制高帧率素材的时候我们一般会慢放录像+限制FPS节省资源给OBS留出更多的性能空间,在编码设置确定之后调整录制帧率可以明显提高录制的速度,可参照上文设置120FPS甚至更高的帧率。
菜单栏-停靠窗口-统计:启用统计面板,可以看到由于渲染延迟错过的帧和由于编码延迟跳过的帧和FPS。颜色变黄/变红或丢帧较多时(偶尔)说明当前设置无法完美录像,需要调整编码器设置或降低录制FPS。
- 01
- TeamSpeak服务器搭建——基于Docker-Compose10-03
- 02
- 略懂SSH——设备间安全通信09-07
- 03
- transform scale safari浏览器模糊04-19