浅析物联网广播系统中延迟问题的解决
扫描二维码
随时随地手机看文章
0 引 言
广播是常见的传播方式,也是 20 世纪 20 年代初流行的媒体之一。随着技术的演进,广播从最初的模拟广播到数字广播,再到现在的网络广播,已经经历了三代变革。随着互联网、移动互联网、云计算、大数据和物联网的发展,物联网广播将成为第四代广播系统。在物联网广播系统中,会有大量各类型的数据需要交换,这就对传输提出了较高的要求,要尽量减少延迟时间。
1 物联网广播中的三种延迟现象
在物联网广播系统中,主要存在三种延迟现象,即模数转换延迟、数据传输延迟和数模转换延迟。
(1)模数转换延迟主要包括模拟信号的采样、量化、编码、压缩延迟。
(2)数据传输延迟主要是传输数据的延迟,数据主要分为内容(content)和控制信号两部分。内容有多种格式,且数据量各不相同,为非结构化数据,控制信号一般是结构化数据。
(3)数模转换延迟主要包括解压、解码、后处理、播放等延迟。
在这三类延迟中,模数与数模转换与硬件及其性能相关,可优化的项目并不多。其中传输延迟更容易发生,一旦发生传输延迟,就会表现出卡顿现象或者跳动现象(画面显示出马赛克就是跳动现象之一)。物联网广播系统延迟产生的多个阶段如图 1 所示,内容见表 1 所列。
2 多管齐下,解决物联网广播内容传输延迟问题针对物联网广播中的内容传输延迟问题,可采用多种方法进行优化或解决。
2.1 UDP 协议+ 校验函数,减少网络资源占用,确保数据完整、一致
互联网主要使用传输层协议实现高质量实时数据连接与传输。根据 OSI 网络标准定义,网络由物理层、数据链路层、网络层、传输层、会话层、表示层和应用层组成。网络结构可简化为链路层、网络层、传输层和应用层用户接口,结构如图 2 所示。
TCP 和 UDP 均属于传输层,在进行内容传输时,可以采用 TCP 方案或 UDP 方案,项目中选用 UDP 协议 + 校验函数,可减少网络资源占用并保证数据完整与一致。
采用该解决方案的原因在于 UDP 相比 TCP 具有较好的实时性,工作效率高,适用于对高速传输和实时性有较高要求的通信或广播通信。且 UDP 可以实现一对多传输(每一条TCP 连接只能点到点,UDP 支持一对一、一对多、多对一和多对多的交互通信),减少了三次握手和确认,占用资源更少。UDP 的原则是尽最大努力交付,不保证可靠交付,其可靠性较 TCP 稍差。由于 UDP 可能会出现丢包和传输错误的现象,因此采用校验函数消除内容传输的错误。
UDP 与 TCP 相比,也容易出现丢包现象,但由于当下网络环境一般比较稳定且网速快(基本可达 100 Mbps),因此这一问题可忽略。若出现丢包,可采用校验函数解决。
针对 UDP 包容易丢包和出错的问题,采用校对函数保证传输内容的完整与一致。
设 UDP 包长度为 n B,共有 8n 位,即从0 位至(8n-1)位,采用如下函数对这 8n 位数据求值 :
只有传播端传输的 UDP 和终端接收的 UDP 包数据函数值完全相同,才表示在传输过程中没有产生丢包和错误(误码)。
如果传播端和接收端传输数据函数值计算结果不一致,则向传播端发起请求,重新传输并校验。
2.2 优化传输包大小 + 缓冲,实现延迟最小化
UDP 包在传输层不超过 4 kB,而在 Internet 中传输,不应大于 1 400 B。现实场景中进行了多次模拟实验,可以得到优化后的传输包。
横坐标是包的大小,分别为64 B,128 B,512 B,1 024 B等,纵坐标是在相应包大小情况下内容传输的延迟时间,单位为毫秒(ms)。笔者发现,当包较小时,延迟时间较大,当包较小时需要传输的内容会被分为多个包,而将传输内容封装成多个包会消耗较多时间,进行多次处理,且内容传输的次数更多,单片机处理速度低,造成延时负担 ;包较大时,延迟时间也较大,虽然传输过程占用时间不多,但发送和传输内容时会占用多种资源,导致占用更多时间,延迟较大。因此必须采用适合当前网络传输延迟时间的包的大小。包的大小在不同的网络环境中不一样,可由用户自行定义,以保证延迟最小。UDP 包大小与延时时长的关系见表 2 所列,其关系如图 3所示。
尽管 UDP 协议延时较小,但在不可靠网络条件下,这仍然是影响传输的重要因素。在这种情况下,通常在终端设置一个缓冲区减小网络的延时。接收到的数据包先存入缓冲区,当缓冲区中达到预定数量的包后,开始解压、解码播放。缓冲区的大小应随网络的变化而改变。所选缓冲区的大小至关重要,若缓冲区过小,一些最终能到达甚至即将到达的数据包可能会被认为丢包而遗弃,增大丢包的可能性 ;若缓冲区设定过大,将存在更大延时,将有可能超过人耳能够感觉的阈值。
2.3 针对 VBR音频文件实时重编码,减小传输延迟问题
音频文件比特率是指每秒传送的比特(bit)数,单位为bps,比特率越高,单位时间内传送的数据越多,音频、视频的质量就越好,编码后的文件就越大 ;如果比特率越低,则情况相反。
比特率分为固定比特率(Constant Bit Rate,CBR)和动态比特率或可变比特率(Variable Bit Rate,VBR)。动态比特率可减小文件容量,减轻传输压力。
在传输 CBR 音频文件时,未发现任何卡、顿、抖动(jitter)现象,但在传输 VBR 音频文件时却发现了上述现象。为此,项目采用前端重新编码(recoding)方法。
MP3文件由四部分组成,即 ID3V2+音频数据 +ID3V1+补充信息。其中,最为关键的是音频数据部分,音频数据部分以帧(Frame)的形式存在。MP3 文件结构见表 3 所列。
VBR 格式是 XING 公司推出的算法,若选 VBR 格式,那么 MP3 第一个有效帧的数据区中会出现 XING 标志,或INFO,VBRI 标志,表示此 MP3 是 VBR 文件。
在 VBR 格式的 MP3 第一帧中存放 MP3 文件的帧的总个数,比较容易获得播放总时间与 100 B 存放播放总时间。假 设 MP3 歌曲为 10 min,即 600 s,将其分为 n 段,则每两个相邻索引(index)的时间差为(600/n)s,通过该相邻索引即可将所有帧的数据读取并转为 PCM :
式中 :i 从0 开始计算,表示第一帧,直至 n-1,共 n 帧 ;bi 表示第 i 帧的比特率 ;ti 表示第 i 帧的时长(部分 MP3 这一值恒定不变)。
在前端重新编码,将其实时重新编码为 PCM 数据,再通过 UDP 包发送,发现卡、顿、抖动等现象消失了,很好地解决了 VBR 格式 MP3 的播放问题。
此外,笔者还尝试了另一种解决方案,即将 VBR 格式的MP3 通过 UDP 包发送到终端,由终端进行解码播放,发现延时较长,与终端的硬件性能和计算能力相关,因此建议将重新编码的工作放在前端进行,效果较好。
3 终端 CDN+人工智能识别,解决远程传输延迟问题
随着物联网广播的发展,其传输的内容越来越多,数据量也越来越大。尽管硬件的处理速度和带宽传输速度已较快,但是根据比尔· 安迪定理可知,硬件性能的提升总会被内容或软件消耗。同时,在网络中还有其他众多内容和信号需要传输,再加之电磁干扰,尤其在通过 2.4G WiFi 进行无线传输时,干扰更为强烈,传输速度远达不到标称量,造成内容传输的延迟。
项目中采用终端 CDN+人工智能识别方案解决这一问题 :将传输的内容分为结构化内容和非结构化内容,其中结构化内容即为背景音乐、国歌、体操音乐、眼保键操音乐、英语听力文件等“程序化的内容”,这些内容往往会重复播放,并已形成文件,一般不通过麦克风输入 ;非结构化内容则是仅播放一次的内容,比如校领导或班主任的晨会内容、平时的通知内容,这些内容一般通过麦克风输入。待终端接收到结构化内容后,在解压、解码、播放的同时将其保存在相应的文件中。
MWCS2018上 SD 协会公布了 SD 7.0 标准内容,包括 SD EXⅠ(SD Express)的全新标识,最高容量已提升到 128 TB,理论最高传输速度将达到 985 MB/s,已超过普通 SATA SSD。项目中采用了 SDXC 标准的 MicroSD 卡(即 TF 卡),其支持最高 2 TB 容量,目前理论上支持 3 种标准(UHS- Ⅲ卡未面世),UHS-Ⅰ的写入速度最高为 95 MB/s,读取速度最高为104 MB/s,保证最低传输速度为 10 MB/s ;UHS-Ⅱ的写入速度最高为 280 MB/s,读取速度最高为 312 MB/s,保证最低传输速度为 30 MB/s。在目前的网络环境情况下,该速度足够写入和读取。
在传输内容前,先计算播放文件的大小,然后在终端的SD 中寻找与播放文件大小相同的文件,接着对比文件六分之一处 8 个字节部分、四分之一处 8 个字节部分、二分之一处8 个字节部分。若完全相同,则取得传输端播放时间,并在播放时间到达时,播放终端 SD 卡中的文件,以减小延迟 ;如果有多个大小相同的文件,则找到第一个“完全相同”的文件,并播放该文件 ;如果找不到相同大小的文件或找不到“完全相同”的文件,则从播放端接收传输内容,并当终端接收到这些内容后,在解压、解码、播放的同时将其保存在相应的文件中。
计算方法如下:
(1)取得文件的长度 l,然后将此文件的长度 l 除以 8,若不能整除,则舍去余数,取模 L1=[l/8] ;
(2)从 L1*7 处取 8 个字节,记为 L1-8,将其转为 10 进制数,并对其取常用对数 lg,记为 lg(L1-8);
(3)从 L1*5 处取 8 个字节,记为 L1-6,将其转为 10 进制数,并对其取常用对数 lg,记为 lg(L1-6);
(4)从 L1*3 处取 8 个字节,记为 L1-4,将其转为 10 进制数,并对其取常用对数 lg,记为 lg(L1-4);
(5)从 L1 处取 8 个字节,记为 L1-2,将其转为 10 进制数,并对其取常用对数 lg,记为 lg(L1-2)。将 lg(L1-8),lg(L1-6),lg(L1-4)和 lg(L1-2)相加:lg(L1- 8)+lg(L1-6)+lg(L1-4)+lg(L1-2),得出数值进行比较,仅在得出数值相等时才表明文件“完全相同”。
4 结 语
通过本文所述方法,较好地解决了物联网广播中的内容传输延迟问题,希望能够为同行提供参考。