嵌入式Linux多媒体播放器的改进及实现

2011-09-23 06:05:46冯新宇
黑龙江科技大学学报 2011年1期
关键词:播放器代码嵌入式

冯新宇

(黑龙江科技学院 电气与信息工程学院,哈尔滨 150027)

嵌入式Linux多媒体播放器的改进及实现

冯新宇

(黑龙江科技学院 电气与信息工程学院,哈尔滨 150027)

针对现有播放器的功能,以目前流行的嵌入式 Linux操作系统及 Qtopia环境下的开源多媒体播放器代码为基础,改进原播放器源码,实现了支持包含MP3音频文件和MPEG4视频文件播放的媒体播放器及文件加载模块的多媒体文件浏览功能,通过制作新的播放器皮肤,来美化显示界面。调试结果显示,各种功能在硬件开发平台 GT2440上得以验证。

嵌入式 Linux;多媒体播放器;Qt;C++

Abstract:Aimed at the function of the currently used multimedia player,this paper introduces the im provement in original code recoding,drawing on embedded Linux operating system in prevailing use and the multimedia player open-code resource underQtopia environment.The improvement is associated with bothMP3 audio files andMPEG4 video files,and MP3 and MPEG4 media players,along with the browsing function ofmultimedia files by loading the documents load module and the embellished outlook by modifying the skin of the player.The paper endswith the verification of all functions on the hardware development platfo rm GT2440.

Key words:embedded Linux;multimedia player;Qt;C++

0 引 言

MP3和MPEG4是现有嵌入式多媒体播放器中应用最广泛的两种格式。现有嵌入式媒体播放器的多媒体文件加载方式,是当文件存储在 CF卡中,一旦卡被插入开发板,卡会被自动扫描,多媒体文件会自动被加载到播放器中并形成播放列表[1]。

Qtopia的嵌入式应用中有一个文件浏览器应用,它可以实现文件检索和高级文件编辑,如文件或文件夹的复制、粘贴、删除。而且,搜索的文件为多媒体文件,它对多媒体文件的加载节点与播放器中多媒体文件的加载节点相同。想利用文件浏览器这个嵌入式应用的代码,删掉高级文件编辑等播放器中用不到的功能,将剩下的代码与播放器中的 playlistwidget文件中的代码糅合在一起,形成具有文件浏览功能的 playlist窗口,考虑到原播放器代码文件间交叉关系比较复杂,即使原 playlist窗口中的子窗口部件及其很多功能函数均不再使用,其中的一些全局变量还是有很多被其他相关联的文件访问[2]。笔者试图采用不改变原播放器大部分代码,只改变窗口显示部分的代码的方法来加以改进,开发出播放器文件加载模块浏览文件系统找到多媒体文件的功能。

1 改进方法

1.1 原播放器文件加载模块

从两方面分析原播放器文件加载模块,先了解实现此模块的文件依赖关系,再进一步分析该文件实现的功能,找出需改动的文件,注意文件加载节点的位置。图 1显示了原有文件加载模块文件的依赖关系[3]。

图 1 原文件加载模块文件依赖关系Fig.1 Dependence relationship of original load module file

由于 playlistU I要整体改变,并且文件加载方式变成了文件浏览器的文件系统路径下文件和文件夹加载方式,因此,除 playlistwidget文件要改变以外,其他文件仍保留,因为即使改变文件加载方式 playlistwidget中引用其他文档时也会相应做赋值,其他文档在播放器工作过程中仍起到很重要的作用。

1.2 文件加载模块改进

改进部分主要研究 playlistwidget文档如何改动及其中加入的函数的作用,主要涉及三部分:

Main.cpp:该文件中建立了 QPE应用程序,实例化 FileBrowser类并传入初始路径,设置显示属性,运行程序。此部分用到的是实例化 FileBrowser时输入的初始路径QDir::current().canonicaiPath()。

Inlineedit.h.cpp:该文件主要实现高级文件操作时的鼠标选中文件或文档的功能,这部分用不到,可删去。

Filebrowser.h.cpp:该文件实现了主要的文件浏览功能,所以重点参考此文档。

由于文件浏览功能函数须有初始路径的传入,按照 filebrowser构造函数的形式重新定义 playliswidgett类的构造函数,为了统一风格,将原 playlistwidget的构造函数部分全部移到 filebrowser中的init()函数中,而且也要改动 init()函数,其中有关下拉菜单、可激活项、工具条及列表实现等子窗口的初始定义要移到 Playlis twidgetprivate类中,在 init()函数中还要将原播放器中的 tab子窗口实例化,但不显示,设置文件浏览器的文件列表窗口为中央窗口部件,可设置播放器皮肤的 skin菜单、播放器控制的 option菜单。将 filebrowser功能函数移植过来后要将所属域改为 playlis twidget。

1.3 嵌入式L inux多媒体播放器界面美化

播放器原有两套皮肤,每一套皮肤都包括音频播放界面、视频播放界面和播放器出示窗口的一些功能按钮的图标。由于个人的爱好,制作一套新的播放器皮肤,改变原有播放器的风格,以体现出个性化的特点。

在制作播放器皮肤时,同时也更换了 Qtopia的欢迎界面和等待时的时钟图标,有整体统一的风格。

皮肤的制作过程是:首先构思皮肤风格,确定以向日葵为主线的太阳花系列;其次寻找相关图片,再根据原有皮肤的图片大小,用 PS选出图片,设计出美观的播放器界面;然后更新设计的播放器界面,重新生成相应按钮的触点图片文件;最后制作好整套皮肤后替换掉原皮肤的文档,重新编译 Qtopia即可。

2 PC机上嵌入式应用调试平台

嵌入式应用的软件调试平台又称为软件调试环境,一般由嵌入式应用的软件开发平台和嵌入式应用的运行平台两部分组成。

PC机上的嵌入式应用的软件开发及调试平台也就是播放器代码的交叉编译平台,建立这个平台需要找到版本相互兼容的开发工具包、编译连接库及嵌入式应用源码包。最后确定的开发包是:

cross-3.3.2.tar.gz:交叉编译工具;

t

make-1.11.tar.gz:用以得到跨平台的Makefile生成器;

qt-x11-2.3.2.tar.gz:提供 Designer、U IC、MOC等 PC机上的嵌入式应用开发工具及编译时所需的编译工具;

qt-embedded-2.3.7:交叉编译之后生成嵌入式应用交叉编译时需要用的库;

qtopia-free-1.7.0:播放器源码的载体,交叉编译之后生成开发板的桌面环境及包括多媒体播放器应用的嵌入式应用集。

3 调试方法

3.1 PC机上播放器代码的调试过程

编译过程也就是第一个调试阶段,是在开发编译环境建立的前提下进行的,具体过程如下:

编译时的调试流程如图 2所示。

图 2 代码编译时的调试流程Fig.2 Debugg ing flowchart of compile code

代码成功编译后,进入了 PC即开发平台的第二个调试过程,利用 qvfb虚拟缓存,通过命令行输入运行Qtopia桌面环境及相应的应用程序,在此只能检验 GU I的一些功能 (下拉菜单响应),如果图形用户界面的一些操作没有正常响应,修改相应代码,继续编译—PC机第一次调试—PC机第二次调试的过程,直到 GU I的一些功能没有问题[4]。

3.2 目标机上嵌入式应用运行平台的调试过程

用触摸笔点击触摸屏,检验对触摸屏支持的功能,如果不能支持触摸屏则追溯到 Qte针对 Qpe的相关配置文档及 Qpe库中的与触摸屏相关文件的修改和配置,然后再重复以上所有的编译调试过程,直到支持触摸屏功能为止。

通过触摸屏校正进入 Qtopia桌面环境,点击多媒体播放器图标运行此应用程序,在显示多媒体播放器界面后,可进行文件浏览选择多媒体文件来播放,在播放过程中针对音视频文件分别验证各种播放控制,并检验播放结束后是否返回播放器的初始界面[5]。在此过程中验证播放器从图形用户界面—播放控制各方面功能,如有问题,则返回 PC机修改播放器相应源码的部分,重复以上所有过程,直到嵌入式多媒体播放器成功实现预期的所有功能为止。

4 调试结果及分析

触摸屏校正后,选择语言、时间等设置后进入Qtopia的桌面环境,在桌面上可以看到多媒体播放器的图标,点击后可进入多媒体播放器界面,如图 3所示。多媒体播放器的主窗口具有文件浏览功能,可在文件系统的路径下搜索到多媒体文件。找到多媒体文件后可单击选中,再点击工具栏里的播放按钮,也可双击多媒体文件进行播放,当选中音频文件时就会调出音频播放窗口如图 4所示。

在音频播放窗口,可以实现播放与进度条同步、音量控制、播放暂停控制、快进退控制、进度条定位播放等,下面以音量控制为例作以说明。

当点击音量增加或减少按钮时,播放器会出现音量显示条,按钮在释放时显示条隐藏,音频文件播放后会返回到选择此文件时的播放器界面,见图 5。

选择视频文件后,会调出视频显示窗口,如图 6所示。视频播放窗口中也可进行播放控制,如暂停/播放控制、快进退控制、循环播放、进度条定位播放以及进度条同步播放等,视频播放时还可以点击视频显示窗口拐角处的隐藏按钮来设置全屏播放。

5 结 论

(1)通过改进后代码的编辑、交叉编译,文件系统的定制、移植,实现了嵌入式 Linux多媒体播放器在开发平台上的运行,各种功能得到验证。

(2)实现了嵌入式 Linux多媒体播放器的改进,在实现播放器播放多媒体文件、播放控制等功能的基础上,开发出新的具有文件浏览功能的播放器的文件加载模块。制作的新的播放器皮肤,美化了界面,具有独特的显示风格。

[1] 聂爱箐,王心丰,崔散华,等.在 Linux下用 Qt开发新一代DTS图形数据系统的分析与设计[J].机电工程技术,2004(5):12-15.

[2] 陈云鹤,徐 晶.基于 QT/Embedded的媒体播放器的设计与实现[J].微型电脑应用,2006,22(8):33-34.

[3] 杨 著,郝 丹,范太华.高性能硬件平台与嵌入式 Linux的建构[J].西安科技大学学报,2006,26(2):250-252.

[4] 李 勇.嵌入式 Linux集成开发环境的研究[J].安阳师范学院学报,2005(5):59-61.

[5] 桑 江,陈 震.嵌入式 Linux系统在 PDA设备中的应用[J].计算机工程与设计,2005,26(4):1 016-1 019.

(编辑 徐 岩)

Improvement and implementation of embedded Linux mult imedia player

FENG X inyu
(College of Electric&Infor mation Engineering,Heilongjiang Institute of Science&Technology,Harbin 150027,China)

TN919.82

A

1671-0118(2011)01-0074-03

2011-01-07

黑龙江省教育厅科学技术研究面上项目(11541308)

冯新宇 (1978-),男,黑龙江省北安人,讲师,硕士,研究方向:嵌入式系统,E-mail:88574099@163.com。

猜你喜欢
播放器代码嵌入式
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
基于STM32的MP3播放器设计
电子制作(2019年9期)2019-05-30 09:41:44
Moon ACE播放器/放大器一体机
创世代码
动漫星空(2018年11期)2018-10-26 02:24:02
创世代码
动漫星空(2018年2期)2018-10-26 02:11:00
创世代码
动漫星空(2018年9期)2018-10-26 01:16:48
创世代码
动漫星空(2018年5期)2018-10-26 01:15:02
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
电镀与环保(2016年3期)2017-01-20 08:15:32
播放器背板注塑模具设计
中国塑料(2015年8期)2015-10-14 01:10:55