有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
OBS(Open Broadcaster Software)支持 WebRTC 协议推流功能。这意味着您可以在 PC(Windows/Mac/Ubuntu) 端像使用 RTMP 协议推流一样,简单快速地将直播流基于 WebRTC 协议推送至腾讯云直播。
本文将以 Windows 端的 OBS v30.0版本为例,介绍如何使用 OBS 在 PC 端进行 WebRTC 协议推流操作。
您还可以在 Web 端进行 WebRTC 协议推流,关于 Web 推流的具体操作步骤,请参考 Web 推流

准备工作

您可以到 OBS 官网 下载,确保您已安装支持 WebRTC 推流的 OBS 版本( v30.0 或更高版本)。若您无法进行 OBS 版本升级,请参考 使用 OBS 插件进行 WebRTC 推流
开通云直播服务,并准备已备案的域名,添加为 推流域名(系统提供默认的推流域名可以使用,也可以添加自定义域名推流)。

注意事项

云直播暂无地址生成历史记录功能,请生成地址后,复制保存。
云直播默认提供测试域名 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 选择地址过期时间,例如:2023-09-06 20:15:22
2. 单击生成地址即可获取 WebRTC 推流地址。




OBS 在线推流

步骤一:设置 WHIP 服务器地址与 WebRTC 推流地址

1. 打开 OBS,您可通过底部工具栏的控件 > 设置进入设置界面。



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




步骤二:设置推流参数

1. 通过控件 > 设置 > 输出。进入推流参数设置界面,选择输出模式为高级
2. 选择直播选项,配置编码器、码率、关键帧间隔等参数。
3. 若您在播放端采用的是快直播 WebRTC 方案,建议按照以下配置进行推流设置:



注意:
OBS WebRTC 推流的默认音频编码格式为 Opus。当您使用快直播在 Web 端进行播放时,由于 Web 端默认支持 Opus 音频格式,因此不再需要像 RTMP 协议推流时那样进行云端音频转码(从 AAC 转换为 Opus),可以直接进行播放。
关于 x264 选项的配置请参考:x264 多slice编码参数
4. 单击确定保存设置信息。

步骤三:直播推流

1. 单击 OBS 底部工具栏中的控制 > 开始直播即可将媒体流推送到您设置的 WebRTC 地址。



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



说明:
OBS 是基于 WHIP(WebRTC-HTTP Ingestion Protocol)协议实现的 WebRTC 推流,WHIP 是一种基于 HTTP 的标准协议,该协议允许您使用 HTML5 和不同的客户端向流媒体服务器或 CDN 推送/拉取 WebRTC 实时流。
若您需要了解更多关于 OBS 推流的用法,可以参考 OBS 推流

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.jsonpackage.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版本如下图: