【问题标题】:Identity per component latency on livestream services直播服务上每个组件的身份延迟
【发布时间】:2022-01-14 10:45:52
【问题描述】:
我正在使用以下管道进行直播,我能够找到大约 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】:
延迟无处不在,因此找出导致延迟的组件非常重要。但是,每个组件都会引入一段延迟:
- RTMP:网络正常的情况下,延迟约1s。
- HLS:延迟约为 3~5s,取决于 ts 持续时间。
我猜你系统的最小延迟大约是 5~10 秒。其中编码器耗时0.8s,RTMP为1s,HLS为1~3s,CDN为1~3s左右,播放器为1~3s。请通过下面的一些工具进行检查。
使用online stopwatch或其他类似的小工具,然后使用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,并使用零延迟进行调整。
- 如果可能的话,使用WebRTC来传递流,延迟大约是200ms。
请从不应用这些设置,除非您指出延迟的来源。