OBS(Open Broadcaster Software)支持 WebRTC 协议推流功能,这意味着您可以在 PC(Windows/Mac/Ubuntu) 端像使用 RTMP 协议推流一样,简单快速地将直播流基于 WebRTC 协议推送至腾讯云直播。
本文将以 Windows 端的 OBS v30.0 版本为例,介绍如何使用 OBS 在 PC 端进行 WebRTC 协议推流操作。
您还可以在 Web 端进行 WebRTC 协议推流,关于 Web 推流的具体操作步骤,请参考 Web 推流。 编码协议支持
视频
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 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-10-10 11:43:10
。
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),可以直接进行播放。
4. 单击确定保存设置信息。
步骤三:直播推流
1. 单击 OBS 底部工具栏中的控制 > 开始直播即可将媒体流推送到您设置的 WebRTC 地址。
说明:
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.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推流地址 即可。
本页内容是否解决了您的问题?