Hello World

AVB简介--第一篇:概述


本文是AVB系列文章的第一篇,简单介绍车载以太网中的AVB技术。

一、音视频传输面临的主要问题

大家想一下,在观看网络视频的时候,经常遇到的问题是什么?

  1. 卡顿
  2. 花屏
  3. (实时直播)延时大
  4. 音视频不同步

假设音视频源正常的,造成以上问题的原因是什么呢?

  1. 卡顿:网络不流畅、数据不能及时到达。
  2. 花屏:视频数据丢失、错误。然而这只是表面原因,根本原因也是网络不流畅、数据不能及时到达。
  3. (实时直播)延时大:网络不流畅、数据不能及时到达。
  4. 音视频不同步:网络网络不流畅、数据不能及时到达会造成这种现象,另外,媒体时钟不同步也会造成这种现象。

这样看来,影响网络音视频观看体验的主要原因有两个:

  1. 网络不流畅,数据丢失或不能及时到达
  2. 多媒体同步问题

这也是AVB要解决的主要问题。不同的是,我们观看网络视频一般是经由广域网传输,而AVB解决的是局域网内的音视频传输问题。

二、如何解决这些问题

1. 网络传输问题

我们知道,传统以太网是基于竞争的“尽最大努力传输”的分组报文网络。有人可能会说TCP是可靠的,不错,但它的可靠性是建立在重传机制上的,带来的副作用是延时加大。

另外,中间转发节点(比如网络中的交换机、路由器)对报文的传输影响比较大。比如:

  • 传输过程中,如果中间的转发节点缓存队列已满,会导致后续数据包丢失。
  • 传输时延受转发节点的缓存状态影响,如果缓存队列中数据较多,传输延时就较大,缓存队列中数据较少,传输延时就较小。

如果可以构建这样一个网络,它可以为音视频数据预留带宽(类似高速公路上的专用应急车道),那么不仅解决了竞争问题,还保证了音视频数据可以在规定的时间内从源头传输到目的地(时间敏感网络的概念)。

没错,带宽预留是AVB的一个重要组成部分。

2. 多媒体同步问题

多媒体同步包含两个方面的内容:

  • 媒体时钟恢复(频率同步),它解决的是按什么样的速度播放的问题
  • 播放时间同步(相位同步),它解决的是什么时候播放的问题

媒体时钟恢复

以太网中传输的音视频都是离散的数字信号,而现实世界中的音视频都是连续的模拟信号。在音视频采集设备中,需要对模拟信号进行采样、量化、编码,才能转换为数字信号(简称模数转换,即A/D转换)。A/D转换过程中涉及到采样频率,即间隔多久采样一次。接收端收到数据后,按同样的频率进行播放。这就是媒体时钟恢复

媒体时钟必须有个参考时钟,这样它才能知道从上次采集到现在过了多久,是否该进行下次采样。有的采集系统以系统时钟作为参考时钟,而有的采集系统以外部信号作为参考时钟。不同参考时钟很有可能是不同步的,比如A时钟的1ms可能对应实现世界的0.9ms,B时钟的1ms可能对应现实世界额1.1ms。另外,时钟都不是绝对稳定的,受温度、运行时间等因素影响都会产生漂移(就像手表,有的过段时间变慢了,有的过段时间变快了)。

问题来了,接收端怎么保证自己的播放速率和采集端的采集频率一致(即如何恢复媒体时钟)?如果没有一个统一的参考时钟,这是很难做到的。如果参考时钟不同步,可能会出现播放过快或者播放过慢的问题。

播放时间同步

对于单一的音视频流,解决了媒体时钟恢复的问题,一般就能正常播放了。但是如果一个接收者同时接收多条音视频流,或者一个发送者将音视频发送到多个接收者同步播放,我们还要解决数据流之间的同步问题,保证同一时刻采样的数据在同一时刻播放,这就是播放时间同步

同样,如果参考时钟不同步,就有可能导致本来该先播放的音频后播放,或者本该先播放的视频后播放,在观众看来就是音视频不同步。

AVB中的精确时钟同步技术,可以让所有节点的本地时钟保持同步,为媒体时钟同步、播放时间同步提供了条件(后续文章重点介绍)。

三、AVB体系

AVB被称为时间敏感网络,它主要解决两个问题:

  • 延时问题:通过带宽预留,保证延时小,实时性好(延时可控,最坏情况下的延时不超过一定的阈值)
  • 同步问题
    • 媒体时钟同步:不同的媒体类型有自己的媒体时钟,这些媒体时钟都映射到gPTP时间(同一个时间坐标系),接收端可以轻松进行媒体时钟恢复。
    • 播放时间同步:数据发送时指示接收方在未来的某个时间点播放,如果有多个接收者,它们就会在未来的同一时刻同时播放。

1.协议框架

AVB的全称是Audio Video Bridging,由一系列IEEE标准组成,目的是在局域网中高效传输音视频数据。

AVB协议栈如下图所示:

avb_stack

可以看出,AVB主要是链路层的协议,它和传统的TCP/IP协议栈是并列共存的关系。

AVB协议栈不仅包括了前面提到的带宽预留和时钟同步协议,还包括其他一些辅助协议,主要协议如下:

  1. IEEE Std 802.1AS-2011:精确时钟同步协议(Generalized Precision Time Protocol,简称gPTP),用来将网络内所有节点的时钟同步同步到同一个主时钟。
  2. IEEE Std 802.1 Qat:带宽预留协议(Stream Reservation Protocol,简称SRP),目前被整合在IEEE Std 802.1Q-2011 第35章。
  3. IEEE Std 802.1 Qav:流量整形协议(Forwarding and Queuing for time-sensitive streams,简称FQTSS),负责对流量进行排队、转发管理,目前被整合在IEEE Std 802.1Q-2011 第34章。
  4. IEEE Std 1722-2016:音视频传输协议(Audio Video Transport Protocol,简称AVTP)。
  5. IEEE Std 1722.1-2013:音视频管理协议(Audio Video Discovery, Enumeration, Connection management, and Control protocol,简称AVDECC),负责服务发现,节点能力遍历,链接管理等控制功能。
  6. IEEE Std 1733-2011:基于AVB的RTP/RTCP传输协议(Layer 3 Transport Protocol for Time Sensitive Applications in Local Area Networks),它主要是将传统的RTP/RTCP流映射到二层的AVB流,使用二层AVB的性能,从而降低延时、提高同步精度。

2. 网络拓扑

AVB的网络拓扑如下所示:

avb_topology

它主要由两类节点组成:

  • End Station: 有时候也称为endpoint,它又分为Listener和Talker两种:
    • Listener:接收音视频数据的节点
    • Talker:输出音视频数据的节点
  • AV Bridge: 音视频网关

说明:

  • 一个节点可以包含多个Talker,即产生多条音视频数据流
  • 一个节点可以具有Talker和Listener的双重身份,既对外输出,又接收别人的数据

3. 典型应用场景

目前AVB主要应用在对时间敏感的场景中,比如工业控制,车载娱乐系统。下面简单举两个例子。

a. 车载娱乐系统

avb_in_vehicle

如上图所示,车内的DVD Player播放音视频文件,音频传输到扬声器,视频分别传输到后排座椅的两个显示器上。如何保证扬声器和两个显示器的同步,实现音视频同步?

  • 首先,gPTP协议保证了网络中所有节点的时钟是同步的。

  • 其次,SRP协议为音视频数据预留了带宽,保证都能在一定的时间内到达目的地。

  • 那么,如果在Talker端(DVR Player)就约定好,不同目的地的音视频数据在未来的同一时刻播放,是不是就实现了音视频同步?这就是AVTP协议中展示时间戳的意义所在。

b. 大型演唱会现场

大型演唱会现场都会布置多个扬声器来传输声音,可以简化成下面的模型。
那么如何控制这些扬声器同时“发声”?
道理一样,大家约定好在未来的同一时刻同时播放,先收到数据的节点把数据缓存起来,等待播放时刻的到来,然后产生“共鸣”。

avb_in_house

四、参考资料

  1. https://avb.statusbar.com/page/developer-faq/

上一篇 程序中的整数

Comments

Content

我的微信:coderhuo
我的微信