APP下载

嵌入式流媒体播放系统的设计与实现

2011-10-09苏征远戴祖诚

电子设计工程 2011年20期
关键词:内核嵌入式音频

苏征远,易 燕,戴祖诚

(昆明学院 物理科学与技术系,云南 昆明 650214)

随着云计算、物联网技术的兴起,特别是3G技术开始在我国广泛应用,使人们随时随地接入互联网,享受24小时在线的服务成为可能。同时为了满足人们对于更高质量影音感受的要求,多媒体信息处理技术正在以前所未有的速度迅猛发展,各种数字视频技术已经被应用于大众的日常生活中[1]。随着社会经济建设的需要,各种定制化、功能各异的嵌入式设备大量出现,不仅方便了人们的生活,也为各种技术应用找到了新的领域。现在,各种通信设备特别是智能手机等嵌入式终端设备的不断出现,使得基于多媒体的应用能够实现,如可视电话通信、网络实时手机会议、终端视频监控等[2]。

目前,基于TCP/IP的互联网视频点播已经成为了流行趋势,无论是技术上还是制度上都正趋于成熟,各项标准也逐渐开始建立。但是网络视频还都是在PC上观看,而对于屏幕狭小、网络连接不稳、资源有限的嵌入式设备来说,如何设计出符合嵌入式特点的流媒体播放系统成为了在线视频播放是否能够在嵌入式设备上成功的关键。嵌入式流媒体播放系统中,处理器和操作系统必须紧密配合,系统应该具备视频硬编解码能力、网络视频传输和调度、能够自动控制流速率等强大功能[3]。随着3G网络的进一步覆盖,网络质量的不断提高,嵌入式流媒体播放系统应用前景非常广阔,正成为行业新的利润增长点之一。

1 流媒体的工作原理

互联网是IP分组交换为基础进行连续的异步传输,待各个分组到达目的主机后再根据分组序列进行组包,但对于在线音频、视频文件,往往其所在存储空间很大,在网络中传输需要被分解为很多IP包,又网络状态甚至网络拓扑都是动态变化的,每个包经过的路由可能不尽相同,所以到达客户端的时间延迟也不尽相同,有时候先发的数据包还有可能后到。因为这个原因,必须使用缓存技术来弥补时间延迟和网络抖动的影响,最大程度保证数据包可以按正确的顺序排列,从而使多媒体数据不间断地连续输出,减小因为网络暂时拥塞而使播放出现停顿的影响。一般情况下,每个多媒体流所需的高速缓存容量并不庞大,再者高速缓存一般使用环形链表数据结构进行实现,不会出现溢出的情况;通过丢弃已经无用的、播放过的片段,将后续尚未播放的内容覆盖之前的内容就可以使高速缓存循环利用[4]。

如图1所示,现在比较流行的流媒体播放过程一般如下:用户打开Web浏览器选择某一流媒体Web服务器后,此时Web浏览器会与服务器之间使用HTTP协议交换数据以及控制信息,向用户呈现实时的多媒体播放信息,用户可以进行检索播放;当用户选中某一多媒体文件播放时,客户机上的Web浏览器启动流媒体客户端程序,使用HTTP链接从Web服务器获取多媒体文件的相关参数,并对客户端程序初始化。这些参数包括资源的位置信息、多媒体数据的编码类型以及流媒体服务器的相关参数。

图1 流媒体工作原理图Fig.1 The working principle diagram of streaming media

2 嵌入式播放终端设计与实现

流媒体播放系统分为服务器和嵌入式终端两部分,由于流媒体服务器可以使用常见的服务器搭载流行的流媒体服务软件实现,此处不再叙述。这里重点说明嵌入式终端的设计。硬件上,采用了ARM处理器进行核心控制,编解码芯片DM64X进行音视频的硬解码;嵌入式操作系统上,采用了稳定高效的Linux内核;应用软件上,采用了模块化的构建方法。

2.1 嵌入式终端硬件结构

系统的硬件结构示意图如图2所示。

图2 嵌入式终端硬件结构图Fig.2 Hardware structure of the embedded terminal

主控制器采用了三星公司的一款S3C2440微处理器,基于ARM920T内核,采用0.18 μm工艺制作CMOS宏单元和存储单元,同时采用 Advanced Microcontroller Bus Architecture(AMBA)新型总线结构,具有低功耗、精简和出色的全静态设计,所以特别适合于对成本和功耗敏感的应用。除此之外,他特别为各种外设准备了丰富的中断控制能力,包括高达60个中断源(其中,5个定时器,9个 UARTs,24个外部中断,1个看门狗定时器,4个 DMA,2个 ADC,1个LCD,1 个电池故障,1 个 IIC,2 个 SPI,1 个 SDI,2 个 USB,1个NAND,2个Camera和1个AC97音频),可以使用电平/边沿触发模式进行触发的外部中断源,可编程决定的边沿/电平触发极性,这些功能为紧急中断请求提供了快速中断(FIQ)服务[5]。

编解码芯片DM64X是美国德洲仪器(TI)公司生产的。TI公司是DSP芯片的行业龙头企业,这些年来它的众多产品多一直统治着这个行业,已经深入应用到了电子信息行业各个领域中。2003年TI发布了TMS320DM64X系列的视频DSP产品,2004年下半年批量供货,产品一经面世得到了数字视频行业的强烈关注。该芯片每个Video单元又分成A、B两个口,A/B口可以分别处理一路视频采集,因此DM642最多可以处理6路视频采集数据(不带音频)。如果将Video单元配置成Video out方式,则只能在A口输出,B口不可以,因此DM642最多可支持3路视频输出(不带音频)。如果同时处理音频,每一个视频单元可以处理两路立体声。DM642芯片功耗1.5 W,支持SDRAM最大为32 MB,同时也具有网络接口。

2.2 Linux内核移植

现在,移植Linux内核一般先要在内核的目录中选择一个与目标板硬件配置最接近的并且已经移植成功的目标目录作为模板[6]。之后可以针对硬件具体的差别进行相应的修改或对应打现成的移植补丁。这里,使用了Linux-2.6.33内核进行移植,并且根据本硬件系统的配置选择了SMDK2440样板作为移植的目标模板。在编译和配置内核前可以使用现有的patch包对Linux-2.6.33内核打补丁,并使用menuconfig工具对内核进行适当的剪裁。内核的裁减工作与在PC上对Linux内核的裁减工作类似,主要的工作是增添对自己需要的模块的支持,并且除去无用的模块,以使Linux内核更加适合于目标硬件系统。内核的编译可以通过修改根目录以及其他子目录下的Makefile直接完成,也可以通过在预编译的时候设置编译参数值时进行选定。编译前使用make menuconfig命令,开发者可以非常方便地增添和删除内核模块。

之后,使用make工具生成uImage镜像文件。uImage镜像文件可以使用U-Boot引导程序进行引导,装入内存。

Linux内核移植的整个过程如图3所示。

图3 内核移植流程Fig.3 Linux kernel porting flow

2.3 播放软件设计

整个流媒体播放器的软件架构如图4所示,共分为4个大的模块:

1)GUI模块 采用Qt库实现,完全的面向对象设计,界面易扩展,各种功能使用插件的形式完成;主要负责界面各种按钮的消息捕获、处理,完成播放器所有功能窗口的创建、销毁以及管理,当出现软件有错误发生时,向用户返回的友好错误提示。同时,播放在线流媒体的时候,可以显示当前播放媒体的状态信息。

2)Media Adapter Layer,媒体适配层 主要负责向GUI模块提供底层无关的流媒体播放API接口,与GUI交换媒体数据,以及响应用户在GUI上的操作,控制下层模块进行实际的执行。

图4 流媒体播放软件架构图Fig.4 Architecture of streaming media software

3)Source Control模块 主要负责通过 HTTP协议与Web服务器进行交互,接收相关媒体信息;通过RTSP协议与流媒体服务器交互,得到流媒体数据与控制信息;之后,根据嵌入式设备本身的特点进行预处理。

4)Core Module 主要负责音视频的分离,以及调用编解码芯片进行音视频的编解码,并实现音频、视频的同步输出。

3 结束语

随着互联网技术的突飞猛进,宽带互联网几乎覆盖了我国所有城市,人们对在线视频播放的兴趣也越来越大。“online anytime,surfing anywhere”,3G 时代的来 临使这一切成为了可能,也标志着未来互联网的发展方向。作为3G应用中的热门,嵌入式流媒体技术将会被广泛研究和推广,成为用户体验3G网络的流行手段。

[1]岑斌,肖刚,程振波,等.流媒体技术综述[J].中国有线电视,2003(22):29-31.

CEN Bin, XIAO Gang, CHENG Zhen-bo,et al.Synthetical study of streaming media[J].China Cable TV, 2003 (22):29-31.

[2]潘瑜青,张健,郭培源.流媒体中的Qos控制[J].微计算机信息,2008,24(1):256-257.

PAN Yu-qing, ZHANG Jian, GUO Pei-yuan.Qos control in streaming media[J].Micro Computer Information,2008,24(1):256-257.

[3]尹逊钰,王伟.流媒体技术的发展与应用[J].广播电视信息,2001(10):40-42.

YIN Xun-yu,WANG Wei.Development and application of streaming media technology [J].Radio and Television Information,2001(10):40-42.

[4]金海,邵艳明,韩宗芬.基于实时流动成的流媒体客户端[J].计算机工程,2004(6):192-194.

JIN Hai, SHAO Yan-ming, HAN Zong-fen.Streaming media client based on real time streaming protocols[J].Computer Engineering, 2004(6):192-194.

[5]涂刚,阳富民,胡贯荣.嵌入式操作系统综述[J].计算机应用研究,2000,17(11):4-6.

TU Gang, YANG Fu-min,HU Guan-rong.Overview of embedded operating systems [J].Computer Application Research,2000,17(11):4-6.

[6]龙盈盈,孟利民.构建嵌入式linux交叉编译环境[J].计算机与数字工程,2006,34(6):30-33

LONG Ying-ying,MENG Li-min.Constructing embedded Linux cross-compiling environment[J].Computer and Digital Engineering,2006,34(6):30-33.

猜你喜欢

内核嵌入式音频
强化『高新』内核 打造农业『硅谷』
基于嵌入式Linux内核的自恢复设计
必须了解的音频基础知识 家庭影院入门攻略:音频认证与推荐标准篇
Linux内核mmap保护机制研究
基于Daubechies(dbN)的飞行器音频特征提取
搭建基于Qt的嵌入式开发平台
音频分析仪中低失真音频信号的发生方法
嵌入式软PLC在电镀生产流程控制系统中的应用
微生物内核 生态型农资
Pro Tools音频剪辑及修正