OBS(Open Broadcaster Software)支持 WebRTC 协议推流功能,这意味着您可以在 PC(Windows/Mac/Ubuntu) 端像使用 RTMP 协议推流一样,简单快速地将直播流基于 WebRTC 协议推送至腾讯云直播。
本文将以 Windows 端的 OBS v30.0版本为例,介绍如何使用 OBS 在 PC 端进行 WebRTC 协议推流操作。
编码协议支持
视频
H.264(兼容性最好,几乎所有客户端可直接播放)
AV1(与 H.264 相比压缩率提高40%+,同画质下可以节省40%+的带宽和存储成本,大部分浏览器可直接播放)
HEVC(依赖推流设备编码器支持,相比 H.264 压缩率更高,浏览器支持较差,云直播终端 SDK可直接播放)
音频
Opus(浏览器 WebRTC 可直接播放)
准备工作
您可以到 OBS 官网 下载,确保您已安装支持 WebRTC 推流的 OBS 版本( v30.0 或更高版本,使用 AV1 或 HEVC 编码协议需要 v30.2 或更高版本,请勿使用 v30.1.x 版本,此版本会导致网络丢包时画面花屏)。
若您无法进行 OBS 版本升级,请参考 使用 OBS 插件进行 WebRTC 推流,或使用 RTMP 推流。
注意事项
请勿使用 OBS v30.1.x 版本,此版本会导致网络丢包时画面花屏。
云直播默认提供测试域名
xxxx.livepush.myqcloud.com
,您可通过该域名进行推流测试,但不建议您在正式业务中使用这个域名作为推流域名。使用 WebRTC 协议推流,每个推流域名默认限制1000路并发推流数,如您需要超过此推流限制,可通过 提交工单 的方式联系我们进行申请。
获取 WebRTC 推流地址
1. 登录 云直播控制台,进入常用工具 > 地址生成器,进行如下配置:
1.1 选择地址类型:推流地址。
1.2 选择您已添加到域名管理里对应的域名。
1.3 AppName 为区分同一个域名下多个 App 的地址路径,默认为 live。
1.4 填写自定义的流名称 StreamName,例如:
Stream_01
。1.5 您需要选择一种加密类型,请根据您的安全需求和性能考虑进行权衡。加密类型可以选择 MD5 或 SHA256 ,默认 MD5 。
1.6 选择地址过期时间,例如:
2024-09-30 17:10:06
。2. 单击生成地址即可获取 WebRTC 推流地址。


OBS 在线推流
步骤一:设置 WHIP 服务器地址与 WebRTC 推流地址
1. 打开 OBS,您可通过底部工具栏的控件 > 设置进入设置界面。


2. 单击直播进入推流地址设置界面。
选择服务类型为:WHIP。
在服务器中填写腾讯云直播 WHIP 服务器地址:
默认地址:
https://webrtcpush.tlivewebrtcpush.com/webrtc/v2/whip
备用地址:
https://webrtcpush.tlivewebrtcpush2.com/webrtc/v2/whip
在 Bearer 令牌中填写您获取的 WebRTC 推流地址,示例:
webrtc://domain/AppName/StreamName?txSecret=xxxxx&txTime=xxxxx


步骤二:设置推流参数
1. 通过控件 > 设置 > 输出。进入推流参数设置界面,选择输出模式为高级。
2. 选择直播选项,配置编码器、码率、关键帧间隔等参数。
3. 若您在播放端采用的是快直播 WebRTC 方案,请根据不同的编码协议按照以下配置进行推流设置:
使用 H.264 视频编码
视频编码器请选择 x264 或其他设备支持的 H.264 编码器。


使用 AV1 视频编码
视频编码器请选择 AOM AV1 或其他设备支持的 AV1 编码器。


使用 HEVC 视频编码
视频编码器请选择设备支持的 HEVC 编码器,如 Apple VT HEVC 硬件/软件编码器等。


注意:
OBS WebRTC 推流的默认音频编码格式为 Opus。当您使用快直播在 Web 端进行播放时,由于 Web 端默认支持 Opus 音频格式,因此不再需要像 RTMP 协议推流时那样进行云端音频转码(从 AAC 转换为 Opus),可以直接进行播放。
关于 x264 选项的配置请参考:x264 多slice编码参数。
4. 单击确定保存设置信息。
步骤三:直播推流
1. 单击 OBS 底部工具栏中的控制 > 开始直播即可将媒体流推送到您设置的 WebRTC 地址。


2. 当 OBS 软件下方的指示灯显示为绿色并保持常亮,这表明推流已经成功进行:


说明:
OBS 是基于 WHIP(WebRTC-HTTP Ingestion Protocol)协议实现的 WebRTC 推流,WHIP 是一种基于 HTTP 的标准协议,该协议允许您使用 HTML5 和不同的客户端向流媒体服务器或 CDN 推送/拉取 WebRTC 实时流。
OBS WebRTC 推流与 RTMP 协议推流的端到端延时对比
端到端延时受到设备性能、编码参数、网络传输、播放器缓存等多个因素的影响,并在直播过程中可能出现一定范围的波动。在此场景中,我们将比较 x264 多 slice 编码与单 slice 编码在端到端延时方面的差异。推流端使用 OBS 工具,播放端采用 Web 快直播。
x264 多 slice 编码参数
当您在 OBS 的微调(Tune)选项中配置了 zerolatency(零延迟)模式后,OBS 会自动启用多 slice 编码,以提高编码速度并降低延迟。
如果您在播放端采用的是快直播 Web 端方案,需要注意的是,部分旧版本浏览器的 WebRTC 对多 slice 编码存在兼容性问题。在这种情况下,开启多 slice 编码可能会导致弱网丢包场景下播放端出现花屏现象。为避免这一问题,您可以在 x264 选项中配置
sliced_threads=0
以关闭多 slice 编码。但是,关闭多 slice 编码可能会引入额外的几百毫秒编码延时。因此,在配置时,请根据您的实际需求权衡兼容性和延迟。推流方式 | 描述 |
WHIP 推流 | 约300~500ms。 ![]() |
RTMP 推流 | 约450~650ms。 ![]() |
单 slice 编码
采用单 slice 编码时,端到端延时受设备性能影响较大。以下数据仅供参考,实际延时可能因设备性能和其他因素而有所不同:
推流方式 | 描述 |
WHIP 推流 | 约700 ~ 850ms。 ![]() |
RTMP 推流 | 约850~1000ms。 ![]() |
注意:
这些延时数据可能因网络状况、编码参数、播放器缓存等因素而有所波动。在实际应用中,可以根据需求和设备性能调整编码参数和推流协议,以达到理想的延时和画质表现。
使用 OBS 插件进行 WebRTC 推流
OBS 低于 v30.0 Beta 1 的版本无法直接进行 WebRTC 协议推流,腾讯云直播为您提供了集成 OBS 插件的方式进行 WebRTC 推流。
注意事项
目前对 OBS 版本要求:26.0 ≤ OBS版本 ≤ 29.0.2,可通过 OBS 归档版本 下载安装。
WebRTC 推流插件当前只支持 Windows 端,若您想要实现在 Mac/Linux 上进行 WebRTC 推流,可以使用 Web 推流。
配置 OBS 插件
1. 配置插件数据。
1.1 下载 OBS 插件,根据本地 OBS 版本,把对应版本内 data 文件里面的两个 
services.json
和 package.json
文件,挪动到对应的 data > obs-plugins > rtmp-services 目录进行覆盖。(obs-studio
默认安装在 C 盘,对应的目录为:C:\\obs-studio\\data\\obs-plugins\\rtmp-services
,请根据您的实际情况进行配置。)

1.2 将上述两个 JSON 文件复制至
C:\\Users\\<计算机名>\\AppData\\Roaming\\obs-studio\\plugin_config\\rtmp-services
目录下进行覆盖。(<计算机名>
根据您的实际情况填写即可)。2. 配置插件动态库。
将
obs-plugins\\64bit
中的 dll 文件,挪动到对应的 obs-studio > obs-plugins > 64bit 目录下。(obs-studio
默认安装在 C 盘,对应的目录为:C:\\obs-studio\\obs-plugins\\64bit
,请根据您的实际情况进行配置。)

配置推流链接
1. 生成 WebRTC 推流地址。


2. 配置 OBS 推流服务。
2.1 打开 OBS,您可通过底部工具栏的控件 > 设置进入设置界面。
2.2 单击推流进入流设置页签,选择服务类型为
Tencent webrtc
,服务器为Default
,串流密钥中输入之前生成的 WebRTC 推流地址。2.3 当前 OBS 插件支持 OBS 29 版本,如需推流,单击直播进入流设置页签,选择服务类型为
Tencent webrtc
,服务器为Default
,推流码中输入之前生成的 WebRTC 推流地址 即可。串流密钥示例:
webrtc://domain/AppName/StreamName?txSecret=xxx&txTime=xxx
如下图:


OBS 29版本如下图:

