SLSP直播流媒体协议

时间:2022-05-02 10:09:09

我们定义了一个基于WebSocket的自定义直播流媒体协议:SLSP,并只用了大约1000行Node.js和C语言代码实现。

原因是,RTMP非常旧,而且难于理解及使用大型、可用的HTTP解决方案,相比WebSocket或SLSP而言,它只是个“稳定”的骗局。我在多媒体开发领域有几年经验,但在Wowza或任何当前可用的RTMP服务器上,修复这类问题或实现自定义特性仍然感觉困难。

网络正快速革新,对所有人来讲,HTTP是一个更成熟、更容易理解的协议。我们有很多高性能的开源HTTP服务器,比如:nginx,具有非常高的性能且保持高稳定性。

WebSocket是一个长连接协议,适用于视频流。所有现代浏览器都支持WebSocket。WebSocket内置SSL,故而客户端和服务器端都不需要任何附加代码。WebSocket使用和HTTPS一样的443端口,因为可以穿越绝大多数防火墙。

SLSP,简而言之,如同一个WebSocket聊天室。只需要将服务器部署在Nginx代理之后,一旦WebSocket客户端向服务器发送持续的视频流,SLSP就会将视频流分段成数个HLS TS段,故而任何一个可用的HLS播放器都可以播放视频流了!

WebSocket可以使用大量可用的高性能HTTP解决方案。SLSP是基于WebSocket的,理所当然我们也可以构建非常健壮的智能负载均 衡方案。如上图所示,无论何时我们启动一台新的SLSP服务器,它都会向负载均衡器注册自身。每一个SLSP服务器都会持续地向均衡器发送自身的状态,例 如服务器当前负载。

其次
RTMP处理累积延迟的最好方法是客户端检测到缓冲区有很多数据了,如果可以的话,就重连服务器。网上看到的 这句话对吗?如果对的话,客户端如何检测缓冲器的数据大小?

缓存区大的话,删除缓存区数据就好了
专业术语叫跳帧
当然也可以做动态码率
设定一个缓存区,如果超过缓存区,可以降低当前码率