根据网上的许多文章,我已经在 ubuntu 机器中设置了 nginx,用于 rtmp 到 hls 流式传输我的网络摄像头,但它的延迟为 35-45 秒,令人无法接受!
最佳答案
HLS 通常约为 10s+
延迟,如果您想要 ~100ms
延迟,则必须
使用 WebRTC,但 WebRTC 很复杂,而且不仅如此关于美好的事物。
一般来说,我们希望低延迟,并且我们还希望有尽可能多的设备来发布和播放流,并且如果我们想要扩展我们的系统,我们希望 CDN 能够支持它。
简而言之,如果 10 秒的延迟对您来说没问题,则永远不要尝试构建 3 秒延迟的系统。如果 3 秒对你来说没问题,就不要构建 100 毫秒的。这个世界上没有免费的东西。
有关协议(protocol)的基线延迟:
- HLS,延迟约5~10秒,对CDN友好。
- HTTP-FLV,延迟约1~3秒,仅部分CDN支持。
- WebRTC,大约0.5~1s延迟,很少有CDN支持。
- SRT,延迟约0.3~0.5ms,仅编码器支持。
存在一些有关延迟的问题:
- 关于本协议(protocol)的玩家,请阅读this .
- 如何对延迟进行基准测试,请阅读 this .
- 使用WebRTC进行直播,将RTMP转WebRTC,请阅读this .
- 如果使用FFmpeg,则有post以减少延迟。
所以这实际上取决于使用场景,例如:
- 如果您的用户仅使用 H5,您可以使用 WebRTC 或 FLV。
- 如果您的用户使用OBS发布流,您可以使用SRS将RTMP转换为WebRTC,以便观众播放流。
- 如果您的用户使用广播设备,您可以使用 SRT。
users --RTMP/SRT/WebRTC--> SRS --SRT/WebRTC/FLV --> Viewers
如果您想更多讨论,可以加入SRS社区.
关于nginx 直播延迟太高 45 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72323486/