来源:The Video Insiders 嘉宾:Yurong Jiang 内容整理:贾荣立 这期电台节目邀请了 LinkedIn 软件工程师 Yurong Jiang ,概述了 LinkedIn 处理视频剪辑和实时视频广播的架构,并解释了如何在整个实时视频工作流程中测量和减少延迟,和主持人 Dror Gill、Mark Donnigan 一起探讨有关LinkedIn测量延迟的相关问题。
目录
- 延迟测量方法
- 延迟测量细节及性能
- 测量及减少延迟的意义
LinkedIn,中文名“领英”,启动于 2003 年 5 月,是一个面向职场的社交平台。2017 年 LinkedIn 将视频业务纳入其中,用户可以上传剪辑后的视频,分享视频。2019 年开启直播业务,其中大部分是专业的内容,包括分享一些专业的演讲和个人经历等。在各种视频业务中,尤其是针对实时视频直播业务,延迟对于用户体验的影响是巨大的,那么延迟由哪些部分组成,如何测量延迟,通过延迟如何对视频业务进行改进,是一个重大的问题。
延迟测量方法
Q: 如何测量实时视频端到端延迟,能否展示相应的工具或者流程?
A: 在测量端到端延迟方面,我们采用分而治之的做法:我们会测量比特流到达我们的管道的时间和将它交付给其他成员的时间。在中间状态,不仅包含有处理状态的延迟,还包含有用户方的观察延迟,以及由于不同网络环境给感知带来的延迟等。
对于处理部分的延迟,我们的做法是测量第一个比特流到达管道,直到它被转码和储存,即将进行交付的这段时间作为处理部分的延迟。这部分处理延迟时间具体包含什么呢?首先是接收信息流,直到缓冲区的内容积累到一定的阈值,才可以传给下一个管道;处理的下一步骤是转码,当有连续的视频片段进入管道时,将原始的内容转换成不同的解析格式,比如 480P,720P 等;当解析完成后,就将它存储起来,或者发送给下一个成员。
我们测量处理延迟的具体方法是:我们把时间戳放在 PRFT Box(Producer Reference Time Box)中,当关键帧到达管道时将其放入,在转码过程中,并不直接接触 PRFT Box,在最后阶段,当我们试着把片段进行存储时,提取出 PRFT Box,取出时间戳与当前时间做差,从而得到处理延迟。
Q: 对于管道之外的延迟,有进一步的测量么?
A: 在管道外,也就是将媒体包从源服务器传送到 CDN (内容分发网络),这部分的延迟也是可以测量的。本质上也是捕捉两个时间戳,一个是注入侧的媒体时间戳,以及用户接收到片段的时间戳。除此之外,在数据中心的服务器也需要查看它是什么时候接收到的片段,以及接收到的片段的时间戳是多少,有了这几个时间戳,就可以得到相对准确的延迟。
延迟测量细节及性能
Q: 你们是使用多个 CDN 么?
A: 对于目前来说是使用一个 CDN ,但是在评估方面我们可能会使用多个 CDN。
Q: 你们使用了一些低延迟工具进行实验了么,比如低延迟版本的 dash?
A: 这个在我们的计划之中。
Q: 有许多不同的流媒体服务,包括低延迟的 HLS 和 dash,他们在实验室中能够正常工作,但是当应用于实际时还是出现了许多问题。对于你的工作,有遇到这样的问题么?如果有,是如何使它的性能更加稳定和可靠的呢?
A: 由于我们现在没有足够的数据,所以还是在评估阶段。
Q: 是否可以测量玩家侧的延迟呢?
A: 是的,我们也在尝试做这方面的工作,例如获取手机的本地时钟等,但是目前来说有一点挑战性,因为那些设备并不受我们的控制,可能会报告一些很不一致的数据,比如时钟并不同步等。除此之外,用户可能会对视频直播状态有一些错误的解释,可能会导致当视频结束后还在不断地发送报告。这些东西基本上需要大量的计算技巧,我们试着尽可能地过滤掉这些数据,以便计算出一个有意义的延迟。
测量及减少延迟的意义
Q: 你们如何利用延迟做出实时或者未来的调整,去提高或者改善流媒体服务的质量?
A: 对于延迟相关的数据,我们有许多方法去利用它。
首先,大部分直播视频运营商都在通过一些手动的方式计算延迟,但是我们的延迟测量则可以比较清楚的反应各个部分的延迟。我们可以对管道内部做出一定的改变,我们会观察延迟数据是否合理,优化延迟的瓶颈在哪里,以及尝试什么样的方式去优化以降低延迟。除此之外,得到了管道内部处理以及 CDN 传输的延迟后,就可以对用户体验感受进行预测。通过测量,我们基本上可以知道整个过程的瓶颈在哪里。
另一方面,延迟测量也给直播的人一些有用的信息。例如,当你在直播时,你并不知道你的观众会在什么时候看到视频,例如 2 秒后,3 秒后甚至 30 秒后等,但是通过延迟测量,可以事先得到这些信息,你就可以从容地决定如何和你的观众进行互动。
Q: 想问一下目前做的比较有趣的工作有哪些?
A: 目前我们在一些任务调度和工作流优化上投入了大量的精力,主要集中在我们的基础设施上。当然也有一些比较有趣的工作,第一个就是支持多种语言的实时视频的自动字幕。对于带有互动问题的实时视频,想要尽快做出反应,就要减少端到端的延迟。除此之外,还有基于 webRTC 平台相关的实时会议内容,支持用户随时随地加入会议等。