在流媒体传输中,流控和QoS是无法避免的话题之一。然而,在不同的应用场景和需求下,流控和QoS的策略一方面有很大的差异,另一方面在本质上又有很多的共性。本人在北大读博时的课题即为流媒体传输优化,工作后也一直从事流媒体传输相关的工作,本文仅浅谈自己对流媒体传输中的流控和QoS的理解和看法,抛砖引玉。
流控即网络流量控制(Network traffic
control),百度百科的解释为:一种利用软件或硬件方式来实现对网络流量的控制。它的最主要方法,是引入QoS的概念,从通过为不同类型的网络数据包标记,从而决定数据包通行的优先次序。对于这种解释,我认同前半句,不完全认同后半句,不是因为他错,而是太过片面和局限,具体原因后面会解释。
QoS即Quality of Service,他与QoE的关系和差别,wiki上的定义比较好,有兴趣的可以参考https://en.wikipedia.org/wiki/Quality_of_service。
回到我们的正题,流媒体传输中的流控和QoS。在不同的场景和需求下,流控和QoS的策略差异较大,这主要是不同的应用场景,考虑的需求不一样,从而导致流控策略的设计需要因需而已,例如,在互动场景下,最需要解决的是延迟和卡顿问题,而画面的清晰度(码率大小)和平滑性(码率抖动)则可以稍微牺牲;而在直播场景下,针对不同的直播需求,流畅度、清晰度、延迟等的考虑也不一样。之所以需要区别对待这些需求,是因为当网络环境不好时(在天朝,网络环境极为复杂且着实难以保证网络一直很好),这些性能之间是相互矛盾的,重此失彼ÿ