大规模测量实时视频延迟
来源:Demuxed 2021
主讲:Yurong Jiang @ LinkedIn
翻译:钟宏成想象一下直播观众想知道他们的直播视频的延迟,或者直播基础设施工程师想捕捉管道的延迟性能,如何系统地大规模测量延迟?
目录
- 流媒体直播流的延迟
- 测量实时延迟
- 1. 处理延迟测量
- 2. 摄取到 CDN 延迟
- 3. 摄取到客户端渲染延迟
- 经验教训
流媒体直播流的延迟
对于一个经典的实时流媒体工作流,从内容的制作生成到分发,延迟是在每个环节累积的。我们在这里不讨论屏幕到屏幕的延迟,因为我们不能真正控制内容生产侧的延迟。我们关注工作流中的以下三个延迟:
处理延迟 摄取到 CDN 延迟 摄取到客户端渲染延迟
测量实时延迟
我们如何测量延迟?当视频沿着工作流被传输、转码、分发,我们可以在这些步骤中维护一个媒体时间戳。因此测量实时延迟的关键就是维护、追踪媒体时间戳。
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 下载数据,然后计算延迟。
3. 摄取到客户端渲染延迟
与上一步类似,这里也用一个 Event Pipeline 连接,但是因为在用户设备端直接获取时间戳比较困难,并且为了防止用户端增加额外的计算,因此引入了一个边缘服务器,计算延迟。
经验教训
计算的时候必须是实时视频,否则会引入不准确性; 消费时钟应该在摄取事件时钟之前,以获得有效的计算; 事件采样率越高,结果越精确; 播放器事件必须报告实时边缘时间戳。
附上演讲视频:
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。