这篇会介绍如何使用 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 版本升级,请参考 使用 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 推流地址。
六、步骤一:设置 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 视频编码使用 AV1 视频编码使用 HEVC 视频编码视频编码器请选择 x264 或其他设备支持的 H.264 编码器。视频编码器请选择 AOM AV1 或其他设备支持的 AV1 编码器。视频编码器请选择设备支持的 HEVC 编码器,如 Apple VT HEVC 硬件/软件编码器等。
注意:&tx_hevc=true(开启 HEVC(H.265))、&tx_vp8=true(开启 VP8)、&tx_vp9=true(开启 VP9)。
4. 单击确定保存设置信息。
八、步骤三:直播推流
1. 单击 OBS 底部工具栏中的控制 > 开始直播即可将媒体流推送到你设置的 WebRTC 地址。
2. 当 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.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版本如下: