车载多媒体信息系统中媒体播放器的设计与实现.doc_第1页
车载多媒体信息系统中媒体播放器的设计与实现.doc_第2页
车载多媒体信息系统中媒体播放器的设计与实现.doc_第3页
车载多媒体信息系统中媒体播放器的设计与实现.doc_第4页
车载多媒体信息系统中媒体播放器的设计与实现.doc_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业设计(论文) 车载多媒体信息系统中媒体播放模块的设计学院名称: 计算机工程学院 专 业: 班 级: 姓 名: 指导教师姓名: 指导教师职称: 2012年05月毕业设计说明书(论文)车载多媒体信息系统中媒体播放模块的设计摘 要:汽车已经成为人们必不可少的交通工具,随着出行时间的增加,人们对新型车载信息娱乐功能的需求也日益增长,车载多媒体系统有广阔开发前景和深远的经济意义。本文以mini2440开发板为硬件平台设计了一款车载多媒体播放器,播放器以嵌入式linux为操作系统,采用Qt实现图形界面。播放器除了实现媒体文件的播放、音量大小的调节、静音、播放时间的快进快退、播放下一曲上一曲文件、暂停播放、停止等基本功能之外。还实现了多种编码格式的音频、视频文件的播放,不同路径下音频视频文件的打开,播放列表管理等实用功能。关键字:嵌入式,多媒体,QtMedia Player Design OfVehicle Multimedia Information SystemAbstract:The car has become the essential means of transport by the people is also growing with the increase of travel time, the demand for new-vehicle infotainment functions, car multimedia system has a broad development prospects and far-reaching economic significance.Mini2440 development board hardware platform designed an in-car multimedia player, the player embedded linux operating system, graphical interface using Qt. Player in addition to the playback of media files, the volume size adjustment, mute, play time, fast forward, rewind, play a file on the next one, pause, stop, etc. basic functions. Also implements a variety of encoding formats of audio, video playback, audio and video files in different paths to open, play list management, and other useful functions.Keywrods:Embedded,Multimedia,Qt2目录引言1第1章 绪论21.1 研究背景21.2 车载多媒体播放的发展趋势21.3 研究的意义31.4 本文内容与组织4第2章 系统软硬件开发平台52.1硬件开发平台52.2 软件开发平台62.2.1 嵌入式系统Linux62.2.3 嵌入式媒体播放器概述82.3 Mplayer92.4 QT112.4.1 QT的介绍112.4.2 Qt的编程特性12第3章 系统分析与设计133.1 支撑环境133.2 需求分析132.3 模块设计14第 4章 系统详细设计164.1 UI界面设计164.2 基本功能模块实现184.2.1 初始化功能184.2.2 显示模块204.2.4 播放-暂停模块234.2.5 停止模块244.2.6 静音模块264.2.7 音量调节模块274.2.8 快跳模块284.2.9 换曲模块294.3 打开文件模块314.3.1对话框设置314.3.2 打开播放功能324.3.3 定位视频窗口334.4 播放列表模块344.4.1列表实现344.4.2 列表添加模块344.4.3列表文件播放模块364.5 编译工程37第5章 系统测试385.1 测试流程385.2 功能测试395.3 测试结果39结束语40参考文献42致谢43 第 II 页 共 43 页引言汽车的多功能化和电子化为汽车电子产业发展带来广阔空间。目前,车载信息娱乐系统已成为汽车电子领域最具吸引力且成长最快的产品之一。当前,高、中档轿车中的电子设备配置都在向豪华型、个性化方向发展,主流配置可大致归纳为三大类:音频(如CD)、视频(如DVD)以及Navigation(导航)和Telematics(远程信息处理),并有形成多媒体中心整合所有娱乐系统的趋势。未来的车载影音播放系统在性能上将更接近家用影音系统,集成音视频、导航器、远程信息处理为一体,能够支持以往由地面波发送的收音机和电视广播、导航系统使用的卫星信息,卫星数字广播发送的数字媒体等,兼容更多的技术标准和接口,并将导入宽带车内网络。在HDD 等存储设备广泛普及,与内容有关的数字著作权管理方法成熟之后,多媒体信息可以通过流媒体的方式将被广泛使用。车载信息系统的应用将更加广泛应用无线传输技术,电子地图、自主导航、汽车电话、汽车防盗、行车监控、车辆派遣、行动上网、收发传真、影音服务等,都可通过良好的无线通信组件来实现。随着人们活动范围的扩大,车辆将由单纯的交通工具将集成更多功能的无缝移动信息系统。随着用户要求的不断提高,越来越多的嵌入式设备使用功能强大、价格低廉的嵌入式Linux作为操作系统并开始采用较为复杂的图形用户界面。Qt以其强大的功能、良好的可移植性逐渐成为一种被广泛使用的GUI系统。正是由于嵌入式操作系统及其相应图形用户界面的不断发展,嵌入式软件的开发显得越来越重要。其中嵌入式媒体播放器由于能够满足人们的视听享受已经逐渐成为了系统中不可或缺的重要组成部分,在嵌入式系统上开发媒体播放器已经成为了一个技术热点,当前许多嵌入式产品中都包含媒体播放器。因此在基于Qt的嵌入式系统中实现媒体播放器具有深刻的意义和实用价值1。第1章 绪论 1.1 研究背景汽车已经成为人类不可缺少的交通工具。根据美国交通部(USA Department Of Transportation)的数据显示,经常往返于北美地区的人们每周大约会在车上度过的时间共计5亿个小时,Entertainment on the Go 的理念迅速在汽车也中蔓延开来。据Strategey Analytics研究表明,汽车市场对新型车载信息娱乐功能的需求日益增长,到2012年底器市场规模高达360亿美元。汽车的多功能化和智能化为汽车智能产业发展带来广阔空间。随着汽车工业与电子信息产业加速融合。汽车开始向电子话、多媒体化和智能化方向发展,从以机械产品为主,想搞基的机电一体化产品方向演变。目前,车载信息娱乐系统已成为汽车电子领域最具吸引力且成长最快的产品之一。随着IT技术日新月异,计算机的发展已经来到了一个充满机遇与挑战的心的阶段后PC时代。而嵌入式操作系统就是这后PC时代的代表,已经成为了数字化产品的核心。目前生产拥有完全自主知识产权的嵌入式系统逐渐在中国形成了一个热门的研究领域。一个好的操作系统需要相应的软件配合才能发挥最大的潜力,因此嵌入式系统的不断地发展也使得嵌入式软件开发变得越来越重要。本课题来源于“基于QT的多媒体车载导航”项目。该项目完成了多媒体车载导航终端的产品开发,终端可以通过搜索目的地,计算并在地图上给出最短行车路线,同时具备多媒体文件的播放的功能。本文的内容是此课题中的子课题,即车载多媒体播放器的设计与实现。通过本课题的研究可以让多媒体车载导航的功能更加强大完善,更好的满足用户的需求。1.2 车载多媒体播放的发展趋势(1)功能多样化。车载多媒体系统可以为驾驶员提供一系列服务,表现在增加语音声控、影音娱乐、GPS 导航导航服务等功能。市场调查表明功能越多越容易受到用户的欢迎。(2)多元化信息服务。显示塞车信息,通知天气预报等信息的服务将逐渐成为可能,甚至能与办公室和家里进行通信联络,开启家中的照明灯,启动自家的喷灌系统,控制办公室安全系统等将不在是梦想。汽车多媒体播放产品的未来发展,多元化的信息服务是其中一个必然的趋势。(3)体积更小,携带安装方便,适用多种车型的汽车多媒体播放产品呈增长趋势。(4)高新科技的运用。如今一些汽车电子产品都可以看到高新技术的影子,如索尼推出的影像导系统运用了三维技术56。未来的车载影音播放系统在性能上将更接近家用影音系统,集成音视频、导航器、远程信息处理为一体,能够支持以往由地面波发送的收音机和电视广播、导航系统使用的卫星信息,卫星数字广播发送的数字媒体等,兼容更多的技术标准和接口,并将导入宽带车内网络。在HDD 等存储设备广泛普及,与内容有关的数字著作权管理方法成熟之后,多媒体信息可以通过流媒体的方式将被广泛使用。车载信息系统的应用将更加广泛应用无线传输技术,电子地图、自主导航、汽车电话、汽车防盗、行车监控、车辆派遣、行动上网、收发传真、影音服务等,都可通过良好的无线通信组件来实现。随着人们活动范围的扩大,车辆将由单纯的交通工具将集成更多功能的无缝移动信息系统78。1.3 研究的意义如今我们已经是信息社会,多媒体技术已经无处不在,越来越多的信息被多媒体化,我们正置身于一个多媒体的世界。由于嵌入式系统的不断发展,可想而知,媒体播放器正成为系统中不可或缺的重要组成部分,需求量也越来越越大。一款优秀的播放器需要做到完善的功能、友好的界面、简单易上手的操作,可以让任何人可以使用流畅,体验多媒体的美好,给人们带来美好的视听享受。这一愿望使越来越多的公司开始着手开发嵌入式媒体播放器,并得到人们的欢迎。嵌入式媒体播放器已经成为了领域中一个新的热点。在嵌入式系统中配备一个媒体播放器已经成为了一种趋势并将会得到普及,比如现在许多手机、PDA还有高端车载导航设备中都带有了媒体播放器。然而,随着嵌入式技术的不断发展。嵌入式处理器的运算能力的增强,对嵌入式软件的要求越来越高。这使得越来越多的嵌入式系统开始采用较为复杂的GUII系统。这说明嵌入式设备上的应用程序除了要满足体积小、素的快的要求外、用户UI界面的美观和直观上手操作越来越重要。所以,目前面临的问题是,如何开发出界面新颖、功能强大的嵌入式媒体播放器。针对以上几点,本文主要分析了Linux系统上强大的播放器mplayer,通过QT为其搭建完善的UI界面,实现播放器各种功能。1.4 本文内容与组织本文基于嵌入式Linux和QT的软件平台,以及mini2440的硬件开发平台,在研究嵌入式系统开发技术的基础上,提出了一套满足要求的低成本的嵌入式多媒体终端的解决方案。本文共分为5章,内容安排如下:第1章 首先说明了本课题的来源,然后概述车载多媒体系统的研究现状与发展趋势,最后总结了本文的研究意义。第2章 介绍系统软硬件开发平台。包括mini2440开发板介绍、概述了嵌入式Linux系统、嵌入式图形用户界面以及嵌入式媒体播放器的特点、发展现状。介绍了mplayer支持的多媒体格式与mplayer的逻辑结构,以及对QT的介绍。第3章 进行了系统分析,需求分析,对播放器模块进行设计。第4章 嵌入式播放器Mplayer详细的设计,QT搭建UI界面针对播放器Mplayer整体结构设计及各个功能详细设计。第5章 对本文设计的车载多媒体播放器进行系统测试,得出测试结果。第2章 系统软硬件开发平台2.1硬件开发平台本设计使用的硬件开发平台是广州友善之臂的Mini2440开发板,外观全局如图2-1所示。Mini2440 是一款真正低价实用的ARM9 开发板,是目前国内性价比最高的一款学习板;它采用Samsung S3C2440 为微处理器,并采用专业稳定的CPU 内核电源芯片和复位芯片来保证系统运行时的稳定性。mini2440 的PCB 采用沉金工艺的四层板设计,专业等长布线,保证关键信号线的信号完整性,生产采用机器贴片,批量生产;出厂时都经过严格的质量控制。Mini2440是第一款提供齐全BSP(基于Linux-2.6.29(当前为Linux-)和WindowsCE 5.0/6.0)、统一采用支持EABI标准交叉编译器、可以让用户无需编程,即可自由简单定制WindowsCE开机画面的开发板2。图2-1 mini2440 开发板 全局外观 Mini2440接口布局如图2-2所示,它在十分紧凑的100 x 100mm 面积上精致安排了开发者常用的各种常用接口,并且还引出了供开发测试需要的富余的IO 口和总线接口。图2-2 mini2440接口布局2.2 软件开发平台2.2.1 嵌入式系统Linux现今,与嵌入式应用相结合的嵌入式操作系统有VxWorks、Linux、WinCE、COS-II等,他们各有其特点,相比较而言,嵌入式Linux更具有优势。归纳起来,嵌入式Linux至少具有以下优势3:(1)开放的源码,丰富的软件资源Linux是自由的操作系统,它的开放源码使用户获得了最大的自由度。Linux上的软件资源十分丰富,每一种通用程序在Linux上都可以找到。(2)功能强大的内核,性能高效、稳定,多任务Linux的内核非常稳定,它的高效和稳定性已经在各个领域,尤其在网络服务器领域,得到了事实的验证。Linux内核小巧灵活,易于裁减,这使得它很适合嵌入式系统的应用。(3)支持多种体系结构,如X86、ARM、MIPS、ALPHA、SPARC等目前,Linux已经被移植到数十种硬件平台上,几乎支持所有流行的CPU。(4)完善的网络通讯、图形、文件管理机制Linux自产生之日起就与网络密不可分,网络是Linux的强项。另外,Linux还支持多种文件和图形系统。(5)支持大量的周边硬件设备Linux上的驱动已经非常丰富了,它们支持各种主流硬件设备和最新硬件技术。(6)大小、功能都可定制Linux秉承Unix的优秀设计思想,非常灵活,各部分的可定制性都很强。(7)良好的开发环境,不断发展的开发工具集Linux有着非常优秀的完整开发工具链,有十几种集成开发环境,其中很多是免费的,大大降低了开发费用。(8)软件开发者的广泛支持Linux的自由精神吸引了成千上万的程序员投入到Linux的开发和测试中来,这使得Linux在短时间内就成为一个功能强大的操作系统。(9)价格低廉有效降低产品成本,对成本敏感的嵌入式系统来说至关重要,Linux恰好具有这一特性。正是这些优势,嵌入式Linux系统的研发热潮正在蓬勃兴起,并且占据了很大的市场份额,除了一些传统的Linux公司(如RedHat、Monta Vista等)正在从事嵌入式Linux的开发和应用之外,IBM、Intel、Motorolar等著名企业也开始进行嵌入式Linux的研究。应用程序文件系统驱动模块内存驱动模块网络驱动模块GPIO驱动模块图形驱动模块音频输出驱动模块嵌入式Linux内核硬件平台图2-3 嵌入式Linux体系结构2.2.3 嵌入式媒体播放器概述1. 嵌入式媒体播放器的特点嵌入式媒体播放器从功能上、技术上来说,和桌面系统中使用的媒体播放器没有太大的区别,都是可以让用户欣赏多媒体文件的应用软件。但忧郁它处于嵌入式系统这一特殊环境中,因为拥有了一些自身的独特之处4。(1)嵌入式媒体播放器具有多样性嵌入式系统是针对各种具体设备设计的,设备的多样性决定了系统的多样性。也决定了嵌入式媒体播放器的多样性。桌面市场中,Windows和Windows Media Player占有绝对的优势。嵌入式媒体播放器市场不会出现这种局面,因为产品大都是针对特定设备开发,不能通用。因此根据具体应用的需求,对嵌入式媒体播放器进行定制是必须,在编制代码时,要充分考虑到这一点,使之能方便的进行修改,裁剪。(2)嵌入式媒体播放器与操作系统联系紧密桌面计算机环境中,操作系统处于硬件和应用程序之间。对下,操作系统管理硬件设备;对上,操作系统为应用程序提供必要的接口。所以操作系统是整个计算机系统中的核心部分,媒体播放器只是操作系统支持的众多应用程序中的一个。嵌入式系统中情况则完全不同。嵌入式产品一旦开发完成,基本上用户就不太可能进行软件定制了。因此嵌入式媒体播放器和嵌入式操作系统的关系是非常密切的,他和其他嵌入式系统中对的应用软件一样必须充分利用系统资源以达到很好的执行效率和系统需要的响应速度。(3)嵌入式媒体播放器的实现环境特殊任何软件的实现,都离不开硬件系统的有力支持。嵌入式系统对硬件往往有一些特殊要求,如为节省硬件成本,保证比较低廉的价格,要注意性能价格比;为满足硬件设备对系统功耗的限制,要选择省电、低散热量的器件等,因此一般采用较低主频的CPU。如何在有线的硬件条件下实现软件性能的最大化是一个必须考虑的问题。2. 嵌入式媒体播放器的发展现状由于嵌入式市场的迅速崛起,许多公司都开始进行嵌入式软件的开发,并且已经研发出多种产品,这期中就包括嵌入式媒体播放器。但是没有任何一个产品能够像Microsoft的Internet Explorer在PC浏览器市场中一样占据嵌入式媒体播放器市场垄断地位。这主要是因为现有的嵌入式媒体播放器大部分都是由PC机上用的播放器移植而来,并没有充分考虑到嵌入式系统的特殊性,如Microsoft Windows CE中附带的播放器就是Windows Media Player的简化版,因为市场已经出现的很多嵌入式媒体播放器在功能、速度、显示和易用性等各方面的表现还不尽如人意。目前嵌入式媒体播放器任然在不断向前发展,除了继续跟随各种音视频标准的新版本升级以及支持更多的应用外,还在拓展系统的应用模式和领域。例如和浏览器技术、数字电视机顶盒技术集成,实现完整对的数字电视软件平台;和Java技术、DSP技术结合,解决实时性强的动态视频处理;把多媒体技术应用到更多传统的电器领域,以提供交互式的应用等等。这些都说明嵌入式媒体播放器有着非常广阔的发展前景。2.3 MplayerMPlayer 播放器是Linux 下最优秀的多媒体播放器之一,它的播放速度最快,支持的文件格式也最多,在X86 PC 机上运行很稳定,也可以把它移植到非X86CPU上的嵌入式系统中去9。MPlayer 能使用众多本地的Xanim,RealPlayer 和Win32 DLL 编解码器,可播放MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、QT/MOV、FLI、RM、NuppelVideo、yuv4mpeg、FILM、RoQ文件。借助于MPlayer你能观看VideoCD、SVCD、DVD、3ivx、RealMedia 和DivX 格式的电影。MPlayer 的另一个大的特色是支持广泛的输出设备,它可以在X11、Xv、DGA、OpenGL、SVGAlib、fbdev、Aalib、DirectFB下工作,而且你也能使用GGI和SDL(由此使用它们支持的各种驱动模式)和一些低级的硬件相关的驱动模式。这个播放器能很稳定地播放被破坏的MPEG文件,并且它能播放Windows media player都打不开的有损坏的AVI文件,甚至,没有索引部分的AVI文件也可以播放。具体信息可参考MPlayer官方网站:http:/www.mplayerhq.hu/。图2-4与图2-5是MPlayer的逻辑结构图,从功能层面上,主要分为4个部分:输入层(input layer):包含读取媒体文件模块,主要负责将文件中的媒体数据按照流的方式读入进来,并将数据存放到一块缓冲区中,解析文件头从而判断该流属于何种音、视频格式的文件。分流层(demuxer layer):其主要功能模块为分流器,它的功能是依靠数据头来判断音、视频在这段文件数据中的各自位置,继而对音、视频进行分离。分离后的音、视频数据将分别存入各自缓冲区。分流器同时将提取时间戳(PTS,Presentation time stamp),随音、视频数据一同传送。通过PTS,我们可以有效的控制音频和视频的同步输出。解码层(decoder layer):该层不但包含音、视频的解码模块,也包含了音、视频解码器的选择模块。在解码层中,由音、视频解码模块根据分流器分离出来的音、视频数据的压缩格式,初始化对应格式的音、视频解码器以便将音、视频数据分别进行解码,将解码出来的信息输出,传递给下一级的输出层。输出层(output layer):主要包含音、视频同步,音频输出和视频输出三个模块。这一层由输出模块选择最适合的输出设备驱动,根据PTS确定的同步机制(如丢帧或修正PTS 跳变等)进行音、视频的播放以达到同步的目的。如果要达到一些特定的输出效果,可以先对即将输出的数据进行一些处理,然后再进行输出。Mplayer.cMain()Init input and guiDemux_openInit_best_audio_codecInit_best_video_outvf_open_filterLibmpdemux/Demuxer.cNew_demuxer(stream)Open_demuxer_frint(demux)Frint的值为:avi,real,rtpd等对应函数分布在demux_avi.c.Ademux_real.c,demux_rtp.c中Libmpcodes/dec_audio.cAudio_codec_list-NULLselectcode(0 Initcode(0 Libmpcodes/dec_audio.c从mpcodecs_ad_driver中选择解码器初始化Libvo/video_out.cVideo_driver_list-NULLvideo_out_driversVideo_driver-preimit(0Ad.c mpcodecs_ad_drivers:mp3Acm,pcm.等的解码器分布于文件 ad_mp3lib.c,ad_acm.c,ad_pcm.cLibvo/video_out.cVideo_out_drivers:svga,directx.等驱动分布于vo_svga.c,vo_directx.c等文件中Libmpcodes/vf.cvf_open_plugin(filter)Libmpcodes/vf.c filter_list:noise,Yvu9,eq等fileter分布于vf_eq.c,Vf_noise.c,vf_yuv9.c文件中图2-4 Mplayer结构图Mplayer.cMain().Init_best_video_codecPreinit_audio_filtersInit_best_audio_outBuild_afilter_chaininit_audio_filtersEcvents loopDecode_audioAdudio_out-playVideo_readDecode_videoExitLibmpcodes/dec_video.cVideo_codec_list-NUllinit _video()Libmpcodes/dec_video.c从mpcodecs_vd_drivers中选择解码器初始化Libao2/audio_out.cAudio_driver_list-NULL audio_out_driversAaudio_out-init(0Vd.cmpcodecs_vd_drivers:xvid,qtvideo.等解码器分布于vd_xvid.c,vd_qtvideo.c等文件中Libao2/audio_out.c,audio_out_drivers;win32,dsound等驱动分布于ao_win32,ao_dsoound.c等文件中Libmpcodees/dec_audio.ca_initLibaf/af.c filter_list:delay,volume等Filter分布与af_delay.c,af_volume.c等文件中图2-5 Mplayer结构图2.4 QT2.4.1 QT的介绍Qt是一个支持多操作平台的应用程序开发框架,开发语言是C+。QT最初最主要是为跨平台的软件开发者提供同意的精美的图形用户编程接口,但是现在它也提供了统一的网络和数据库操作的编程接口。正如微软当年为操作系统提供了友好、精致的用户界面一样,今天由于Trolltech的跨平台开发框架Qt的出现,也使得Unix、Linux这些操作系统以更加方便、精美的人机界面走进普通用户1011。Qt以工具开发包的形式提供给开发者图形设计器、Makefile制作工具、字体国际化工具、Qt的C+类库等等。Qt的类库从某种意义上说基本等价与MFC的开发库,但是Qt的类库是支持跨平台的类库,也就是说Qt类库封装了适应不同操作系统的访问细节,这正是Qt的魅力所在。2.4.2 Qt的编程特性Qt与其他GUI最大的不同就在于它提供了“信号与插槽”机制1213。这一机制提供了对象间的通信机制,它易于理解和使用,并完全被Qt图形设计器所支持。它完全可以取代原始的回调和信息映射机制;信号与插槽是迅速的,类型安全的,健壮的,完全面向对象并用C+来实现的一种机制。Qt的窗口在时间发生后会激发信号。例如一个按钮被点击时会激发一个“clicked”信号。程序员通过建立一个函数(称作一个插槽),然后调用connect()函数把这个插槽和一个信号连接起来,这样就完成了一个事件和响应代码的链接。信号与插槽机制并不要求类之间相互知道细节,这样就可以相对容易的开发出代码可高重用的类。信号与插槽机制以警告的方式报告类型错误,而不会使系统产生奔溃。一个对象的信号可以被多个不同的插槽连接,而多个信号也可以被连接到相同的插槽。当信号和插槽被连接起来时,应当确保它们的参数类型是相同的,如果插槽的参数个数小于和它连接在一起的信号的参数个数,那么从信号传递插槽的多余的参数将被忽略。信号与插槽机制是以纯C+代码来实现的,实现的过程使用到了Qt开发工具包提供的于处理器和元对象编译器(moc)1415。Qt为开发该媒体播放器的图形用户界面提供了良好的支持,并且具有占用资源小,响应速度快,界面简介的优点。第3章 系统分析与设计3.1 支撑环境硬件环境:由S4C2440构建。软件环境:Red Hat Enterprise Linux 5.0交叉编译工具:gcc-3.4.5-glibc-2.3.6主机编译工具:gcc-4.1.2图形用户界面:Qt/Embedded 4.7QT/Embedded嵌入式LINUX帧缓冲其他应用程序多媒体播放器 图3-1系统总体框架由图可以看出,多媒体播放器属于上层应用程序,位于Linux用户空间。这样设计的目的是为了系统移植性考虑的,尽量坐到平台无关性。与操作系统的联系尽可能的少,是系统在设计的时候应注意的问题。3.2 需求分析根据车载多媒体播放器项目的需要,结合嵌入式系统的特点以及媒体播放器必须具备的功能,要求软件可以达到如下要求和技术指标:(1)支持符合 MPEG-1、MPEG-2、MPEG-416标准的多媒体文件,支持扩展名为avi、mp3、wav、mpg、mpeg的文件。(2)具有多媒体的文件的打开、删除、显示文件头、像是文件长度、显示播放时间等功能。(3)可以选择打开任意位置下的多媒体文件。(4)运行是占用内存小,响应速度快。(5)可以实现播放器基本的播放暂停功能。(6)可以实现播放视频的快进快退,上一文件、下一文件,静音,调节音量的功能。(7)提供对播放列表的支持,可以对播放列表进行添加,播放功能。(8)可以实现播放器的窗口自由改变大小功能。(9)给用户提供友好的图形用户界面,把各种常用的播放控制按钮合理布局,方便用户操作。2.3 模块设计根据需求将多媒体播放器分为10个模块,如图3-2所示。多媒体播放器打 开 模 块列 表 模 块播 放 模 块暂 停 模 块停 止 模 块快 跳 模 块换 曲 模 块音 量 模 块静 音 模 块添 加 模 块播 放 模 块取 消 模 块显 示 模 块 图3-2 播放器的模块划分10个模块分别分为:(1)打开模块:打开目标文件,如音频、视频文件。(2)列表模块:打开播放列表。 添加模块:添加播放文件。 播放模块:播放添加的文件。 取消模块:取消添加的文件。(3)播放模块:播放添加的文件。(4)暂停模块:暂时停止正在播放的音/视频文件。(5)停止模块:结束当前音/视频文件的播放,但不退出播放器。(6)快跳模块:实现文件的播放的快进快退。(7)换曲模块:实现播放文件的上一曲、下一曲。(8)音量模块:调节音量大小。(9)静音模块:播放静音。(10)显示模块:显示播放文件的名称、播放时间。图3-3多媒体文件播放主要过程如图3-3为播放器播放多媒体文件的主要过程,主要过程是:(1)首先,播放器进行自身的初始化,包括检测硬件平台、出错信息处理。(2)读入媒体数据文件,并根据文件类型(如本地文件,网络类型mms、http 等)选择不同的模块进行分析,并提取出一些关键的数据,存放在相关缓冲区。(3)通过解析文件格式选择相应的分流器,对音、视频数据进行分流,并将分流后的数据存入到音、视频各自的缓冲区中等待处理。(4)读取音、视频各自缓冲区中的数据信息,并结合媒体文件的头部信息,分别初始化音、视频的过滤器及解码器,然后开始进行解码。(5)解码后收集时间戳,音、视频做同步处理。最后,将处理后的音、视频分别发送到各自的输出设备上进行播出。第 4章 系统详细设计4.1 UI界面设计Qt Designer,又被称作是Qt 设计师,是一个所见即所得的全方位GUI 构造器,它所设计出来的用户界面能够在多种平台上使用。它是Qt SDK 的一部分,也是最为重要的开发工具之一。利用Qt Designer,我们可以拖放各种Qt 控件构造图形用户界面并可预览效果。使用Qt Designer,既可以创建“对话框”样式的应用程序、又可以创建带有菜单、工具栏、气球帮助以及其他标准功能的“主窗口”样式的应用程序。Qt Designer提供了多种窗体模板,可以创建自己的模板,确保某一应用程序或某一系列应用程序界面的一致性。可以创建自己的自定义窗体,这些窗体可以轻松与Qt Designer集成。Qt Designer 支持采用基于窗体的方式来开发应用程序。窗体是由用户界面(.ui) 文件来表示的,这种文件既可以转换成C+ 并编译成一个应用程序,也可以在运行时加以处理,从而生成动态用户界面。Qt 的构建系统能将用户界面的编译构建过程自动化,使设计过程更轻松。Qt Designer界面如图4-1所示。图4-1 Qt Designer主界面根据播放器功能,可以将UI界面分成3个部分,如图4-2所示:(1) 文件播放区:文件播放主体框体,使用widget控件。(2) 文件信息显示区:可以显示播放文件的文件名,播放进度条与进度时间,文件播放长度,使用horizontalSlider,Label等控件搭建。(3) 播放操作区,包括可以对播放器进行播放、暂停、停止、快进快退、下一曲、静音、打开任何路径文件进行播放以及打开播放列表等功能。其中播放列表界面的搭建如图4-2所示。文件播放区文件信息显示区播放操作区 图4-2 UI主界面播放列表模块的实现需要新建UI界面,主要通过Listwidget与Button控件来实现。播放列表的UI界面使用了信号/槽设计模式,通过UI界面无需代码就可以以主观显示的方式来实现信号/槽模式。如图4-3所示,播放列表的UI界面中控件ButtonPlay与ButtonCancel分别与listwidget由线连接,这说明他们进行了信号与槽连接。通过F4快捷键可以进入编辑信号/槽模式,拖动发出信号的控件连线到调用槽的控件上可以跳出设置连接信号/槽界面,如图4-4所示。ButtonPlay与ButtonCancel都是发出的click()信号,分别对应listwidget的accept()与close()槽。在代码编写时就无需为此编写代码了,系统会自动生成有创建关信号/槽的代码。图4-3 播放列表UI界面图4-4 连接信号/槽界面4.2 基本功能模块实现4.2.1 初始化功能1. 为按钮添加图标添加图标使播放器更加美观,可以给用户带来更好的体验。这里用了Qicon类中addPixmap的方法给Button加上图标。QIcon icon_play; /播放按钮icon_play.addPixmap(QPixmap(QString:fromUtf8(images/pause_enabled.png), QIcon:Normal, QIcon:Off);pushButton_2-setIcon(icon_play);通过pushButton-setFlat(true)代码设置按钮无边框。功能图标如图4-5所示: 打开文件 播放列表 暂停 停止 快退 快进 上一曲 下一曲 静音 音量调节图4-5 播放器按钮的图标2. 初始化进度条及QProcess类Qt提供了一个QProcess类用于启动外部程序并与之通信。启动一个新的进程的操作非常简单,只需要将待启动的程序名称和启动参数传递给start()函数即可。当调用start()函数后,myProcess进程立即进入启动状态,但star程序尚未被调用,不能读写标准输入输出设备。当进程完成启动后就进入运行状态并向外发出started()信号。在输入输出方面,QProcess将一个进程看做一个流类型的I/O设备,可以像使用QTcpSocket读写流类型的网络连接一样来读写一个进程。当每访问一个文件,进度条自动初始化恢复到出初始状态。horizontalSlider-setPageStep(1);/初始化进度条process = new QProcess(this);/初始化QProcess类process-setProcessChannelMode(QProcess:MergedChannels);3. 初始化信号、槽通过调用 QObject 对象的 connect 函数来将某个对象的信号与另外一个对象的槽函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用。这个函数的作用就是将发射者 sender 对象中的信号 signal 与接收者 receiver 中的 member 槽函数联系起来。当指定信号 signal 时必须使用 QT 的宏 SIGNAL(),当指定槽函数时必须使用宏 SLOT()。如果发射者与接收者属于同一个对象的话,那么在 connect 调用中接收者参数可以省略。 connect(pushButton_2,SIGNAL(clicked(),this,SLOT(play_pause_slots();connect(pushButton_3,SIGNAL(clicked(),this,SLOT(stop_slots();connect(pushButton_4,SIGNAL(clicked(),this,SLOT(playerReward_slots();connect(pushButton_5,SIGNAL(clicked(),this,SLOT(playerForward_slots();connect(pushButton_6,SIGNAL(clicked(),this,SLOT(previous_slots();connect(pushButton_7,SIGNAL(clicked(),this,SLOT(next_slots();connect(pushButton_8,SIGNAL(clicked(),this,SLOT(open_file_slots();connect(pushButton_9,SIGNAL(clicked(),this,SLOT(show_list_slots();connect(spinBox,SIGNAL(valueChanged(int),this,SLOT(set_volume_slots(int);connect(pushButton,SIGNAL(clicked(),this,SLOT(set_sound_slots();connect(process,SIGNAL(readyReadStandardOutput(),this,SLOT(back_message_slots();4.2.2 显示模块1. 获得文件名由于是车载多媒体播放器,应有一个专门的目录存放音视频播放文件,这里setPath将此目录设定为movie,entryListt获取文件名于文件播放长度。由于在linux环境中,文件描述符0,1代表的是“.”“.”,所以从文件2开始播放。设置file_count为2,下一曲播放文件3.将文件2的文件名输出在label_3上。directory.setPath(./movie);/设定路径files = directory.entryList(QDir:AllEntries,QDir:Time);file_name = files2; /文件0和1为 ”.” ”.”,所以从文件2开始播放file_count = 2;label_3-setText(files2);2. 获得时间信息生成QTimer类的对象timer,并将定时器启动为1秒timeout1次。调用connect函数捕捉timeout信号,然后调用获取时间的槽来获取播放信息。timer = new QTimer(this);timer-start(1000); /启动定时器 1秒timeout 1次connect(timer,SIGNAL(timeout(),this,SLOT(get_time_slots();获取播放文件时间槽函数void MPlayer:get_time_slots()调用获取时间槽函数时,首先判断播放状态,若开始播放则立即读取时间节点与文件长度。if(isPlay)process-write(get_time_posn); /获取播放时间节点process-write(get_time_lengthn); /获取播放文件长度 connect(process,SIGNAL(readyReadStandardOutput(),this,SLOT(back_message_slots();当process有可读取的信息时,发出信号,在槽函数back_message_slots()中处理读取信息。处理信息槽函数void MPlayer:back_message_slots()当process可以读取到信息时,将读取到信息传入函数,通过Qstringlist的split分割字符串方法,取我们需要的文件时间信息。对取到的信息做一个字符串对比。当信息为ANS_TIME_POSITION,属于播放时间节点信息,这时将读取到的时间信息赋值到当前时间,并进行类型转换,在通过时间格式转换函数转换输出在播放器时间进度信息栏上。并将进度条按照当前时间节点与时间总长度百分比调正位置。QString messa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论