近两年来,车载导航体系在国内悄然兴起,据专家猜测,我国车载商场在发动初期需求约为55 万台,折合人民币约27.6 亿。而从长远来看,规划将抵达千亿元人民币。可是,当时车载终端的视频播映才干大多比较单薄,能够支撑MPEG-4等新式编码格局的只要少量厂家。而且因为嵌入式体系独有的特色,车载产品存储空间一般都很小,只要流式文件边下载边播映的特性才干满意车载终端上音、视频的播映要求,实时的为车主播映改写的信息。本产品是依据I P 网络的嵌入式流媒体播映器,不光能够支撑MPEG- 4 和干流的流媒体格局,而且能够经过软件晋级支撑未来的媒体格局。
播映器的底层开发环境
播映器的硬件环境包含:Intel PXA270开发渠道Sophia (简称sophia 板) 和支撑802.11a、USB接口的10Mb/s无线网卡。sophia 板以Intel 公司的嵌入式处理器PXA270 为中心,伴以2700G 多媒体加快芯片完成视频加快与3D加快,体系的硬件模块如图1所示:网络操控模块将从网卡读出的数据送入PXA270 和Intel 2700G模块处理,解压后的数据在LCD或RGB显示器上播映。
播映器的模块区分
sophia 板运用的嵌入式Linux内核是由依据linux-2.4.20内核的MontaVista linux编译而成,文件体系是针对Flash 无缓冲机制的jffs2 文件体系。一起,sophia 板的开发商还供给了BSP、中心件等很多的软、硬件资源,其间通讯接口中的网络操控模块、解码模块和播映器模块是体系开发的要害。整个体系的模块区分如图 2 所示:Bootloader 在硬件物理层之上进行最底层的引导,它归于板级支撑包BSP 的一部分。BSP担任直接和底层的硬件设备树立联络,一起,它也能够包含某些驱动。不过,在sophia 的软件体系模块中,网卡的驱动是作为嵌入式体系内核的模块之一动态加载的。嵌入式中心件坐落操作体系和应用程序的中心环节,供给了到程序模块、组件库的联接,体系的解码模块和播映器模块都是在它之上开发的。
模块的完成
体系完成能够被分为以下几个过程:
1) 嵌入式Linux 内核的移植和编译、文件体系的装置;
2) 视频图画解紧缩模块的完成;
3) 播映模块的完成;
嵌入式Linux 内核的移植和文件体系、图形界面体系的装置
作业在sophia 板上的嵌入式Linux 内核对boot-loader、内核、文件体系的加载过程和穿插编译环境的树立办法与其它嵌入式渠道的开发过程类似具有必定的通用性,详细的树立办法能够参考文献。可是有两点要留意:
1) 在运用make menuconfig定制内核时要让内核支撑无线网卡,详细过程是在USB Support 装备菜单中挑选USB network devices,再于子菜单中挑选wireless,使得在内核中参加对USB 无线网卡的驱动支撑。
2) 在图形界面体系的编译与装置中留意树立工程后,要将选项中的gettext 选项勾掉,不然程序无法顺畅编译。
视频图画解压模块的完成
由网络操控模块获取的数据在体系中是以流数据的方法存在的,因而,首要要对流式文件进行解压。一起,为了进步传输功率然后进步视频图画质量,网络上传输的原始视频图画都进行了紧缩编码,所以,还需求依据编码格局进行相应解码。本体系不光支撑常见的MP1、MP2、MP3 和WAV 音频文件格局,还能够对先进的MPEG- 4视频图画紧缩编码文件解紧缩。
流式文件的解紧缩
依照播映器所接入的车载导航网络的要求,本计划要为当时干流的流文件格局:ASF、RM供给解压才干。
ASF 文件解压
ASF 文件根本的安排单元叫做ASF 目标,每个目标由三个域组成:128 位的全球仅有的目标标识符域、64 位整数的目标巨细域和可变长的目标数据域。ASF 文件的高层逻辑结构也包含三部分:头目标、数据目标和索引目标。其间头目标是必需的而且有必要放在每一个ASF 文件的最初部分,它包含了许多大局信息,必定要在数据目标之前被接纳方接纳并解说;数据目标也是必需的,且一般情况下紧跟在头目标之后,包含了所有待播映的数据;索引目标是可选的。
RM文件解压
组成RM文件的根本部件是块,每个块包含三个字段:指明块标识符的四字符编码、块中限制数据巨细的32 位数值和数据块部分。块标识符用来仅有的标识每一个块。同样地,RM文件的高层逻辑结构也由三部分组成:文件报头部分、文件数据部分和文件索引部分。因为 RealMedia 文件格局是一种加标志的文件格局,块的次序没有明确规定,但RealMedia 文件报头有必要是文件的第一个块。
MPEG- 4 视频图画的解压
在几种开放源代码的MPEG- 4 解码软件中,作者挑选xvidcore 作为体系中视频图画解压模块的中心算法。xvid 是一个高效且可移植的编码软件,体系选用的是现在最新的版别xvidcore- 1.1.0。xvid 支撑SimpleProfile 和Advanced Profile,支撑I/P Frames、B -Frames、Interlacing 和GMC,是现在比较盛行的MPEG- 4 编码软件。对xvidcore- 1.0.1 进行穿插编译有以下首要过程:
1) 解紧缩xvidcore 源代码tar- zxvf xvidcore- 1.1.0.tar;
2)设置环境变量export xvidcore= “ the path of xvidcore”;
3)生成makefile ./configure- – host=localhost- – build=arm- linux- gcc;
4) 编译源代码make;make install;
将穿插编译生成的库文件libxvidcore.so.* 拷贝到穿插编译器作业目录的./local/lib 子目录中,该库文件为体系的其它模块供给了编程接口。
解码格局的可扩展性
播映器支撑的文件格局越多,其生命力也就越强壮,PXA270 嵌入式处理器加上2700G 多媒体加快芯片的调配计划为媒体播映供给了强壮的硬件支撑,经过软件晋级,理论上能够支撑任何媒体格局。本计划的做法是:在播映器中完成一个索引表类,将来依据需求新添加的编码格局作为独立的类注册到索引表中。依据linux 的c++解码类源代码能够由网上开放源码的解码器网站下载,体系中的MP1,MP2,MP3 和WAV 的解码便是选用这种办法完成的。
播映模块完成
文件的输入
在播映器体系中,文件的来历有两种:由网卡读入存储器后播映或经过其它数据传输途径写入存储器,在存储器中直接播映。sophia 板供给了网卡的驱动模块,能够运用指令modprobe usbcore 和modprobe usbwlnc动态加载,为数据从网卡经由操作体系抵达播映进程供给一个全双工的通道。数据的处理由播映器中的stream input 类来完成。
流媒体协议
完成流式传输有两种办法:实时流式传输和次序流式传输,体系运用的是实时流式传输,需求标准化的流媒体协议来确保客户机和专用的流媒体服务器之间进行通讯。依据流媒体协议的功用能够分为两类:
根本网络协议
为媒体传输供给根本的网络服务支撑,因为TCP需求较多的开支,不太合适传输实时数据。在流式传输的完成计划中,选用RTSP/TCP 来传输操控信息,而用RTP/UDP 来传输实时声响、图画数据。
传输协议
传输协议包含RTP、RTCP、RTSP 和RSVP,RTP和RTCP 操控端到端网络数据的传输,RTSP 供给话路操控的功用,RSVP 是可选的,它为播映进程在网上预先请求一部分网络资源( 即带宽),能在必定程度上为流媒体在Internet 上的传输供给特别服务质量QoS。为流媒体规划的协议栈如图3 所示:从UDP/TCP层得到的数据包处理后得到打包的RTP 数据流,经过RTP/RTCP/RTSP 层别离出守时和同步信息以及包的序列号,将读出的流文件交给ASF 和RM解码模块。
媒体的播映
播映器以自由软件mplayer 为蓝本,处理流程如图4所示:
1) 假如数据是从网卡取得的,调用stream input模块进行处理。Stream input 模块依据流媒体协议,运用socket 和多媒体服务器进行通讯,输入的流数据放入缓冲池中并依据流文件的格局对它进行ASF 或RM解紧缩;
2) 解压后的文件依据文件的类型查找索引表调用不同的解码类将数据转化为一种一致的中心格局raw,生成相应的file,由播映器main 函数播映。假如文件已保存在存储器中,能够越过第一步,直接履行第二步流程。
小结
本文提出了一种依据Intel PXA270 嵌入式微处理器和嵌入式Linux 的流媒体播映器体系完成计划,特有的索引表结构使得播映器能够经过软件晋级添加新的编码格局,纯软件的完成方法大大缩减了研制周期。经测验,在带宽 50Kb/s~100Kb/s、缓存256k 的条件下,体系对CIF(352×288) 视频格局、QCIF(176×144)视频格局和音频格局的文件播映失帧率在5%以下,播映流通,满意了现在车载终端中嵌入式流视频播映的要求。