APP下载

基于Qt&Linux视频播放器的设计与实现❋

2014-08-07解争龙丁要军

微处理机 2014年4期
关键词:开发板播放器嵌入式

张 伟,解争龙,丁要军,王 维

(咸阳师范学院信息工程学院,咸阳712000)

·微机应用·

基于Qt&Linux视频播放器的设计与实现❋

张 伟,解争龙,丁要军,王 维

(咸阳师范学院信息工程学院,咸阳712000)

随着嵌入式处理器运算能力不断增强,影音娱乐已经成为人们日常生活中必不可少的一部分。设计以博创公司ARM9开发板(UP-TECH2410)为平台,以Linux为开发环境,Qt为开发工具,详细介绍了硬件平台搭建,嵌入式操作系统选型,Qt Designer以及视频播放器的设计方法。实现了Linux下对LCD的显示功能及开发板触摸屏控制的实现。通过测试,系统运行正常,性能稳定。开发过程以ARM9与Linux操作系统结合开发的模式突破了以往的嵌入式开发架构,为嵌入式系统开发开辟了一种新途径。

嵌入式系统;Qt设计;视频播放器;嵌入式Linux

1 引 言

嵌入式互动视窗是在linux下一个集音频、视频播放于一体的多媒体娱乐软件。随着用户要求的不断提高,越来越多的嵌入式设备开始采用复杂的图形功能。Qt以其强大的功能、良好的可移植性逐渐成为一种被广泛使用的GUI开发系统[1]。由于嵌入式操作系统的不断发展和完善,使得嵌入式软件开发及应用不断深入。嵌入式视频播放器提供给人们各种视听享受,已成为嵌入式系统中不可缺少的组成部分。目前,视频播放器已广泛应用到各类嵌入式产品中,如汽车电子、楼宇对讲等。因此在基于Qt的嵌入式系统中实现视频播放器具有一定的实用价值。

2 Qt介绍

Qt是奇趣公司开发的基于C++跨平台的应用程序开发框架。Qt是面向对象的框架,使用元对象编译器(Meta Object Compiler,moc)及一些宏,允许组件编程,其主要特点如下[2]:

(1)优良的跨平台特性

Qt支持Microsoft Windows、Linux,Solaris、Sun、UNIX(OSF/1,Tru64),QNX等操作系统。

(2)面向对象

Qt具有良好的封装性、可重用性,高度的模块化,通过signals/slots使得元件的协同变得非常简单。

(3)丰富的API

Qt提供了二百多个C++类,提供了collections,serialization,file,I/O device等基于模板的类及正则表达式的处理方法。

(4)拥有大量的开发文档,提供了对2D/3D图形渲染、OpenGL、XML等的支持。

3 硬件环境搭建

3.1 硬件平台的选取

系统的硬件平台主要由嵌入式处理器、外围电路、液晶显示屏和触摸屏等组成,硬件平台的框图如图1所示。

3.1.1 处理器的选型

为了能够保证系统对实时性、大量数据的处理能力、扩展接口等各方面的要求,本系统采用高端处理器——32位RISC处理器ARM。

(1)ARM处理器的选择

ARM处理器具有高性能、低功耗、低成本等显著优点[4]。ARM微处理器拥有众多的芯片生产厂家、复杂多样的内核结构,其中ARM9系列微处理器在低功耗、高性能方面表现的尤为突出。此外,ARM9系列微处理器主要应用于机顶盒、无线设备、安全系统等方面。通过分析,最终选用ARM9系列微处理器。

图1 系统硬件平台框图

(2)ARM9开发板

在确定ARM处理器的选型之后,最终选定了博创科技有限公司的ARM9开发板UPTECH2410[4]。UP-TECH2410的内核是SanSung公司的32位ARM920T处理器S3C2410,本开发板采用核心板与扩展板相分离的设计模式,通过外接LCD转接卡连接液晶显示模块,适合本系统的开发,开发板结构如图2所示。

图2 UP-TECH2410开发板

3.1.2 显示模块

LCD(Liquid Crystal Display)液晶显示器,具有低功耗、高画质、轻巧、平板型结构、不刺激眼睛、无电磁辐射等优点[5]。此外,它还具有显示字符规范、可汉字化、能显示各种图形、曲线等丰富内容的优势。本系统采用开发板上自带的TFT型3.5寸 LCD显示屏,分辨率为640*480。

3.2 嵌入式视频播放平台的搭建

系统平台的搭建对于视频播放的开发是至关重要的,一是要选择合适的嵌入式操作系统,二是在选定系统下进行系统编程。

3.2.1 嵌入式操作系统选型

嵌入式操作系统主要对嵌入式系统的软、硬件资源进行有效管理、合理调度及严格控制。目前较为流行的嵌入式操作系统有:Linux、WinCE、OSE等。Linux操作系统己经发展成嵌入式操作系统家族的主要成员,Linux在嵌入式开发方面的主要优势有[6]:①Linux是开源代码的,不存在黑箱技术;②Linux的内核小、效率高,更新速度快;③Linux是免费的OS;④Linux是一个跨平台的系统,可以支持几十种CPU,且性能稳定,裁剪性较好;⑤Linux的平台移植速度远远超过Java的开发环境等。

3.2.2 Qt Designer平台的搭建

(1)Redhat操作系统环境的搭建[7]

①下载Vmware 6.5;

②安装Vmware 6.5;

③在硬盘上预留15G-20G空间;

④创建虚拟机;

⑤安装Redhat;

(2)更新Redhat软件源

①下载sources.list;

②cp sources.list/etc/apt//修改源服务器;

③apt-get update//更新列表;

(3)搭建开发环境

①安装c++开发环境;

apt-get install build-essential

②安装gtk+2.0开发包

apt-getinstall libgtk2.0-dev libgconf2-dev libgnomeui-dev libpanelappletmm-2.6-dev

(4)安装中文输入法

apt-get install ibus ibus-pinyinim-switch-s ibus

(5)安装中文字体

apt-get install xfonts-wqy

(6)安装局域网通信软件ipmsg

①下载g2ipmsg-0.9.6.tar.gz

