我正在尝试构建一个服务,从浏览器向客户端流式传输屏幕(类似于twitch)。
我已经成功构建了具有rtmp的工作nginx服务器,并使用OBS进行了测试。那很好用。
我的问题是如何使用WebRTC从浏览器(而不是从OBS或其他广播器)向NGINX服务器通过RTMP流式传输屏幕?
我已经成功构建了具有rtmp的工作nginx服务器,并使用OBS进行了测试。那很好用。
我的问题是如何使用WebRTC从浏览器(而不是从OBS或其他广播器)向NGINX服务器通过RTMP流式传输屏幕?
SRS(Simple Realtime Server) 能够将 WebRTC 和 RTMP 相互转换。
WebRTC to RTMP
用于 H5 发布者进行实时流传输。由于 RTMP 现在已被禁用(截至2021年12月),因此通过 H5 发布流的唯一方法是使用 WebRTC。我们还需要将 WebRTC 转换为 RTMP,这使我们可以在其他平台上重复使用该流。
它的工作原理如下:
Chrome --WebRTC---> SRS ---RTMP--> YouTube, VLC, etc.
H.264+OPUS H.264+AAC
RTMP to WebRTC
,这是低延迟的实时流。一般来说,RTMP的延迟约为3~5秒,而RTMP to WebRTC
的延迟约为0.8~1秒
。请注意,H5不支持RTMP,但HTTP-FLV
可以很好地工作。