0

我正在使用以下管道进行直播,我能够找到大约 30-35 秒的端到端延迟,有没有办法可以识别每个组件的延迟,例如 MediaLive 的延迟和 MediaPackage 的延迟?

OBS (Open broadcast) --RTMP--> MediaLive --HLS-> MediaPackage --HLS--> Cloudfront -> video.js player
4

1 回答 1

1

延迟无处不在,因此找出哪些组件引入了延迟非常重要。但是,每个组件都会引入一段延迟:

  • RTMP:如果网络没问题,延迟大约1s。
  • HLS:延迟大约 3~5s,取决于 ts 时长。

我猜你系统的最小延迟大约是 5~10 秒。其中编码器耗时0.8s,RTMP为1s,HLS为1~3s,CDN为1~3s左右,播放器为1~3s。请通过下面的一些工具进行检查。

使用在线秒表或其他类似的小工具,然后使用OBS窗口捕获来捕获直播中的秒表,并播放MediaLive的RTMP / HLS流和cloudfront的HLS,您将获得每个系统的延迟。

你也可以用FFmpeg代替OBS发布RTMP流,用过滤器显示时间戳,请阅读SRS#2742

请使用 ffplay、flv.js、hls.js 播放流,切勿使用本身具有巨大延迟的VLC 。

找到延迟后有一些提示:

  • 对于 RTMP 服务器,禁用 gop 缓存。
  • 对于 HLS,使用较小的 ts 持续时间,例如 1~2s。
  • 对于编码器(OBS),使用 Main 或 Baseline,使用较小的 gop 1,并使用 zerolatency 进行调整。
  • 如果可能的话,使用 WebRTC 来传递流,延迟大约是 200 毫秒。

永远不要应用这些设置,除非您指出引入延迟的位置。

于 2021-12-18T10:02:50.597 回答