(http://www.ipmsg.org/index.html.en)

②tar zxvf g2ipmsg-0.9.6.tar.gz

③./configure--prefix=/usr--sysconfdir=/etc--enable-systray

④make

⑤make install

⑥Reset

4 视频播放软件的设计与实现

嵌入式视频播放主要实现在Linux下播放音频、视频文件。用户通过LCD屏来观看视频文件,并通过触摸屏实现人机交互。

4.1 LCD显示模块程序设计

嵌入式视频播放主要是在开发板自带的LCD显示屏上显示当前所播放的视频或者音频文件,其流程如图3。首先初始化LCD,调用PutPixel()函数对LCD屏的画点设计,对LCD清屏,通过Glib_ ClearScr()函数将显存赋值为黑色,调用各类相关的图形显示函数,如lib_Line()、DisplayPicture()等来建立窗口,通过延时函数进行图形显示延时Delay(),最后通过LcdTest()函数激活,查看显示结果。

图3 LCD显示程序流程图

4.2 触摸屏控制原理

触摸屏坐标获取及转换程序通过初始化程序设置,启动各个硬件接口,Linux中断函数将中断服务程序TouchIRQ和中断向量INT_LVL_ADC直接绑定,实现实时系统中硬件中断处理。因为Linux是以中断方式通知系统外部事件的发生,为了快速响应中断,中断服务程序QT Designer运行在特定的空间,不同于其它任何任务,因此中断处理没有任务的上下文切换。

4.3 视频播放器的实现过程

4.3.1 播放器功能实现

视频播放器的设计任务是在linux系统下,用QT做一个Mplayer界面,来实现视频文件的播放、停止、快进等功能,并把程序移植到ARM平台上。

(1)实现原理

设计Mplayer的界面有两种方法,第一种是直接解剖Mplayer,修改它里面的代码,这样设计的界面就能够和Mplayer一体了;第二种方法就是mplayer的slave模式。所谓slave模式[8],就是Mplayer在运行时能够接收用户的输入命令,运行在Slave模式的Mplayer可以和系统的标准I/O进行交互。在Qt中,通过定义一个QProcess对象调用已编译好的Mplayer,例如:

QProcess*process=new QProcess();

process->setProcessChannelMode(QProcess::MergedChannels);

综上所述,选择第二种方法来实现播放器的功能。

(2)基本功能的实现

①暂停功能

Process->write(“pause”);

②快进功能

③音量调节

Process->write(“volume-1”);//减小音量

Process->write(“volume+1”);//增加音量

④静音功能

Process->write("mute 0");//开静音

Process->write("mute 1");//关静音

⑤上/下一视频的播放

利用QstringList类打开视频列表:

QStringLjst files=dir.entryList(”videofile”,QDir::Files);该函数将当前播放的文件与列表中文件一一比较,并且计数,当比较到相同的文件后,将此时的计数值减l或加1就得到了下一个视频或上一个视频的文件名,然后将其播放。

4.3.2 数据流程设计

音视频流程如图4[9],输入模块从数据源读入数据,然后由分离器插件将多媒体数据分割为音频和视频数据。经过音频FIFO和视频FIFO排队处理,最后由音频解码器和视频解码器分别对音频、视频数据进行解码。如果是音频数据则进行重采样,如果是视频数据则读取相应的帧,逐帧解码。经采样的音频、视频数据送入对应输出设备(如扬声器、视频设备)进行输出。在数据处理整个过程中是以Qt提供的多线程方式完成数据的读入、解码等操作的,这样在解码的同事也能不断地读入数据,以提高效率。

图4 音视频数据流程

5 测试

上位机上开发的应用程序通过网口和串口方式进行联合测试,应用程序下载到目标机上,通过串口反馈的信息查看目标机运行情况。通过软硬件联合调试,基于嵌入式的Linux视频播放器运行正常,如图5所示。

图5 播放视频界面

6 结束语

在ARM硬件平台上,通过选用s3c2410开发板在Linux嵌入式实时操作系统环境下完成了视频播放器的设计,通过测试,系统运行正常,性能稳定。本系统开发过程中选用基于ARM9与Linux操作系统结合的开发方法突破了以往嵌入式开发架构(通常ARM与VxWorks、WinCE结合开发,Linux与X86、PowerPC等系统结合),提高了系统在实际应用中的可靠性,稳定性,同时也是本文的一大创新。下一步的工作是进一步完善人机交互界面,扩充联网下载、视频或电子游戏中控台等功能。

[1]布兰切特,萨墨菲尔德.C++GUIQ4编程(第2版)[M].闫锋欣,等译.北京:电子工业出版社,2008.

[2]蔡志明,卢传富,李夏,等.精通Qt4编程(第2版)[M].北京:电子工业出版社,2012.

[3]刘洪涛.ARM嵌入式体系结构与接口技术[M].北京:人民邮电出版,2012.

[4]博创智联.ARM9经典双核心教学科研平台[EB/OL].[2014-3-1]5.http://www.up-tech.com/?productstudy/typeid/2/tid/3.html.

[5]孙俊喜.LCD驱动电路、驱动程序设计及典型应用[M].北京:人民邮电出版社,2009.

[6]罗怡桂.嵌入式Linux实践教程[M].北京:清华大学出版社,2011.

[7]王震,林小川,周运练,等.基于QT4&Linux多媒体播放器系统的设计与实现[J].贵州大学学报(自然科学版),2006,22(8):34-35.

[8]Qt4编程的控制MPlayer[EB/OL].2011[2014-3-8].http://wenku.baidu.com/view/1d61a81dc281e53a 5802ff34.html.

[9]王建民,张宏壮.基于Qt的嵌入式媒体播放器系统的设计[J].微计算机信息,2008,24(7):64-64.

Design and Im plementation of Video Player Based on Qt and Linux

ZHANGWei,XIE Zheng-long,DING Yao-jun,WANGWei
(School of Information Engineering,XianYang Normal University,XianYang 712000,China)

With the increasing of embedded processor capacity,the video entertainment activity has become the necessary part of people's life.The ARM9 development board from UP-TECH2410 BO CHUANG Company is used as the platform,Linux as the development environment,and Qt for the development tool.The construction of the hardware platform,the selection of embedded operating system,the design methods of the Qt designer and video player are introduced in detail.The function of LCD display and touch screen control are completely implemented under Linux.The results show that the system runs normally and stably.The system design mode,combining ARM9 with Linux operating system,breaks through the previous embedded development architecture and provides a new way for the embedded system development.

Embedded System;Qt Design;Video Player;Embedded Linux

10.3969/j.issn.1002-2279.2014.04.024

TP319

:A

:1002-2279(2014)04-0074-04

国家自然科学基金(61102018);陕西省自然科学基础研究计划项目(2011JE011);咸阳师范学院专项科研基金项目(12XSYK068)

作者介绍:张伟(1981-),男,陕西礼泉人,硕士,讲师,研究方向:可信计算、嵌入式系统与结构。

2014-04-18

猜你喜欢

开发板播放器嵌入式
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
基于STM32H7的FDCAN通信系统设计与实现∗
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
基于STM32的MP3播放器设计
TS系列红外传感器在嵌入式控制系统中的应用
Moon ACE播放器/放大器一体机
搭建基于Qt的嵌入式开发平台
浅析单片机开发板的设计与制作
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
播放器背板注塑模具设计