识别直播服务上每个组件的延迟

问题描述 投票:0回答:1

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

OBS (Open broadcast) --RTMP--> MediaLive --HLS-> MediaPackage --HLS--> Cloudfront -> video.js player
ffmpeg http-live-streaming live-streaming aws-media-live aws-mediapackage
1个回答
3
投票

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

  • RTMP:在网络正常的情况下,延迟约为1s。
  • HLS:延迟约为3~5s,取决于ts持续时间。

我猜你的系统的最小延迟大约是5~10s。其中编码器需要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 1s,并以零延迟进行调整。
  • 如果可以的话,使用WebRTC来送流,延迟在200ms左右。

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

© www.soinside.com 2019 - 2024. All rights reserved.