当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:针对传统车载多媒体广告机的局限性,提出了一种基于嵌入式Liunx与Qt/Embedded的车载多媒体广告机的设计方案。该方案采用以ARM处理器S3C6410为核心的硬件平台和以嵌入式Linux系统为核心的软件平台,并在此基础上采用开放源代码的图形界面库Qt开发广告机界面,同时利用开源播放软件MPlayer作为播放器。经实验验证,该多媒体广告机具有成本较低、界面友好、反应灵敏等特点,并在跨平台性、可扩展性等方面比传统方案有显著改善。

引言

随着科学技术的发展,越来越多的多媒体广告机出现在出租车中。现有的出租车广告机大多采用移动数字电视和数字存储播放两种方式。移动数字电视只能应用在存在数字电视信号的地区,在无信号或信号较弱的地区则无法播放,对于广告的播出时段、播出内容需要和广电系统合作协商,导致效率低、成本高,而且播出的节目不能点播;数字存储播放的方式需要将节目内容先期进行制作,然后将节目内容刻录成光盘或者存储于播放设备的存储器中,这种方式目前存在的缺点是节目更新较为困难、时效性较差,而且存在软硬件成本较高的问题%

针对现有的车载广告机存在的不足,本文提出了一种新型的车载多媒体广告机的设计方案。采用嵌入式Linux系统和ARM处理器S3C6410分别构建多媒体广告机的软硬件平台,在此基础上采用开放源代码的图形界面库Qt/E设计广告机的程序界面,在Qt设计的界面上显示多媒体播放器MPlayer播放的视频,结合FrameBuffer在视频的上方和下方分别显示Log。和字幕,最终完成应用程序的开发。

1系统总体设计

车载广告机的基本设计思想是在基于ARM的嵌入式平台上完成多媒体文件的存储、解析和处理,控制LCD模块和音频模块完成多媒体广告的播放,并采用Wi-Fi无线网络完成多媒体广告机系统中视频文件的智能下载更新。基于嵌入式软、硬件环境,车载广告机系统的整体结构如图1所示:

基于嵌入式Linux的车载多媒体广告机设计

2系统硬件设计

车载广告机系统的硬件结构图如图2所示。系统的核心处理器采用基于ARM1176JZF-S核的S3C6410芯片,其主频最高可达到667MHz,内部集成了强大的多媒体处理单元,带有3D图形硬件加速器,并支持2D图形图像的平滑缩放等操作,有利于为用户提供高灵敏度的汽车状态动态显示;外接16GB的SD卡和2GBNANDFLASH,为多媒体文件的本地存储提供了充足的硬件环境;显示接口采用8寸TFT液晶显示屏,处理器内部集成的LCD控制器信号线经过驱动电路后即可连接LCD模块,为多媒体广告的显示提供了硬件平台;外接触摸屏,用户可根据需要自主选择喜爱的节目;外接音频编解码芯片CS42L50,为多媒体播放提供音频支持;外接基于Marvell8686芯片的SDWi-Fi模块,使广告机终端能够接入无线网络,连接到远端服务器,完成系统所需多媒体文件的智能下载更新。

基于嵌入式Linux的车载多媒体广告机设计

3系统软件设计

车载广告机的软件设计主要是开发基于嵌入式Linux系统的客户端应用程序。本系统采用嵌入式Linux作为操作系统,在Linux平台下编写广告机的驱动程序;利用Qt/Embedded作为图形界面解决方案实现广告机的图形界面,在此界面上显示Mplayer播放器播放的视频。

该系统软件的开发主要有4个内容:开发平台的搭建、编译Qt/Embedded库、视频播放器MPlayer的移植和广告机应用程序的实现。

3.1嵌入式Linux系统开发平台的搭建

为了开发满足要求的应用程序,本文采用的软件开发环境是VmwareWorkstation7虚拟机和Fedora9操作系统,在此环境中安装交叉编译器ARM-linux-gcc4.3.2,用来完成包含相关驱动程序的虚拟仪表系统内核、QT库和应用程序的编译;在Fedora9系统中安装QtCreator软件,用于完成虚拟仪表系统应用程序的开发;移植嵌入式设备的系统引导程序U-boot;编写硬件平台中音频模块、Wi-Fi模块和SD卡等设备的驱动,然后裁剪编译Linux2.6.29内核并在其中加载已编译的相关驱动[5],制作硬件平台需要的根文件系统。

3.2编译Qt/Embedded库

Qt是一个跨平台的C++图形用户界面应用程序框架,其对象容易扩展,可移植性较好,支持多个GUI平台的交互开发。Qt/EmbeddedLinux是为嵌入式Linux优化过的Qt版本,被广泛应用于各种嵌入式产品和设备当中,其实现结构如图3所示。为了减少系统内存占用量、提高系统性能,可以对Qt/EmbeddedLinux进行重新裁剪编译,去掉不需要的特性。

下载tslib1.4.tar.gz,在搭建好的开发平台内解压后执行配置、编译和安装命令,编译安装Tslib库,添加触摸屏支持。然后通过./configure裁剪、配置Qt/Embedded库。配置完成后采用make命令编译,用makeinstall命令安装Qt/EmbeddedLinux到指定的位置。

基于嵌入式Linux的车载多媒体广告机设计

3.3移植视频播放器MPlayer

MPlayer是一款开源的多媒体播放器,遵循GPL规范。该播放器可以在多种操作系统上运行。MPlayer自带的音频、视频解码器可以支持许多流行的音频和视频格式。相对于其他播放器,MPlayer运行过程中资源占用非常少,对系统硬件的配置要求比较低,故本系统采用MPlayer作为多媒体播放器。直接使用MPlayer作为播放器还可以节约开发成本,同时也增加了系统的可靠性[6]。

下载libmad后解压,使用./configure配置libmad,然后分别使用make命令和makeinstall命令安装libmad。下载解压MPlayer源文件,使用./configure命令进行配置,注意一定要添加一target=arm-linux,标明为ARM平台配置,然后使用make命令进行编译,使用makeinstall命令安装至当前目录。生成的可执行文件Mplayer即为MPlayer播放器,将其拷贝至开发板/bin目录下,完成MPlayer的移植。

3.4设计广告机应用程序

3.4.1广告机界面的实现

广告机界面的实现较为简单,只需要在屏幕的右侧显示一排可以点击的图形按钮,左侧用于广告视频的显示。对于图形按钮的设计,需要首先准备好每一个按钮未点击和点击后的图片素材并将他们添加到程序的资源文件advertise.qrc中,程序运行时会加载这些图片到内存中,然后在窗口的paintEvent()函数中进行按钮的绘制,在用户点击图形按钮时,在mousePressEvent()函数中处理按钮的点击事件;视频采用全屏显示,需要在main函数中,用showFullScreen()函数显示窗口即可实现全屏;为了在视频播放的同时显示Log。和字幕,应用程序使用了4个FrameBuffer,分别用于显示Qt程序界面、MPlayer视频图像、Log。和字幕,实现四者的叠加显示。

3.4.2实现视频的播放

要实现广告视频文件在Qt窗口上播放,需要使用户界面通过QProcess类启动一个新程序来实现对MPlayer的控制,如图4所示。QProcess类使应用程序在Qt程序中调用另外一个进程。其实现代码如下:

mplayerProcess=newQProcess(this);//创建一个QProcess对象

connect(mplayerProcess,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(mplayerEnded(int,QProcess::ExitStatus)));//finished信号在MPlayer程序结束时发射,标志着一个视频已播放完成,用此信号可通知程序自动播放下一个视频,实现视频的循环播放

基于嵌入式Linux的车载多媒体广告机设计

3.4.3界面与MPlayer的交互

MPlayer与Qt4程序之间使用管道方式进行通信,QProcess类隐藏了具体的通信细节,将新建立的进程当做主程序的一个I/O设备,因此需要使用QProcess类提供的read()/write()函数来调用这个进程的标准输入/输出[7],如下所示:

mplayerProcess->write(“quit\nv);//通知MPlayer退出

当QProcess启动MPlayer后,应用程序可以将控制命令写入MPlayer的标准输入,MPlayer从标准输入读到数据后会执行相应的功能。其实现代码如下:

QStringListargs;

args<<v-framebuffer-indexv<<”1”;//MPlayer不支持将视频显示在Qt/E的串口上,而是直接显示在FrameBuffer上,在这里结合多FrameBuffer特性,以及screenrect参数,将视频定位到Qt绘制的窗口的划定区域上面

QStringscreenRect=QString("%1,%2,%3,%4").arg(m_videoWindowRect.left()).arg(m_videoWindowRect.top()).arg(m_videoWindowRect.width()).arg(m_videoWindowRect.height。);//计算显示视频的区域

args<<screenRect;//位置传递

args<<"-slave";//使用MPlayer的slave模式,在此模式下,MPlayer在运行过程中能够接收用户的输入命令。

m_mplayerProcess->start(MPLAYER_PATH,args);//写入命令

3.4.4视频文件的更新

应用程序通过广告机内置的无线网卡访问远程服务器即可实现广告视频文件的更新。广告机终端在系统开机运行时通过QThread类新建一个线程,通过无线网卡定期向远程服务器查询是否需要更新视频文件,在广告机准备好更新时,服务器通过无线网可将封装后的视频发送到无线局域网中去。接收端系统通过驱动程序接收数据包,进行解封装得到需要更新的视频目录和视频数据,终端则根据更新目录进行视频文件的删除或下载等操作。其实现代码如下:

classDownLoad:publicQThread

