综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章消费电子正文
 
基于Intel PXA270平台的嵌入式流媒体播放器设计
发布日期:2005-11-01 作者:濮琼 黄建华 来源:微计算机信息

摘要:随着车载导航系统的飞速发展,具有视频播放能力的车载终端逐渐成为新的热点。本文根据这一需求设计了一种嵌入式流媒体播放器,方案基于 Intel PXA270 的硬件平台及嵌入式 Linux 的软件平台,采用无线上网方式,可支持ASF、RM格式的流文件解压,能够播放常见的MP1、MP2、MP3、WAV音频和先进的MPEG-4视频,并可通过软件升级加入对其它格式的支持。
关键词:PXA270  MPEG-4  流媒体

1 播放器概述


    近两年来,车载导航系统在国内悄然兴起,据专家预测,中国车载市场在启动初期需求约为55万台,折合人民币约27.6亿。而从长远来看,规模将达到千亿元人民币。但是,当前车载终端的视频播放能力大多比较薄弱,能够支持MPEG-4等新式编码格式的只有少数厂家。而且由于嵌入式系统独有的特点,车载产品存储空间一般都很小,只有流式文件边下载边播放的特性才能满足车载终端上音、视频的播放要求,实时的为车主播放刷新的信息。本产品是基于I P 网络的嵌入式流媒体播放器,不但可以支持MPEG-4和主流的流媒体格式,而且可以通过软件升级支持未来的媒体格式。
1.1 播放器的底层开发环境
    播放器的硬件环境包括:Intel PXA270开发平台Sophia(简称sophia板)和支持802.11a,USB接口的10Mb/s无线网卡。sophia 板以Intel公司2003年底推出的强大的嵌入式处理器PXA270为核心,伴以2700G多媒体加速芯片实现视频加速与3D加速,系统的硬件模块[10] [11]如图1所示:网络控制模块将从网卡读出的数据送入PXA270和Inter2700G模块处理,解压后的数据在LCD或RGB显示器上播放。
1.2 播放器的模块划分


    sophia 板使用的嵌入式Linux 内核是由基于linux-2.4.20内核的MontaVista linux编译而成,文件系统是针对Flash无缓冲机制的jffs2文件系统。同时,sophia板的开发商还提供了BSP、中间件等大量的软、硬件资源,其中通信接口中的网络控制模块、解码模块和播放器模块是系统开发的关键。整个系统的模块[7] [8]划分如图2 所示:Bootloader在硬件物理层之上进行最底层的引导,它属于板级支持包BSP的一部分。BSP负责直接和底层的硬件设备建立联系,同时,它也可以包含某些驱动。不过,在sophia的软件系统模块中,网卡的驱动是作为嵌入式系统内核的模块之一动态加载的。嵌入式中间件位于操作系统和应用程序的中间环节,提供了到程序模块、组件库的联接,系统的解码模块和播放器模块都是在它之上开发的。
1.3 模块的实现
    系统实现可以被分为以下几个步骤:
    1) 嵌入式Linux 内核的移植和编译、文件系统的安装;
    2) 视频图像解压缩模块的实现;
    3) 播放模块的实现。

2 嵌入式Linux内核的移植和文件系统、图形界面系统的安装
    工作在sophia 板上的嵌入式Linux 内核对bootloader、内核、文件系统的加载步骤和交叉编译环境的建立方法与其它嵌入式平台[1] [2]的开发步骤相似具有一定的通用性,具体的建立方法可以参考文献9。但是有两点要注意:
    1) 在使用make menuconfig 定制内核时要让内核支持无线网卡,具体步骤是在USB Support配置菜单中选择USB network devices,再于子菜单中选择wireless,使得在内核中加入对USB无线网卡的驱动支持。
    2) 在图形界面系统的编译与安装中注意建立工程后,要将选项中的gettext选项勾掉,否则程序无法顺利编译。
    3 视频图像解压模块的实现
    由网络控制模块获取的数据在系统中是以流数据的形式存在的,因此,首先要对流式文件进行解压。同时,为了提高传输效率从而提高视频图像质量,网络上传输的原始视频图像都进行了压缩编码,所以,还需要根据编码格式进行相应解码。本系统不但支持常见的MP1、MP2、MP3和WAV音频文件格式,还可以对先进的MPEG-4 视频图像压缩编码文件解压缩。
3.1 流式文件的解压缩
    按照播放器所接入的车载导航网络的要求,本方案要为当前主流的流文件格式:ASF、RM提供解压能力。
3.1.1 ASF[6]文件解压
    ASF(Advanced Streaming Format)文件基本的组织单元叫做ASF对象,每个对象由三个域组成:128位的全球唯一的对象标识符(Object ID)域、64位整数的对象大小(Object Size)域和可变长的对象数据(Object Data)域。ASF文件的高层逻辑结构也包含三部分:头对象(Header Object)、数据对象(Data Object)和索引对象(Index Object)。其中头对象是必需的并且必须放在每一个ASF文件的开头部分,它包含了许多全局信息,一定要在数据对象之前被接收方接收并解释;数据对象也是必需的,且一般情况下紧跟在头对象之后,包含了所有待播放的数据;索引对象是可选的。
3.1.2 RM文件解压
    组成RM(RealMedia)文件的基本部件是块(chunk),每个块包括三个字段:指明块标识符的四字符编码、块中限定数据大小的32位数值和数据块部分。块标识符用来唯一的标识每一个块。同样地,RM文件的高层逻辑结构也由三部分组成:文件报头部分、文件数据部分和文件索引部分。因为RealMedia 文件格式是一种加标志的文件格式,块的顺序没有明确规定,但RealMedia 文件报头必须是文件的第一个块。
3.2 MPEG-4视频图像的解压
    在几种开放源代码的MPEG-4解码软件中,作者选择xvidcore作为系统中视频图像解压模块的核心算法。xvid是一个高效且可移植的编码软件,系统采用的是目前最新的版本xvidcore-1.1.0。xvid 支持Simple Profile和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子目录中,该库文件为系统的其它模块提供了编程接口。
3.3 解码格式的可扩展性
    播放器支持的文件格式越多,其生命力也就越强大,PXA270嵌入式处理器加上2700G多媒体加速芯片的搭配方案为媒体播放提供了强大的硬件支持,通过软件升级,理论上可以支持任何媒体格式。本方案的做法是:在播放器中实现一个索引表类,将来根据需要新添加的编码格式作为独立的类注册到索引表中。基于linux的c++解码类源代码可以由网上开放源码的解码器网站下载,系统中的MP1,MP2,MP3和WAV的解码就是采用这种方法实现的。

4 播放模块实现


4.1 文件的输入
    在播放器系统中,文件的来源有两种:由网卡读入存储器后播放或通过其它数据传输途径写入存储器,在存储器中直接播放。sophia板提供了网卡的驱动模块,可以使用命令modprobe usbcore和modprobe usb-wlnc动态加载,为数据从网卡经由操作系统到达播放进程提供一个全双工的通道。数据的处理由播放器中的stream input类来实现。
4.2 流媒体协议
    实现流式传输有两种方法:实时流式传输和顺序流式传输,系统使用的是实时流式传输,需要标准化的流媒体协议来保证客户机和专用的流媒体服务器之间进行通信。根据流媒体协议的功能可以分为两类:
4.2.1 基本网络协议
    为媒体传输提供基本的网络服务支持,由于TCP需要较多的开销,不太适合传输实时数据。在流式传输的实现方案中,采用RTSP/TCP来传输控制信息,而用RTP/UDP来传输实时声音、图像数据。
4.2.2 传输协议
    传输协议包括RTP、RTCP、RTSP和RSVP,RTP和RTCP控制端到端网络数据的传输,RTSP提供话路控制的功能,RSVP是可选的,它为播放进程在网上预先申请一部分网络资源(即带宽),能在一定程度上为流媒体在Internet上的传输提供特殊服务质量QoS。
    为流媒体设计的协议栈如图3所示:从UDP/TCP层得到的数据包处理后得到打包的RTP数据流,通过RTP/RTCP/RTSP 层分离出定时和同步信息以及包的序列号,将读出的流文件交给ASF和RM解码模块。
4.3 媒体的播放
    播放器以自由软件mplayer为蓝本,处理流程如图所示:
    1) 如果数据是从网卡获得的,调用stream input模块进行处理。Stream input模块根据流媒体协议,使用socket和多媒体服务器进行通信,输入的流数据放入缓冲池中并根据流文件的格式对它进行ASF或RM解压缩;
    2) 解压后的文件根据文件的类型查找索引表调用不同的解码类将数据转化为一种统一的中间格式raw,生成相应的file,由播放器main函数播放。如果文件已保存在存储器中,可以跳过第一步,直接执行第二步流程。

5 小 结
    本文提出了一种基于Intel PXA270嵌入式微处理器和嵌入式Linux 的流媒体播放器系统实现方案,特有的索引表结构使得播放器可以通过软件升级增加新的编码格式,纯软件的实现方式大大缩减了研发周期。经测试,在带宽50Kb/s~100Kb/s、缓存256k的条件下,系统对CIF(352×288) 视频格式、QCIF(176×144) 视频格式和音频格式的文件播放失帧率在5%以下,播放流畅,满足了目前车载终端中嵌入式流视频播放的要求。

参考文献:
1 陈章龙等编著. 嵌入式技术与系统Intel XScale结构与开发. 北京北京航空航天大学出版社2004
2 刘振兴编著. ARM嵌入式技术实践教程. 北京航空航天大学出版社2005
3 邹思铁编著. 嵌入式linux设计与应用. 北京清华大学出版社2002 
4 [美] Douglas E. Comer. 用TCP/IP进行网际互联第一卷原理协议与结构. 林瑶等译. 第4 版. 北京电子工业出版社2001
5 ISO/IEC JTC1/SC29/WG11 N4668 Overview of the MPEG-4 Standard. 2002
6 Microsoft Corporation. Advanced Systems Format (ASF).2001
7 Sophia PXA270 with 2700G Evaluation Board "Sandgate 2G" Datasheet.2004
8 Sophia UniSTAC-II PXA270 Full ICE Datasheet.2004
9 Intel. Sophia/ PXA270 Evaluation Platform User s Guide.2004
10 Intel. Intel® 2700G Multimedia Accelerator Datasheet. 2004
11 Intel. Intel® PXA27x Processor Family Design Guide. 2004


 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
嵌入式Linux实时技术改进与实现 (03-26)
数字化幅度调制电路的实现 (03-26)
一种远程网络摄像机系统的设计与实现 (03-26)
多路嵌入式H.264视频服务器的设计 (03-26)
基于微处理器的车流量数据的检测与分析 (03-26)
基于嵌入式微处理器的张力控制器 (03-26)
基于MPEG-4的在线直播系统设计与实现 (11-06)
基于单片机智能机器人控制系统研究设计 (03-26)
基于嵌入式Linux的短信收发系统设计 (03-26)
基于嵌入式控制器的远程监控系统的开发 (03-26)
ZigBee车辆自动识别系统的设计 (03-26)
基于多传感器数据融合的智能机器人设计 (03-26)
WiMAX接收链使用集成旁路开关低噪声放大器的优势 (昨天)
电流/压力传感器的记录校正方法 (昨天)
基于GSM技术的远程监控系统 (03-26)
AVS-M与H.264(Baseline)视频解码器结构的分析 (昨天)
用于工业自动化的灵活I/O连接器 (昨天)
公共汽车实时显示及定位系统的研究 (昨天)
实现高效HVAC的电源转换器 (昨天)
基于CAN总线的温度检测节点设计 (昨天)
画中画技术在车载娱乐系统中的应用 (昨天)
基于TMS320C64x DSPs的MPEG-4实时编码器设计与实现 (08-13)
基于MPEG-4的嵌入式网络视频服务器的设计 (09-25)
基于DirectShow的MPEG-4视频传输系统的研究与实现 (09-18)
利用SAPI 5完成中文语音音素的分解 (09-05)
TMS320C6201在MPEG-4视频解码器中的应用 (03-13)
校园网上的电视直播及节目录制系统的实现 (08-30)
基于多DSP的MPEG-4系统的设计 (09-30)
MPEG-4视频数字水印技术的设计与实现 (03-01)
基于TRIMEDIA平台的数字监控DVR的设计实现 (05-02)
基于DSP的实时图像处理系统 (07-04)
基于ADSP-21535的MPEG-4视频编解码实现 (12-12)
基于嵌入式WEB的网络视频监控系统的设计与实现 (02-15)
基于ARM的嵌入式MPEG-4远程网络监控系统的设计与实现 (02-28)
基于嵌入式系统的彩色液晶显示驱动控制 (03-18)
基于DSP的实时MPEG-4编码的软件优化设计 (12-16)
运用定点DSP实现MPEG-4标准中DCT系数快速量化的方法 (12-16)
XScale PXA270在Linux下的FPGA设备驱动 (09-04)
基于MPEG-4标准和嵌入式技术的监控系统设计 (11-16)
基于TMS320DM642的MPEG-4编码软件优化设计 (11-16)
基于DSP的视频监控系统的优化仿真设计 (10-31)
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号