




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2012届毕业设计 基于qt的嵌入式多媒体播放系统系 、 部: 电子与信息工程系 学生姓名: 刘 永 指导教师: 戴日光 职称 讲师专 业: 电子信息工程 班 级: 电子0801班 完成时间: 2012年5月26日 摘 要当前社会,随着相关技术的发展以及经济的发展和精神文明水平的提高,越来越多的人越来越注意到了精神生活的享受。视频、音乐是人们首选的选择;也因为科学技术的发展,越来越多的嵌入式设备进入了人们的生活,它的体积越来越小巧,而功能越来越强大,功能也越来越丰富。市场上的多媒体播放设备也越来越多,价格也越来越便宜、美观。如此丰富的产品让人应接不暇,不知如何购买,所以很多人往往是注重外观的美观和嵌入在其中的软件操作体验,而对其倾心购买。所以说良好的用户体验不仅仅可以提高市场的占有率,而且也是一种产品文化的体验以及技术水平的体现。受不受欢迎也反映出了社会精神文化的一种体现。随着精神文明的建设,人们的操作体验上越来越苛刻,功能上也越来越严格,不仅要良好地品质,还要良好地体验。然而岁月无情的向前行进,新生一代终将取代上一辈的前辈,年轻人朝气蓬勃,对精神享受的程度也高于上一辈,所以当前对嵌入式设备的需求也越来越大。本课程设计以当前对嵌入式多媒体设备需求量大为背景,提出了一个基于qt的适用于嵌入式设备的多媒体播放系统的架构设计方案。论文给出了一种嵌入式系统中音频视频同步的解决方案,有效的提高了嵌入式多媒体播放系统的音频视频同步性能,在此基础上设计并实现了基于linux/qt的嵌入式多媒体播放器,实现了基于qt的嵌入式多媒体播放器系统。在本课程设计中,我们基于linux平台,提出了基于著名的mplayer播放器上在slave模式下,给用户一个良好的操作界面,实现对mplayer的相关功能的操作,比如暂停、快进、上下曲的切换等功能。关键词:qt;多媒体播放器;嵌入式abstractsociety, with the development of related technologies, as well as economic deve- lopment and raise the level of spiritual civilization, more and more people are increasingly aware of the spirit of enjoyment of life. video, music is the preferred ch- oice of the people; but also because of the development of science and technology, more and more embedded devices into peoples lives, its more compact size, while the more powerful, more and more functions rich. also more and more multimedia devices on the market, prices are getting cheaper, and beautiful. so rich people could attend, i do not know how to buy, so a lot of people tend to focus on the appearance of the beautiful and embedded software operating experience, its cordial buy. so a good user experience not only can improve market share, but al- so a product of cultural experience and the embodiment of the technical level. are popular also reflects a reflection of the social spirit of the culture. with the construction of spiritual civilization, more and more demanding on the operating experience of the people function more and more strict, not only to good quality, but also a good experience. however, years of relentless forward march, the younger generation will eventually replace the older generation of predecessors, vibrant young people enjoy the spirit of the de gree is also higher than the previous generation, so the needs of embedded devices is growing.this course is designed to present the background, a qt-based on the application of embedded devices, multimedia playback system architecture design of embed- ded multimedia devices demand greatly. the paper gives the synchronization of audio and video in an embedded system solutions, effectively raising the embed- ded multimedia playback audio and video synchronization performance, designed and implemented based on the embedded linux / qt based multimedia player to a chieve a system of embedded multimedia player based on qt.this course is designed based on the linux platform, raised based on the famous mplayer player int he slave mode, giving users a good user interface operating mplayer related functi ons,such as pause, fast forward, up and down song switching and other functionskeywords: the qt;embedded linux;media player目 录摘 要iabstractii目 录11引言12嵌入式多媒体播放器系统的设计23插件接口模块和解码库模块43.1插件接口模块设计43.1.1文件特性函数43.1.2获取文件信息函数43.1.3读取音频采样函数43.1.4视频帧函数43.1.5音视频同步函数43.2解码库模块54嵌入式多媒体播放器系统的实现64.1数据流程的总体设计64.2嵌入式音频视频同步设计75多媒体播放系统在pc端的实现95.1mplayer的安装95.2pc端环境的搭建115.3mplayer项目工程的建立与开发135.3.1mplayer工程的建立135.3.2mplayer实现原理205.3.3mplayer 界面ui搭建225.3.4mplayer 代码编写225.3.5mplayer 工程编译225.3.6mplayer 运行和功能介绍226总结22参考文献22致 谢22附 录22111引言随着用户要求的不断提高,越来越多的嵌入式设备使用的功能强大、价格低廉的嵌入式linux作为操作系统并开始采用较为复杂的图形界面。linux的强大与稳定,在嵌入式领域赫赫有名,更由于其开源的特性,从而节约了不少的开发成本,和丰富的可裁剪、可定制性。嵌入式linux设备要求低,硬件设备上没有硬件开发的局限性,从而在开发中可以实现最优的性能和性价比。qt以其强大地功能、良好地可移植性逐渐成为一种被广泛使用的gui系统。正是由于嵌入式操作系统及其相应图形界面的不断发展,嵌入式软件的开发显得越来越重要。其中嵌入式多媒体播放器由于能满足人们的视听享受已经逐渐成为了系统中不可或缺的重要组成部分,在嵌入式系统开发多媒体播放器已经成为一个技术热点,当前许多嵌入式产品中都包含多媒体播放器。并且随着qt的开源,基于qt开发的程序成本大大降低,qt的稳定性以及功能的多样性提升了一个水平,满足了嵌入式设备价格低廉,功能强大的特性,同时qt强大的开发功能和可移植性,实现了多平台的兼容性,可以很快移植到其他的平台上,从而节约了开发周期和成本,促进了嵌入式设备的开发水平。因此基于qt的嵌入式系统中实现多媒体播放器具有深刻的意义和价值。2嵌入式多媒体播放器系统的设计2.1架构设计嵌入式多媒体播放器架构设计方案如图1所示。通过使用纯c+语言来支持嵌入式linux系统,采用qt/embedded作为gui来提供强大的用户界面,实现一个开放式的插件接口来增强扩展性,利用内核帧缓冲来输出,消除对特定架构的依赖,从而保证可移植性。多媒体播放器属于上层应用程序,位于linux用户空间。这样设计的目的是为了系统的移植性。图形用户界面窗口以qt/embedded为基础开发,通过调用qt/embedded提供的类库根据需要设计可以管理多媒体文件的基本窗口,包括打开、删除、显示文件长度、显示播放时间等窗口,以及为方便用户设定的管理播放列表、进行播放控制的窗口,这些都是直接和用户打交道的。由于采用了qt/embedded最为广泛使用的的gui,可移植性得到了保证。文件输入主要是对用户指定的文件进行读取和解析,将获得文件的长度、播放时间、编码格式、音视频帧率、文件标题等内容,结合mime的处理,显示预先设计的窗口中。插件接口调用主要是把所有对解码器的操作整合到一个统一的开放式接口当中,根据上一部分解析出的文件信息区查找相应的解码器插件并调用,如果没有找到可用的解码器可以返回信息提醒用户添加相应的插件。通过实现这样一个接口可以使播放器的扩展性大大提高,因此本部分是多媒体播放器的核心。文件解码和输出主要负责通过调用解码器对音视频数据流进行解码,然后利用qt/embedded可以直接操纵内核帧缓冲framebuffer的特性,将解码之后的数据通过framebuffer直接送到输出设备输出,避免对directshow、opengl等特定架构的依赖,进一步增强可移植性。图1 嵌入式多媒体播放器架构图3插件接口模块和解码库模块3.1插件接口模块设计插件接口模块是整个播放器的核心部分,它封装了对具体解码器的操作,从而在输入和输出模块之间搭建一座桥梁,确保数据的正常流动。插件接口模块主要提供了以下方法来控制解码器:3.1.1文件特性函数bool isfilesupported(const qstring&filename);通过检查文件的扩展名来确定待播放的文件是否被播放器支持,若是返回真,否则返回假。可识别的扩展名有asf、avi、mp2、mp3、mpeg、mpg、ogg、wav等。如果添加了新的解码器插件以后就可以识别新的文件格式,只需要将其扩展名添加到此函数支持列表中即可。3.1.2获取文件信息函数const qsting&fileinfo();用于获取文件的各种信息并将结果保存到一个常量字符串中,便于其他函数调用。这些信息包括:播放时间、音频格式、音频比特率、音频通道、音频频率、视频格式、视频比特率、视频高度、视频宽度等。3.1.3读取音频采样函数bool audioreadsamples(short*output,int channels,long samples, long&samplesread,int);调用解码器对音频采样数据进行读取,是音频数据处理的核心部分。output表示待输出文件的指针,channels表示通道数,samples表示采样数,samplesread表示待读取采样数3.1.4视频帧函数 bool videareadscaledframe(unsigned char*output_rows,int int in_w, int in_h,int out_w,int out_h,colorformat fmt ,int);调用解码器对视频帧进行读取,是视频数据处理的核心部分。参数output_rows表示输出列表的指针,in_w、in_h、out_w、out_h分别表示输入和输出的帧数据的宽度和高度,fmt表示采用的色彩模式,返回值用来判断执行是否成功。3.1.5音视频同步函数int sync(file*fp,int auindes,struct timeval*vtime);fp为打开的多媒体文件指针,vtime为当前正在播放的视频文件的帧头中提取的时间,auindex指出当前的音频帧计数,即当期播放到了第几帧。通过这些参数就可以计算出希望跳到的帧数和当前帧数的差值,然后根据这个差值将音频流向前(滞后)或向前(超前)跳即可。同时sync函数还会将此差值int反馈给音频解码器,让音频解码器修正数据流的时间戳,如此循环,从而达到较好的音视频同步效果。此函数的总体思想是在播放视频数据流的同时启动另一个线程,打开对应的音频数据流播放,然后在视频线程中来同步音频数据。此外还有插件初始化和注册函数void plugininit()、文件初始化函数void fileinit()、查找函数bool seek(long pos)、清空视频数据函数flushvideo- packets()和清空音频数据函数flushaudiopackets()、获取下一数据包函数mediapacket*getanotherpacket(int stream)等,这里就不做详细介绍了。3.2解码库模块解码库模块的主要作用是为插件接口模块提供解码器,考虑到播放器的可移植性和扩展性,本系统采用了ffmpeg解码库。ffmpeg解码库是linux下的一个开源解码器集合,它支持多种音频和视频解码标准,还支持转文件格式、制作avi等,功能十分强大。可以在windows下是要使用ffshow插件,linux下的mplayer播放器都是使用ffmpeg解码库。解码库又包含解码器和分离器。解码器就是对音视频数据流进行解码的组件,分离器就是把文件流中的数据分离为音频数据流和视频数据流的组件,音频数据和视频数据是分开解码的,所以二者缺一不可。4嵌入式多媒体播放器系统的实现4.1数据流程的总体设计图2为系统数据流程:首先输入模块从数据流源(多媒体文件)读入数据,此时它将读入文件头,做一些基本的处理,如读出文件长度,获取此文件的编码类型、比特率,判断能否播放等;然后插件接口模块会调用分离器插件将多媒体切分为视频数据流和音频数据流;在经过视频fifo和音频fifo,排序处理;最后送入视、音频解码器调用相应的解码器进行解码,对于音频数据就会进行重采样,对于视频数据就会读取相应的帧,逐帧解码;之后经过采样的音频数据和经过渲染覆盖的视频数据进行音视频同步,再分别通过视、音频输出模块输出。这其中,数据的读入、分离、解码、输出都是通过qt提供的类库以多线程同时进行的,在解码的同时程序也在不断地将数据读入缓冲区并排序等待处理,以提高效率。输入模块的主要功能是将用户指定的多媒体文件读入。由于不同格式的多媒体文件需要调用不同的解码器才能正常打开,因此考虑到程序的模块化将实际的文件打开工作交给插件接口模块调用相应的解码器进行,输入模块只对文件进行一些基本的处理并对文件内容进行缓存,然后为插件接口模块输送原始数据流。用户首先通过图形界面选定待播放文件发出打开指令,这将会使输入模块接收到一个信号并通过用户界面传回的信息获得待播放文件的文件路径和文件名。接下来输入模块会检查文件路径是否合法、文件是否为空,之后会向插件接口模块发出信号,通知插件接口模块查找可用的解码器,为文件解码做好准备。下一步就是进行调用初始化函数init(),其具体过程下面会详细介绍,最后就是将工作移交给插件接口模块,让它调用对应的文件格式解码器的open()函数。输出模块的主要功能就是讲通过解码器解码之后的音频、视频数据送到输出设备(如lcd显示屏、扬声器)输出。根据输出内容的不同可以将输出模块划分为音频输出和视频输出两个子部分。这两个部分基本上是相互独立输出的,通过插件接口模块的同步控制让它们在输出时保持同步。视频输出和音频输出稍有不同,它利用qt/embedded可以将直接控制framebuffer的特性来输出视频数据。帧缓冲区是显卡上的内存,使用帧缓冲区可以提高绘图的速度和整体性能,与帧缓冲区有关的设备室/dev/vb0(主设备号29,此设备号0)。图2 系统数据流程4.2嵌入式音频视频同步设计本方法的基本思想是以视频为主媒体流,音频流为从媒体流,视频的播放速率保持不变,根据本系统时钟确定的实际显示时间,通过调整音频播放速度来达到音视频同步。整个系统的音视频同步数据流程见图3。首先选择一个本地系统时钟参考(lscr),要求本地系统时钟参考上的时间是线性递增的。然后将lscr分送到视频解码器和音频解码器,由这两个解码器根据各帧的pts值对照本地系统时钟参考产生各帧准确的显示或回放的时间。也就是说,生成输出数据流时依据本地参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间)。在播放时,读取数据块上的时间戳,同时根据本地系统时间参考上的时间来安排播放。图3 音视频同步数据流程基于时间戳的播放过程中,仅仅对早到的或晚到的数据块进行等待或快速处理,往往是不够的。如果想要更加主动并且有效地调节播放性能,就需要引入反馈机制,也就是通过对比音视频的时间戳将当前数据流的播放状态反馈给上层的“源”。如果音频流滞后,就即时通知音频解码器加快音频流输出,但如果滞后太多,则直接将当前数据丢弃,直接跳到下一帧;如果视频流滞后,就通知音频解码器减慢音频输出速度等待视频流,如之后太多也直接进行跳帧。数据流首先通过分离器分解为视频数据流和音频数据流,然后经过对应的解码器,同时由本地系统时钟来进行时间戳控制;获得准确显示或回放时间以后进行时间戳比较;若同步则直接输出,不同步则进行音频跳帧或等待,直到同步后输出。5多媒体播放系统在pc端的实现qt是一个1991年由奇趣科技开发的跨平台c+图形用户界面的应用开发框架。它既可以开发gui程序,也可用于开发非gui程序,比如控制台工具和服务器。qt是面向对象语言,易于扩展,并且允许组件编程。2008年,奇趣科技被诺基亚公司收购,qt也因此成为诺基亚旗下的编程语言工具。qt支持windows平台、linux/unix平台、macintosh平台、embedded平台等,所以qt所开发的应用具有有良好地可移植性。目前最新的版本是qt 4.7.4。官方下载地址是:/downloadcentos:centos(community enterprise operating system)是linux发行版之一,它是来自于red hat enterprise linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以centos替代商业版的red hat enterprise linux使用。两者的不同,在于centos并不包含封闭源代码软件。在本项目中,采用的事centos 5.6。5.1mplayer的安装在环境搭建之前我们先要安装mplayer所需的插件和相关的解码库。首先将mplayer-1.0rc2.tar.bz2、libmad-0.15.1b.tar.gz拷贝到主机即centos 5.6中,进行如下操作:#tar xvfz libmad-0.15.1b.tar.gz#cd libmad-0.15.1b#./configure#make#mkdir /lib/lib#mkdir /lib/include#cp .libs/libmad.a/lib/lib#tar xvfj mplayer-1.0.rc2.tar.bz2 #cd mplayer-1.0rc2 #./configure -with-extraincdir=/lib/include -with-extralibdir=/lib/lib #make #make install此时可以试着播放一下mp3、avi等文件了#mplayer ac mad 1.mp3 #mplayer ac mad 2.avi下面是运行mplayer后mp3、avi音视频的效果。图4为mp3音频效果图,图5为avi 视频效果图,从结果可以看出我们无法对mplayer进行相关的操作和控制。图4 mplayer 播放mp3效果图5 mplayer播放视频效果从上面的结果可以看出,mplayer虽然可以播放mp3相关的功能但是我们不能对其进行相关的操作,界面不友善,所以我们需要对其进行优化,加上界面实现对多媒体文件进行相关的操作,实现与多媒体文件进行友好的交流5.2pc端环境的搭建主机环境:centos 5.6交叉编译工具:gcc-3.4.5-glibc-2.3.6主机编译工具:gcc-4.1.2本小结主要是介绍如何在centos 5.6环境中搭建qt开发环境,将qt_s dk_lin32_offline_v1_1_4_en.run软件包拷贝到centos双击即可开始安装。点击next,选择custom安装如图6所示,选择所需的开发工具,如图7所示,接着点击下一步即可,直到安装完成。图6选择自定义安装方式图7 开发工具的选择现在让我们熟悉我们所要开发的开发环境:上面的qtopia编译安装完成后,会在咱们前面创建的target目录下生成很多开发工具。先看一下供主机端使用的工具rootlocalhost bin# pwd /home/linux/qtopia/target/qtopiacore/host/bin rootlocalhostbin#ls assistant linguist lupdate qmake rcc uic designer lrelease moc qvfb templates uic3如果系统以前有其它qt开发工具,把环境变量修改一下,保证它们不要和我们这几个工具冲突。下面可以试一下你的designer了。#./designer5.3mplayer项目工程的建立与开发好像其他开发环境一样,qt的项目也需要建立相关的工程。5.3.1mplayer工程的建立打开qt creator,单击file,选择new file or project如图8,新建工程目录为/home /linux /mplayer,然后选择相应的模板,选择qt控件项目选项,创建一个qt gui应用,如图9所示图8 qt工程的建立图9 选择要建立的应用类型然后选择工程的名称及所建立的工程目录如图10所示:图10 选择工程名称选择下一步如图11所示:图11包含的qt工具版本号这时会弹出一个让我们设置相关文件类型的对话框,将所有的文件名称改为我们所需要的文件名如图12所示:图12 工程的内容及类名确认我们所建立的文件如图13所示的内容一致:图13 工程建立后所产生的文件好了,我们的工程已经建立,但是我们要采用界面,所以我们还所需一些必要的资源文件,现在我们进行如下操作,将我们所需的文件拷贝到我们工程目录下,以备我们后面所需:# cd /home/linux/mplayer/# mkdir images# mkdir movies# cd /root/desktop# cp 1.mp3 /home/linux/mplayer/movies/# cp 2.avi /home/linux/mplayer/movies/# cp *.png /home/linux/mplayer/images进行以上操作后,我们将一些png格式的图片和一部影片以及一首mp3拷贝到了工程目录的images、movies目录下。我们的工程建立和一些所备资源文件业已准备完毕,然而还缺一步,我们需要按钮的资源文件,右击鼠标,选择add new如图14所示图14 添加资源文件选择我们所要的文件类型(qt resource file)如图15所示:图15 选择要添加的文件类型及资源文件命名所要的资源文件名称及所要存放的路径,如图16所示:图16 资源文件名及存放的路径确认资源文件的正确性如图17所示:图17 资源文件产生的文件添加资源文件中的内容,首先我们要点击add在选择add prefix添加前缀后,选择add files添加我们所要的文件如图18所示: 图18添加前缀并添加文件选择所要添加的文件路径所在,然后选择打开,添加所要的文件如图19所示:图19所要添加的文件文件添加成功后,会如图21所示:图21 文件添加后资源文件所包含的内容5.3.2mplayer实现原理先来考虑考虑如何为mplayer编写前端界面的问题。有两种思路,一种是把mplayer解剖,直接修改他里面的代码,这样我们做得界面就能够和mplayer一体了(当然也能够通过link mplayer用到的任何的库和.o文档,把他无缝的集成在程式里面);第二种方法就是mplayer所谓的slave模式。mplayer/home/linux/1.mp3 quiet -slave现在来探讨一下slave模式:所谓的slave模式,就是mplayer在运行过程中能够接收用户的输入命令行,具体支持哪些命令行,能够通过 mplayer -input cmdlist这条命令来得到,在mplayer源码的slave.txt中也有对这些命令有详细的讲解。slave模式下工作的mplayer可以和系统的标准输入、输出进行信息交互。我们可以用linux c编程来完成对slave模式工作的mplayer进行控制和信息获取。如:mkfifo(“/tmp/fifo”,0777);可以使用popen()来打开mplayerfile* mp;mp=popen(“mplyer /home/linux/1.mp3 -quiet slave input file=/tmp/fifo”,”r”);可以通过管道/tmp/fifo给mplayer发送命令,通过mp获取mplay的返回数据如:system(“echo ”mute 0” /tmp/fifo”);/写命令fgets(buf,1000,mp);/读取mplay返回数据而qt给我们提供了更方便的实现方法。通过定义一个qprocess对象调用已编译好的mplayer。qprocess *process = new qprocess();process-setprocesschannelmode(qprocess:mergedchannels);process-start(“mplayer ac mad xxxxx”);在命令中添加 -slave 和 -quiet就可以通过命令设置mplayer实现相应的功能。在mplayer源码中的,slave.txt中对这些命令有详细的讲解。process-start(“mplayer slave quiet ac mad xxxxx”);(1)暂停功能通过如下代码可以设置mplayer暂停。process-write(“pausen”);执行这段代码的时候如果是播放状态就会暂停,暂停状态时就会继续播放。(2)获取播放文件的总时间和当前播放进度执行下面代码时,mplayer将时间在标准输出显示。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()while(process-canreadline()qstring message(process-readline();/message即为读取的信息,我们可以根据需要取我们要的信息如/文件总时间为:ans_length=23.00/当前时间为:ans_time_position=23.00(3)快进功能seek type seek to some place in the movie. 0 is a relative seek of +/- seconds (default). 1 is a seek to % in the movie. 2 is a seek to an absolute position of seconds.下面代码即可实现快进功能:process-write(“seek * 1n”);(4) 音量调节volume absincrease/decrease volume or set it to if abs is nonzero.下面代码即可实现快进功能:process-write(“volume -1n”);/音量减小process-write(“volume +1n”);/音量增加(5)静音功能mute value toggle sound output muting or set it to value when value = 0(1 = on, 0 = off).下面代码即可实现快进功能:process-write(mute 0n);/开启静音process-write(mute 1n);/关闭静音(6) 定位视频窗口通过上面的代码基本功能实现了,可是播放视频的时候发现又弹出一个窗口。并没有出现在我们的窗口里。如下代码即可时间窗口的定位。qstring common = mplayer -slave -quiet -ac mad -zoom movie/ + file_name + -wid + qstring:number(widget-winid(); process-start(common);红色部分实现窗口的定位。widget是一个qwidget对象。通过winid可以获得一个数字,-wid既将视频输出定位到widget窗体部件中。注意:-wid参数只在x11、directx和opengl中适用。5.3.3mplayer 界面ui搭建利用前面安装的designer搭建ui界面,并将其保存在/home/linux/mplayer/mplayer.ui界面搭建效果如图22。图22 mplayer界面搭建效果5.3.4mplayer 代码编写在/home/linux/mplayer/下创建mplayer.cpp、mplayer.h、main.cpp、image.qrc。其中main.cpp为主函数;mplayer.cpp为mplayer播放器的主程序代码,实现播放器的各项功能;mplayer.h为mplayer.cpp的头文件,其中包括mplayer.cpp中各个函数以及变量声明;image.qrc为资源文件,中间包括mplayer界面设计的界面元素相关链接信息。main.cpp代码如下:main.cpp#include #include mplayer.hint main(int argc, char *argv)qapplication app(argc, argv);mplayer player;player.show();return app.exec();mplayer.cpp代码请查看附录image.qrc代码如下:image.qrc images/player_play.pngimages/player_stop.pngimages/player_pause.pngimages/play_enabled.pngimages/pause_enabled.pngimages/reward_enabled.pngimages/forward_enabled.pngimages/stop_enabled.pngimages/sound_enabled.pngimages/nosound_enabled.pngimages/previous_enabled.pngimages/previous_disabled.pngimages/next_enabled.pngimages/next_disabled.pngmplayer.h代码如下:mplayer.h#ifndef _mplayer_h#define _mplayer_h#include #include #include #include #include #include #include #include ui_mplayer.hclass mplayer:public qdialog,private ui_dialogq_objectpublic:mplayer(qwidget *parent = 0);public:qtime int_to_time(int);public slots: void play_pause_slots(); /暂停void stop_slots(); /停止void previous_slots(); /上一曲void next_slots(); /下一曲void get_time_slots(); /得到播放时间void set_volume_slots(int); /设置音量void set_sound_slots(); /静音void playerreward_slots(); /快退void playerforward_slots(); /快进void back_message_slots(); /更新显示信息private:qprocess *process;qstringlist files;qdir directory;int file_count;qstring file_name;bool isplay;bool issound;bool isstop;qtimer *timer;int file_length;int curr_time;int curr_pos;int curr_vol;#endif5.3.5mplayer 工程编译如图23所示,选择编译或运行;或者在所在工程目录中打开终端按以下步骤编译:#qmake#make clean#make 运行便可进行编译。编译图23 工程的编译与运行5.3.6mplayer 运行和功能介绍 在编译完成后,会生成一个myplayer的可执行文件,在工程目录下打开终端进行如下操作:#./myplayer便可以运行mplayer了。如图24所示图24 播放效果现在我们已经可以运行属于我们自己的mplayer了,但是我们对于它的操作还不是很了解,现在就将mplayer界面的相关功能进行介绍,如图25所示:图25 mplayer相关按钮功能的介绍好了虽然我们将按钮的相关功能进行了介绍,但是是不是如我们所愿,相关功能实现了它们各自的功能,各司其职呢?下面我们就测试相关的功能吧(1) 暂停测试,效果如图26所示,测试功能实现。图26 暂停效果(2) 暂停测试,效果如图27所示,测试功能实现。图27 静音效果(3)音量调节测试,效果如图28所示,测试功能实现。图28 音量调节效果在接下来的测试过程中,我还进行了停止、快进、快退、下一曲、上一曲的相关测试,各个按钮也实现了各自的只能,完成了相关的功能,通过测试可以看出,mplayer已经实现了对视频的播放功能,但是是不是也实现了对mp3等相关音频的播放呢?接下来测试mp3的播放功能。如图29所示,mplayer不仅实现了对视频的播放,也实现了对音频的播放,从而实现了多媒体得 相关播放功能,完成预期的目标,符合老师给我所下达的任务。也表明了这个项目完成了预期的目标,这个项目是成功的。图29 mp3播放效果 从这里可以看出mplayer可以播放mp3音频。也可以通过上述的测试,得出结论,mplayer达到了预期的目标,实现了相关的功能,满足项目所需的要求。也可以得出结论,这个项目是成功的。6总结从选课题开始,已经4个多月,这4个多月中,我们经历了风风雨雨。4个月的时间转眼即逝。这4个月中,我们边忙于找工作、实习,还要为我们的毕业设计查询资料、寻找方案。在这期间我们有茫然,有迷惑,也有豁然开朗的瞬间;有失败的痛楚,也有成功的甜蜜;有压力,也有轻松快哉。在毕业设计中,我们遇到了很多的难题,但是在老师的指导下,在同学的支持、鼓舞和帮助下,终于使我克服了重重困难和阻碍,完成了这个设计的目标和任务。虽然它还离我心中的完美想去甚远,但是它的成功使我认识到了自己的能力和相关的不足,使我能在未来弥补自身的不足,提高自己的能力和水平。这次毕业设计,体会到了开发带来的艰辛和无奈,也学会了如何求助手中所有的工具,学会利用有限的资源,也提高了自己的自学能力和时间计划能力;体会到了成功带来的喜悦和失败带来的痛楚,体会到了付出后得到回报的开心和喜悦。毕业设计是对这四年大学所学课程的一种鉴定也是对大学四年来,我们自学能力的一种检验。学会如何利用自身所掌握的知识,合理利用,协调利用,发挥出他们各自的能力,从而将能力汇集,发挥出巨大能量,实现自己的目标。虽然这个项目实现mplayer相关功能但是碍于实际情况没有移植到arm平台上,不得不说是一个遗憾。参考
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025标志牌原材料供应与环保认证合同模板
- 说课教学课件
- 2025联合物流加盟协议
- 2025企业办公楼安保服务合同
- 语言区职业相关知识培训课件
- 2025企业运营资料模板建筑工程设备租赁合同样本
- 2025工程承包合同文件(附建筑装饰施工劳务合同)
- 2025年北京市二手商品购买合同样本
- 红色基地课件
- 2025【合同范本】电子设备购买合同
- 画法几何及土木工程制图课件
- 马克思主义政治经济学第7章剩余价值的分配
- 成品出货检验报告模板
- 2023年中考语文一轮复习:语段综合专项练习题汇编(含答案)
- 香豆素抗凝血药华法林及其类似物的合成
- 长江上游黄河上中游地区天然林资源保护工程实施方案
- GB/T 5453-1997纺织品织物透气性的测定
- GB/T 14315-2008电力电缆导体用压接型铜、铝接线端子和连接管
- 农民工工资表(模板)
- 《室内空间设计》第三章课件
- 学习《北方民族大学学生违纪处分规定(修订)》课件
评论
0/150
提交评论