上一篇我们介绍了WebRTC的补充协议WHIP与WHEP,本篇介绍一下如何在OBS在通过WebRTC进行直播推流。环境要求:
准备工作
- OBS Studio版本:大于等于30.0版本(不要使用 v30.1.x 版本,此版本会导致画面花屏)。
- 操作系统:Windows/MacOS/Linux(带桌面环境)均可。
- 向视频服务商申请WebRTC推流地址 或 自建WebRTC服务器。
在进行WebRTC推流之前,我们先了解一下视频编码要求,截止目前,流行的视频编码器有
- H.264:目前阶段兼容性最好,流行度最高,几乎所有用户端均可直接播放,不用安装额外插件。
- AV1:与 H.264 相比压缩率提高40%左右,同画质下可以节省40%的带宽和存储成本,大部分现代浏览器可直接播放。若选择此编码器,则需要OBS v30.2 或更高版本。
- HEVC:较新格式的编码器,比 H.264 压缩率更高,但目前各用户端的系统支持性较差,需额外安装解码器,也需要视频服务端的支持。若选择此编码器,则需要OBS v30.2 或更高版本。
为了兼容性考虑,我们优先选择H.264作为视频编码器。对于音频编码器,我们选择Opus即可。
OBS推流设置
打开OBS设置界面,在左侧选择”直播“标签,在右侧的服务中选择“WHIP”,然后在服务器一栏填入您申请的WebRTC推流地址 或 自建的WebRTC推流地址。
如果OBS监测到编码码不适用,会弹窗提示,如下图所示:
在设置界面的“输出”画面中,找到“直播”区域,可以更为详细的设置直播参数。
我们某平台为例,申请一个WebRTC推流地址,并将它正确的填写到OBS设置中。下图是申请后的直播推流地址,红框是WebRTC的推流地址:
由于不同的平台有差异化地址要求,因此在填写推流地址之前要阅读您申请的视频平台地址填写要求。我使用的这个平台要求先填http地址,再填WebRTC地址,如下所示:
填写完成后,点击确定,即可在OBS中推流直播了。
其它配置说明
上面我们使用的H.264编码器配置,这一节额外说明一下H.264、AV1与HEVC编码器的直播配置。
H.264 编码器
由于直播受到设备性能、编码参数、网络传输、播放器缓存等多个因素的影响,因此直播画面存在一这下的延时,并会在直播过程中可能出现一定范围的波动。在OBS中可以调节x264 多 slice 编码参数改善这一现象。
当在 OBS 的微调(Tune)选项中配置了 zerolatency(零延迟)模式后,OBS 会自动启用多 slice 编码,以提高编码速度并降低延迟。
启用零延时选项后,需要注意部分旧版本浏览器的 WebRTC 对多 slice 编码存在兼容性问题。在这种情况下,开启多 slice 编码可能会导致弱网丢包场景下播放端出现花屏现象。为避免这一问题,您可以在 x264 选项中配置sliced_threads=0以关闭多 slice 编码。但是关闭多 slice 编码可能会引入额外的几百毫秒编码延时。因此,在配置时请根据您的实际需求权衡兼容性和延迟。
AV1编码器
在编码器列表中选择带有 AV1 的编码器即可。
在编码器列表中选择带有 HEVC 的编码器即可。
设置好合适的编码器后,点击确定,重新启动直播即可生效。
结语
OBS30.0+版本内置支持 WebRTC 协议推流功能,这意味着您可以在OBS中像使用 RTMP 协议推流一样,简单快速地本地媒体内容基于 WebRTC 协议直播,获得实时性更高的用户观看体验。