基于IntelPXA270平台的嵌入式流媒体播放器设计

时间:2012-04-05来源:网络

模块的实现

系统实现可以被分为以下几个步骤:

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 子目录中,该库文件为系统的其它模块提供了编程接口。

1 2 3 4

关键词: PXA270 MPEG-4 流媒体

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版