OBS(Open Broadcaster Software)支持 WebRTC 协议推流功能。这意味着您可以在 PC(Windows/Mac/Ubuntu) 端像使用 RTMP 协议推流一样,简单快速地将直播流基于 WebRTC 协议推送至腾讯云直播。
本文将以 Windows 端的 OBS v30.0版本为例,介绍如何使用 OBS 在 PC 端进行 WebRTC 协议推流操作。
准备工作
您可以到 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 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版本如下图: