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 方案,请根据不同的编码协议按照以下配置进行推流设置。
视频编码器请选择 x264 或其他设备支持的 H.264 编码器。


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


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


注意:
WebRTC 推流需要添加
tx_h265=true 参数以开启支持。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版本如下图:





