nginx 直播延迟太高 45 秒

标签 nginx stream http-live-streaming rtmp

根据网上的许多文章,我已经在 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/

相关文章:

asynchronous - 如何在 Flutter 的 Firebase 快照上调用 Future?

video-streaming - 什么 HEVC 编解码器标签与 fMP4、hvc1 或 hev1 一起使用?

ios - AVplayer 暂停时如何将 View 层设置为白色?

java - ObjectInputStream 与 CipherInputStream 卡住、挂起

ios - 没有m3u8扩展名的swift stream hls

node.js - 使用 nginx 作为指向 AWS alb 的反向代理

ubuntu - Nginx如何将不同的站点托管到同一个域但在不同的端口上

php - 使用node.js Node http服务器而不是php/ruby​​/etc + nginx有什么优势?

nginx 允许|拒绝 $realip_remote_addr

python - 如何在 Python 中从 Youtube URL 流式传输音频(无需下载)?