早期的智能小区广播大多采用模拟方式.如调幅、调频广播。这种方式的优点是减少了布线的麻烦,缺点是容易在传输过程中受空中杂波的干扰。随着数字技术、多媒体技术、网络技术的发展,数字网络音频广播已悄然兴起。
数字网络广播将模拟信号转换为数字信号进行处理和传输。由于它采用了纠错编码技术,消除了模拟方式的噪声干扰,从而保证了传输的可靠性。传统广播只能在规定的频率和发射功率内进行传播,覆盖范围受到制约。
而数字网络广播却可以通过网络将广播发送至网络用户,广播范围大幅度增大,并且其接收音质好,可令听众享受到CD质量的广播节目。网络广播抗干扰能力强,信号几乎零失真。目前,智能小区已开始利用千兆以太局域网进行音频广播。
网络广播一般分为两种方式:
(1)下载播放,即先把数据通过网络下载在本地,然后再用媒体播放器播放。这种广播的优点是播放与网络的传输速率无关,播放效果好,允许分段多次续传下载,下载后可以反复播放。缺点是必须等待文件完全下载后才能播放,时间较长,且用户端要有较大的存储容量。
(2)流式播放。流是连续传输的数据,流式传输方式是将整个多媒体文件经过特殊的压缩方式分成一个个压缩包,由服务器向用户计算机连续实时传输。它采用边下载边播放的方式。与下载播放方式相比。流式播放不仅使启动延时大幅度缩短,而且对系统缓存容量的需求也大大降低。流式播放为实时广播提供了保证。
本文设计实现了一种嵌入式MP3流媒体广播系统,用于智能小区的媒体广播。系统的硬件采用嵌入式结构,优点是体积小、成本低、占有资源少、管理简单、维护容易。因为MP3是目前网络上音频播放文件最普遍的格式,所以音频数据格式采用MP3。与其他音频数据格式(如PCM、VOC、MIDI等)相比,MP3具有较高的压缩率和不逊于CD的音频质量。数据传输和播放采用流媒体形式。采用MF3流媒体广播的优点是兼容性强、实时性高、连续性好、数据传输和广播连续进行、无须数据下载,解决了掉包、时断时续、数据下载等待等问题。
1 嵌入式MP3流媒体网络广播系统的设计
在过去的十年中,嵌入式系统的开发与应用方式发生了很大变化,其应用已由工业、通信和网络扩展到与数字多媒体相关的各个消费领域。过去,嵌入式系统是一个孤立的、资源有限、功能较少、用途单一的系统,各自拥有独特的显示方式和用户界面。它们的生产商追求在有限的价格上满足一定的功能要求,通常采用功能并不强大的CPU,尽可能地压缩系统性能。今天,人们将嵌入式系统用在智能化和互联化的系统中是希望它们能够通过互联网、无线或其他方式相互连接,采用相同的方式.运行很多相同的应用程序,实现多种智能化的功能。
由嵌入式系统的结构可以看出,在实时操作系统(RTOS)之上建立嵌入式系统的应用程序非常必要。嵌入式系统应用软件的开发与研究,一直都是非常重要及有意义的课题。
本系统就是基于嵌入式Linux操作系统开发的一个应用系统,其功能是实现智能小区中MP3流媒体网络广播。系统主要由服务器端和客户终端两部分组成。要创建MP3流媒体广播嵌入式系统,已有的Linux下的开放源码工具不符合嵌入式系统的工作条件和要求(如采用icecasl和ices进行创建),因此,必须对广播的服务器端和客户终端进行软件的研究和设计。本系统的服务器端在Windows环境下工作,界面用VC编程实现。嵌入式客户终端的操作界面应用qt-embedded库实现。
在小区的物业管理中心安装了MP3广播服务器。服务器端由管理中心人员操作。由于Windows系统的普及性及易操作性,所以在服务器端选择以Windows作为系统平台运行MP3的播放程序。为了让用户能有更多的选择,系统实现了多路的MP3广播。对于多路的发送与接收,主要利用RTP和RTCP所用端口号分别监听。
每一路分别采用一个独立的RTP和RTCP端口号,与接收端的接收路数的端口号相对应。这样才能使每一路的数据在网络中不交叉,各自独立。考虑到网络的带宽以及使用需求,本设计采用了8路通道以保证数据流能顺畅地发送。
在系统文件中,将需广播的歌曲分别放置到8个不同目录(以后对歌曲的管理都在相应的文件夹下进行)中,每路播放分别对应不同的目录,启动服务器端程序即启动8路播放线程。首先分别读出8路所对应文件夹下的所有MP3文件,每路都产生随机数以便歌曲被随机播放。
随后每路利用不同的RTP和RTCP端口号分别建立RTP会话。MP3数据被封装为一个个的RTP包,不断循环地送往小区局域网络,直到一首歌曲发送完成,开始对下一首歌曲文件进行封包发送。这样不断循环,从而实现随机循环广播8路歌曲的目的。服务器端的结构如图1所示。
在小区各用户家中安装系统客户终端,客户终端设计成通过小区局域网同时接收8路音乐广播,并且可以对这8路音乐进行随意选择和切换收听。客户端在嵌人式环境下运行MP3广播接收程序。
用户通过终端按键启动程序,即启动两个线程。一个线程建立RTP会话及对8路分别会话进行相对应的设置,然后从网络循环接收MP3数据流并将数据流写入缓存(这里缓存采用循环队列的概念);另一个线程则首先对声卡参数(如声卡采样率、声道等)进行设置,然后不断地从缓存(循环队列)读出MP3数据,随后对数据流进行实时解码并写入声卡,从而达到接收广播并播放的目的。两个线程同时进行,实现了边从网络接收边播放数据的功能,体现了系统的实时性。客户终端结构流程如图2所示。
2 嵌入式MP3流媒体网络广播系统的实现
2.1 系统实现环境
2.1.1 软件环境
在应用于智能小区的嵌入式MP3流媒体广播系统的实现中,服务器端基于Windows平台,客户终端系统基于Linux内核。Linux操作系统可应用于多种硬件平台,原型可以在标准平台上开发后移植到具体的硬件上,使软件与硬件的开发过程加快。
本系统在X86上开发后再移植到硬件平台上。Linux的高度模块化使添加部件非常容易,而且是免费开源,定会节省大量的开发费用。LJnux的优势还体现在可靠性和软件规模方面。Linux可以根据实际需要进行裁剪,并且具备强大的内存保护功能,可靠性高。如今,业界已经达成共识:嵌入式Linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。
2.1.2 硬件环境
在应用于智能小区的嵌入式MP3流媒体广播系统的实现中,嵌入式CPU采用GT2000,其CPU核心是方舟2号(Area2)。GT2000集成了高性能CPU核心和PC架构南北桥中的大部分功能,是信息终端设备和网络设备的理想解决方案。CT2000在40OMHz主频下运行时最大功耗只有360毫瓦,是业界最具竞争力的高性能、低功耗微处理器产品。
方舟开发板Draco则为基于GT2000的产品开发提供了一个易于扩充、易于配置的平台,本系统采用了Draco开发板。一个全新体系结构的开发与应用需要高质量编译器工具链的支持。方舟CPU作为一个全新的RISC指令集体系结构,编译器的支持至关重要。
方舟科技移植增强了GNU编译开发环境,使其对方舟CPU体系结构提供了全方位的支持。其GNU编译工具链覆盖了编译技术和开发环境的方方面面,代码效率及可移植性在业界处于领先地位,已成为Linux操作系统下的标准开发环境,也是嵌人式CPU开发环境事实上的工业标准。
2.2 MP3流媒体传输协议
在应用于智能小区的嵌入式MP3流媒体广播系统的实现中,传输方式采用流式传输。实现流式传输的一个重要条件是要有合适的传输协议。RTP(Real-timeTransport Protocol)正是作为这样一种适时的传输协议而出现的,它是进行实时流媒体传输的标准协议和关键技术。
TRP协议是用于Intemet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTCP控制协议。RTP是通过在UDP上工作来进行数据传辖的,但也可以在其他协议上(如TCP)工作。而控制协议只能使用RTCP。
应用程序开始一个RTP会话时将使用两个端口,一个给RTP,另一个给RTCP。TRP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分。RTP与RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。相对于传统的传输协议,RTP协议更能保证数据的实时传输。
在本系统实现中,采用Linux下的LIVE库进行数据传输。在Linux下,有很多基于RTP协议的库,如LIBRTP,JRTPLIB、LIVE库等。LIVE库是一个基于RTP/RTCP/RTSP/STP协议的流媒体传输库,其移植性好,既可以在Unix平台上编译,也可以在Windows平台以及其他一些系统平台上编译。它适合于嵌入式和低功耗场合的流媒体应用。
2.3 MP3流媒体解码
在应用于智能小区的嵌入式MP3流媒体广播系统的实现中,用户接收端接收到的数据是网络传来的MP3数据流,因此,先对MP3数据流解码,然后才能写入声卡播放。
MP3解码过程是先将MP3数据帧解包,然后用Huffman解码解出位分配信息。接着在逆变换中利用频谱系数,在合成滤波器中将32个子带合并成一个宽带信号,18个频谱值执行32次改进型离散余弦逆变换(IMDCT)。再将生成的576个频谱值变换成长度为32的18个连续频谱,通过18次运算,多相位合成滤波器将这些频谱转换到时域完成波形重构,生成PCM音频数据。多相位滤波器组包含一个频率映射运算(例如矩阵相乘)和一个有512个系数的FIR滤波器。MP3流媒体解码的流程如图3所示。
3 系统的试验结果与讨论
流式传输的实现需要缓存,在传输中实时MP3音频文件被拆分为许多数据包。由于网络动态变化,各个数据包选择的传输路由不尽相同,所以到达客户端时间延迟也就不等,甚至有先发的包后到及未到的情况。如果直接播放这种数据流会引起音频的延迟和抖动,因此采用缓存系统。缓存大小的设置直接影响播放质量。
本系统数据缓冲区采用了循环队列的概念,其优点为在不断顺序读取数据的同时又不断将数据写入队列,因此使得缓冲大小相对稳定,从而保证数据的连续性。在数据发送接收的最初,由于数据量少,声音可能出现断续,此时,队列数据需达到一定的数据量时才往声卡写入。此后往队列不断写入数据并将队列的数据不断地写入声卡,从而保证了数据流的连续性。因此测试收听音质效果好,对于每一帧的数据大小,也就是每次写入缓冲队列的数据,程序会根据歌曲文件的大小自动对其加以调整以最适合传输。
例如3.3MB的文件每一帧数据被发送时大小为l254B,而6.1MB的文件每一帧数据大小则为731B。另外,在嵌入式客户终端操作时采用图形界面方式。由于要照顾到不同的使用者,如老人、小孩,所以就要使操作简单方便。本设计中只利用简单的几个按键就能直观方便地进行操作,从而使应用操作比以往产品的复杂操作更加人性化,应用范围更加广泛。
在实验测试中。模拟了几种丢帧情况下的音质效果。实验中,故意让接收数据进入队列时丢帧,做了几组测试,可以观察到丢帧概率不同时的声音断续情况,如表1所示。
从表l可以看出:丢帧率越小,断续出现的时间间隔越大,也就是数据越流畅。而在不丢帧的情况下,亦即实验中程序运行情况下,播放基本没有断续,声音流畅、音色较好,达到了系统功能要求。
从系统实现及实现结果看,系统达到了工程设计要求。在发送MP3数据流时,可以同时发送多路数据,在接收MP3广播时,能顺利切换各个频道,并且音质流畅,达到了较好接收MP3数据流的效果。系统操作简单,适应于各种层次的用户。本系统除了能很好地适用于智能小区外,还可应用于其他一些局域网的场合,如校园、酒店等。系统具有成本低、体积小、对MP3数据流可进行实时解码等优点,将会被越来越多地应用于人们的生活中。
早期的智能小区广播大多采用模拟方式.如调幅、调频广播。这种方式的优点是减少了布线的麻烦,缺点是容易在传输过程中受空中杂波的干扰。随着数字技术、多媒体技术、网络技术的发展,数字网络音频广播已悄然兴起。
数字网络广播将模拟信号转换为数字信号进行处理和传输。由于它采用了纠错编码技术,消除了模拟方式的噪声干扰,从而保证了传输的可靠性。传统广播只能在规定的频率和发射功率内进行传播,覆盖范围受到制约。
而数字网络广播却可以通过网络将广播发送至网络用户,广播范围大幅度增大,并且其接收音质好,可令听众享受到CD质量的广播节目。网络广播抗干扰能力强,信号几乎零失真。目前,智能小区已开始利用千兆以太局域网进行音频广播。
网络广播一般分为两种方式:
(1)下载播放,即先把数据通过网络下载在本地,然后再用媒体播放器播放。这种广播的优点是播放与网络的传输速率无关,播放效果好,允许分段多次续传下载,下载后可以反复播放。缺点是必须等待文件完全下载后才能播放,时间较长,且用户端要有较大的存储容量。
(2)流式播放。流是连续传输的数据,流式传输方式是将整个多媒体文件经过特殊的压缩方式分成一个个压缩包,由服务器向用户计算机连续实时传输。它采用边下载边播放的方式。与下载播放方式相比。流式播放不仅使启动延时大幅度缩短,而且对系统缓存容量的需求也大大降低。流式播放为实时广播提供了保证。
本文设计实现了一种嵌入式MP3流媒体广播系统,用于智能小区的媒体广播。系统的硬件采用嵌入式结构,优点是体积小、成本低、占有资源少、管理简单、维护容易。因为MP3是目前网络上音频播放文件最普遍的格式,所以音频数据格式采用MP3。与其他音频数据格式(如PCM、VOC、MIDI等)相比,MP3具有较高的压缩率和不逊于CD的音频质量。数据传输和播放采用流媒体形式。采用MF3流媒体广播的优点是兼容性强、实时性高、连续性好、数据传输和广播连续进行、无须数据下载,解决了掉包、时断时续、数据下载等待等问题。
1 嵌入式MP3流媒体网络广播系统的设计
在过去的十年中,嵌入式系统的开发与应用方式发生了很大变化,其应用已由工业、通信和网络扩展到与数字多媒体相关的各个消费领域。过去,嵌入式系统是一个孤立的、资源有限、功能较少、用途单一的系统,各自拥有独特的显示方式和用户界面。它们的生产商追求在有限的价格上满足一定的功能要求,通常采用功能并不强大的CPU,尽可能地压缩系统性能。今天,人们将嵌入式系统用在智能化和互联化的系统中是希望它们能够通过互联网、无线或其他方式相互连接,采用相同的方式.运行很多相同的应用程序,实现多种智能化的功能。
由嵌入式系统的结构可以看出,在实时操作系统(RTOS)之上建立嵌入式系统的应用程序非常必要。嵌入式系统应用软件的开发与研究,一直都是非常重要及有意义的课题。
本系统就是基于嵌入式Linux操作系统开发的一个应用系统,其功能是实现智能小区中MP3流媒体网络广播。系统主要由服务器端和客户终端两部分组成。要创建MP3流媒体广播嵌入式系统,已有的Linux下的开放源码工具不符合嵌入式系统的工作条件和要求(如采用icecasl和ices进行创建),因此,必须对广播的服务器端和客户终端进行软件的研究和设计。本系统的服务器端在Windows环境下工作,界面用VC编程实现。嵌入式客户终端的操作界面应用qt-embedded库实现。
在小区的物业管理中心安装了MP3广播服务器。服务器端由管理中心人员操作。由于Windows系统的普及性及易操作性,所以在服务器端选择以Windows作为系统平台运行MP3的播放程序。为了让用户能有更多的选择,系统实现了多路的MP3广播。对于多路的发送与接收,主要利用RTP和RTCP所用端口号分别监听。
每一路分别采用一个独立的RTP和RTCP端口号,与接收端的接收路数的端口号相对应。这样才能使每一路的数据在网络中不交叉,各自独立。考虑到网络的带宽以及使用需求,本设计采用了8路通道以保证数据流能顺畅地发送。
在系统文件中,将需广播的歌曲分别放置到8个不同目录(以后对歌曲的管理都在相应的文件夹下进行)中,每路播放分别对应不同的目录,启动服务器端程序即启动8路播放线程。首先分别读出8路所对应文件夹下的所有MP3文件,每路都产生随机数以便歌曲被随机播放。
随后每路利用不同的RTP和RTCP端口号分别建立RTP会话。MP3数据被封装为一个个的RTP包,不断循环地送往小区局域网络,直到一首歌曲发送完成,开始对下一首歌曲文件进行封包发送。这样不断循环,从而实现随机循环广播8路歌曲的目的。服务器端的结构如图1所示。
在小区各用户家中安装系统客户终端,客户终端设计成通过小区局域网同时接收8路音乐广播,并且可以对这8路音乐进行随意选择和切换收听。客户端在嵌人式环境下运行MP3广播接收程序。
用户通过终端按键启动程序,即启动两个线程。一个线程建立RTP会话及对8路分别会话进行相对应的设置,然后从网络循环接收MP3数据流并将数据流写入缓存(这里缓存采用循环队列的概念);另一个线程则首先对声卡参数(如声卡采样率、声道等)进行设置,然后不断地从缓存(循环队列)读出MP3数据,随后对数据流进行实时解码并写入声卡,从而达到接收广播并播放的目的。两个线程同时进行,实现了边从网络接收边播放数据的功能,体现了系统的实时性。客户终端结构流程如图2所示。
2 嵌入式MP3流媒体网络广播系统的实现
2.1 系统实现环境
2.1.1 软件环境
在应用于智能小区的嵌入式MP3流媒体广播系统的实现中,服务器端基于Windows平台,客户终端系统基于Linux内核。Linux操作系统可应用于多种硬件平台,原型可以在标准平台上开发后移植到具体的硬件上,使软件与硬件的开发过程加快。
本系统在X86上开发后再移植到硬件平台上。Linux的高度模块化使添加部件非常容易,而且是免费开源,定会节省大量的开发费用。LJnux的优势还体现在可靠性和软件规模方面。Linux可以根据实际需要进行裁剪,并且具备强大的内存保护功能,可靠性高。如今,业界已经达成共识:嵌入式Linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。
2.1.2 硬件环境
在应用于智能小区的嵌入式MP3流媒体广播系统的实现中,嵌入式CPU采用GT2000,其CPU核心是方舟2号(Area2)。GT2000集成了高性能CPU核心和PC架构南北桥中的大部分功能,是信息终端设备和网络设备的理想解决方案。CT2000在40OMHz主频下运行时最大功耗只有360毫瓦,是业界最具竞争力的高性能、低功耗微处理器产品。
方舟开发板Draco则为基于GT2000的产品开发提供了一个易于扩充、易于配置的平台,本系统采用了Draco开发板。一个全新体系结构的开发与应用需要高质量编译器工具链的支持。方舟CPU作为一个全新的RISC指令集体系结构,编译器的支持至关重要。
方舟科技移植增强了GNU编译开发环境,使其对方舟CPU体系结构提供了全方位的支持。其GNU编译工具链覆盖了编译技术和开发环境的方方面面,代码效率及可移植性在业界处于领先地位,已成为Linux操作系统下的标准开发环境,也是嵌人式CPU开发环境事实上的工业标准。
2.2 MP3流媒体传输协议
在应用于智能小区的嵌入式MP3流媒体广播系统的实现中,传输方式采用流式传输。实现流式传输的一个重要条件是要有合适的传输协议。RTP(Real-timeTransport Protocol)正是作为这样一种适时的传输协议而出现的,它是进行实时流媒体传输的标准协议和关键技术。
TRP协议是用于Intemet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTCP控制协议。RTP是通过在UDP上工作来进行数据传辖的,但也可以在其他协议上(如TCP)工作。而控制协议只能使用RTCP。
应用程序开始一个RTP会话时将使用两个端口,一个给RTP,另一个给RTCP。TRP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分。RTP与RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。相对于传统的传输协议,RTP协议更能保证数据的实时传输。
在本系统实现中,采用Linux下的LIVE库进行数据传输。在Linux下,有很多基于RTP协议的库,如LIBRTP,JRTPLIB、LIVE库等。LIVE库是一个基于RTP/RTCP/RTSP/STP协议的流媒体传输库,其移植性好,既可以在Unix平台上编译,也可以在Windows平台以及其他一些系统平台上编译。它适合于嵌入式和低功耗场合的流媒体应用。
2.3 MP3流媒体解码
在应用于智能小区的嵌入式MP3流媒体广播系统的实现中,用户接收端接收到的数据是网络传来的MP3数据流,因此,先对MP3数据流解码,然后才能写入声卡播放。
MP3解码过程是先将MP3数据帧解包,然后用Huffman解码解出位分配信息。接着在逆变换中利用频谱系数,在合成滤波器中将32个子带合并成一个宽带信号,18个频谱值执行32次改进型离散余弦逆变换(IMDCT)。再将生成的576个频谱值变换成长度为32的18个连续频谱,通过18次运算,多相位合成滤波器将这些频谱转换到时域完成波形重构,生成PCM音频数据。多相位滤波器组包含一个频率映射运算(例如矩阵相乘)和一个有512个系数的FIR滤波器。MP3流媒体解码的流程如图3所示。
3 系统的试验结果与讨论
流式传输的实现需要缓存,在传输中实时MP3音频文件被拆分为许多数据包。由于网络动态变化,各个数据包选择的传输路由不尽相同,所以到达客户端时间延迟也就不等,甚至有先发的包后到及未到的情况。如果直接播放这种数据流会引起音频的延迟和抖动,因此采用缓存系统。缓存大小的设置直接影响播放质量。
本系统数据缓冲区采用了循环队列的概念,其优点为在不断顺序读取数据的同时又不断将数据写入队列,因此使得缓冲大小相对稳定,从而保证数据的连续性。在数据发送接收的最初,由于数据量少,声音可能出现断续,此时,队列数据需达到一定的数据量时才往声卡写入。此后往队列不断写入数据并将队列的数据不断地写入声卡,从而保证了数据流的连续性。因此测试收听音质效果好,对于每一帧的数据大小,也就是每次写入缓冲队列的数据,程序会根据歌曲文件的大小自动对其加以调整以最适合传输。
例如3.3MB的文件每一帧数据被发送时大小为l254B,而6.1MB的文件每一帧数据大小则为731B。另外,在嵌入式客户终端操作时采用图形界面方式。由于要照顾到不同的使用者,如老人、小孩,所以就要使操作简单方便。本设计中只利用简单的几个按键就能直观方便地进行操作,从而使应用操作比以往产品的复杂操作更加人性化,应用范围更加广泛。
在实验测试中。模拟了几种丢帧情况下的音质效果。实验中,故意让接收数据进入队列时丢帧,做了几组测试,可以观察到丢帧概率不同时的声音断续情况,如表1所示。
从表l可以看出:丢帧率越小,断续出现的时间间隔越大,也就是数据越流畅。而在不丢帧的情况下,亦即实验中程序运行情况下,播放基本没有断续,声音流畅、音色较好,达到了系统功能要求。
从系统实现及实现结果看,系统达到了工程设计要求。在发送MP3数据流时,可以同时发送多路数据,在接收MP3广播时,能顺利切换各个频道,并且音质流畅,达到了较好接收MP3数据流的效果。系统操作简单,适应于各种层次的用户。本系统除了能很好地适用于智能小区外,还可应用于其他一些局域网的场合,如校园、酒店等。系统具有成本低、体积小、对MP3数据流可进行实时解码等优点,将会被越来越多地应用于人们的生活中。
举报