{Q_OBJECTprotected:voidrun();//开机即开启一个QTimer定时器,定时向远程服务器查询是否需要更新视频文件。

signals:voidupDates();//在需要进行视频更新时,以信号与槽(signals/slot)的方式,通知主程序进行视频文件的更新。

3.4.5画面闪烁问题的解决

画面的动态刷新显示,会使屏幕出现闪烁。本设计釆用双缓冲机制解决画面闪烁的问题,将整个窗口部件在屏幕外的像素映射中绘制,然后把这个像素映射复制到显示窗口中叫其实现代码如下:

voidMainwidow::paintEvent(QPaintEvent*event)

{••••••

QsizenewSize=rect.size().expandedTo(pixmap.size());//创建至少和所绘区域一样大的绘图缓冲

QPainterpainter(&pixmap,this);//创建操作像素映射的QPainter

Painter.translate.(-rect.x(),-rect.y());//对像素映射中绘制矩形的画笔进行坐标转换

bitBlt(this,rect.x(),rect.y(),&pixmap,0,0,rect.width(),rect.height());//利用bitBlt()把像素映射复制到显示窗口部件上}

4运行发布程序

将裁剪、编译过的内核与制作的带QT库的文件系统烧写到开发板。在开发环境内交叉编译编写的应用程序,得到可执行二进制文件,将此文件移植到开发板,即可实现应用程序的发布。重新开机,运行应用程序即可启动广告机,其启动后的画面如图5所示。

基于嵌入式Linux的车载多媒体广告机设计

5结语

本文提出了一种新型的车载多媒体广告机的设计方案,以ARM和嵌入式Linux为基础平台,通过定制移植QT和MPlayer并设计应用程序实现多媒体广告机系统的设计。通过本设计方案设计的广告机,采用开放源代码软件设计,使系统的成本降低,同时采用双缓冲技术消除页面闪烁,使其更具有市场竞争力;采用Qt插件的方式设计系统的各个模块,增强了系统的可扩展性和可定制性;通过Wi-Fi与服务器交互实现视频文件的更新,解决了大批量设备同时进行大容量视频数据更新的问题,提高了更新速度。经实验测试,该系统所有功能模块都能正常运行,达到了预期的效果,随着信息化的发展,有着广阔的前景。

20211120_6197d6ce9384e__基于嵌入式Linux的车载多媒体广告机设计

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

未知语音经过话筒变换成电信号后加在识别系统的输入端,首先经过预处理,再根据人的语音特点建立语音模型,对输入的语音信号进行分析。

关键字: 语音识别 语音 模型

随着科技的飞速发展,计算机已经成为我们日常生活和工作中不可或缺的工具。然而,有时我们可能会遇到一些棘手的问题,如忘记BIOS密码。BIOS(基本输入输出系统)是计算机启动过程中的重要部分,它负责初始化硬件并加载操作系统。...

关键字: bios密码 计算机

随着科技的不断发展,人们对于现实世界的感知与体验方式也在不断地变革。其中,增强现实(AR)和虚拟现实(VR)技术作为近年来备受瞩目的新兴科技,正在改变我们与世界的交互方式。本文将详细探讨AR技术和VR技术的定义、应用以及...

关键字: AR技术 VR技术 虚拟现实

语音识别模块是一种基于嵌入式技术的模块,主要用于将人类语音中的词语转换成计算机可读的格式,实现与主芯片的通讯。该模块通常包括语音识别芯片和其他附属电路,使得开发者能够方便地将其嵌入到各种智能化产品中,实现人机语音交互。

关键字: 语音识别 嵌入式技术

语音识别系统是一种将人类的口头语言转化为可处理的文本或指令的技术,是人机交互、智能设备和现代通信技术中的重要组成部分。其构建涉及多个复杂而精密的模块,每个部分都承担着不同的功能以确保准确无误地理解并转化语音信息。

关键字: 语音识别 声学处理

语音识别技术,作为人工智能领域的重要分支,近年来取得了显著的进步。它能够将人类语音转化为计算机可理解的文本或指令,为人们的生活和工作带来了极大的便利。那么,语音识别技术究竟可以做什么呢?本文将从多个角度探讨其应用与价值。

关键字: 语音识别 智能家居

今天,小编将在这篇文章中为大家带来机器学习的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 机器学习 TensorFlow PyTorch

语音识别作为人工智能领域的一项关键技术,其发展与应用日益普及,广泛应用于智能设备、自动驾驶、智能家居、在线客服等多种场景。随着技术的进步,尤其是深度学习的崛起,语音识别的方法不断演进和完善

关键字: 语音识别

语音识别是一门多学科交叉技术,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。它的任务主要是将语音信号转换成对应的文字。为了实现这一目标,语音识别系统通常包括特征提取、声学模型、语...

关键字: 语音识别 特征提取

语音识别控制系统是一种通过语音识别技术对电子设备进行控制的系统。它主要包括语音输入器、语音识别器和控制器等部分。当语音输入器接收到操作者的语音后,语音识别器会对语音信号进行分析和处理,将其转换为计算机可读的文本或命令。然...

关键字: 语音识别 语音控制
关闭
关闭