如何系统地大规模测量流媒体直播流的延迟

目录

  • 流媒体直播流的延迟

  • 测量实时延迟

  • 1. 处理延迟测量

  • 2. 摄取到 CDN 延迟

  • 3. 摄取到客户端渲染延迟

流媒体直播流的延迟

对于一个经典的实时流媒体工作流,从内容的制作生成到分发,延迟是在每个环节累积的。我们在这里不讨论屏幕到屏幕的延迟,因为我们不能真正控制内容生产侧的延迟。我们关注工作流中的以下三个延迟:

  1. 处理延迟

  2. 摄取到 CDN 延迟

  3. 摄取到客户端渲染延迟

图 1:经典实时流媒体工作流

测量实时延迟

我们如何测量延迟?当视频沿着工作流被传输、转码、分发,我们可以在这些步骤中维护一个媒体时间戳。因此测量实时延迟的关键就是维护、追踪媒体时间戳

图 2:测量实时延迟

1. 处理延迟测量

处理延迟指的是视频到摄取服务器,被转码再传输到源端服务器的延迟。测量的方法是操作在 fmp4 容器中创建和使用 PRFT(Producer Reference Time Box) 插入时间戳。

2. 摄取到 CDN 延迟

这里指的是从视频帧到达摄取服务器开始,到用户设备从 CDN 下载到对应的视频帧的延迟。这个过程中可能会发生很多问题,比如设备的配置导致不能高效的渲染视频帧,可能会因为各种原因丢帧。因此,为了得到可靠的、干净的延迟数据,我们需要更可靠、更可控的客户端

为了实现这个目标,我们在云上设置了一个服务器用来直接从CDN下载数据,我们称作 Cloud Watcher。这一步延迟测量的关键就是利用 cloud watcher 来测量延迟。我们创建了一个 Event Pipeline 连接 ingestion server 与 cloud watcher,cloud watcher 从 pipeline 获取时间戳,同时也从 CDN 下载数据,然后计算延迟。

CSDN站内私信我(关注旁边,就是私信),领取最新最全C++音视频学习提升资料,内容包括(C/C++Linux 服务器开发,FFmpeg webRTC rtmp hls rtsp ffplay srs

 

3. 摄取到客户端渲染延迟

与上一步类似,这里也用一个 Event Pipeline 连接,但是因为在用户设备端直接获取时间戳比较困难,并且为了防止用户端增加额外的计算,因此引入了一个边缘服务器,计算延迟。

注意事项

  1. 计算的时候必须是实时视频,否则会引入不准确性;

  2. 消费时钟应该在摄取事件时钟之前,以获得有效的计算;

  3. 事件采样率越高,结果越精确;

  4. 播放器事件必须报告实时边缘时间戳。

猜你喜欢

转载自blog.csdn.net/m0_60259116/article/details/125149006