ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:1.29MB ,
资源ID:4766667      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4766667.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于qt的嵌入式多媒体播放系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于qt的嵌入式多媒体播放系统.docx

1、基于qt的嵌入式多媒体播放系统基于Qt的嵌入式多媒体播放系统 要当前社会,随着相关技术的发展以及经济的发展和精神文明水平的提高,越来越多的人越来越注意到了精神生活的享受。视频、音乐是人们首选的选择;也因为科学技术的发展,越来越多的嵌入式设备进入了人们的生活,它的体积越来越小巧,而功能越来越强大,功能也越来越丰富。市场上的多媒体播放设备也越来越多,价格也越来越便宜、美观。如此丰富的产品让人应接不暇,不知如何购买,所以很多人往往是注重外观的美观和嵌入在其中的软件操作体验,而对其倾心购买。所以说良好的用户体验不仅仅可以提高市场的占有率,而且也是一种产品文化的体验以及技术水平的体现。受不受欢迎也反映出

2、了社会精神文化的一种体现。随着精神文明的建设,人们的操作体验上越来越苛刻,功能上也越来越严格,不仅要良好地品质,还要良好地体验。然而岁月无情的向前行进,新生一代终将取代上一辈的前辈,年轻人朝气蓬勃,对精神享受的程度也高于上一辈,所以当前对嵌入式设备的需求也越来越大。本课程设计以当前对嵌入式多媒体设备需求量大为背景,提出了一个基于QT的适用于嵌入式设备的多媒体播放系统的架构设计方案。论文给出了一种嵌入式系统中音频视频同步的解决方案,有效的提高了嵌入式多媒体播放系统的音频视频同步性能,在此基础上设计并实现了基于linux/Qt的嵌入式多媒体播放器,实现了基于Qt的嵌入式多媒体播放器系统。在本课程设

3、计中,我们基于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 o

4、f 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

5、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

6、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

7、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

8、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 a

9、nd 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 i

10、s 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目 录摘 要 I

11、ABSTRACT II目 录 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.1 mplayer的安装 95.2 PC端环境的搭建 115.3 mplayer项目工程的建立与开发 135.3.1 mplayer工程的建立 135

12、.3.2 mplayer实现原理 205.3.3 mplayer 界面UI搭建 225.3.4 mplayer 代码编写 225.3.5 mplayer 工程编译 225.3.6 mplayer 运行和功能介绍 226 总结 22参考文献 22致 谢 22附 录 221 引言随着用户要求的不断提高,越来越多的嵌入式设备使用的功能强大、价格低廉的嵌入式linux作为操作系统并开始采用较为复杂的图形界面。Linux的强大与稳定,在嵌入式领域赫赫有名,更由于其开源的特性,从而节约了不少的开发成本,和丰富的可裁剪、可定制性。嵌入式linux设备要求低,硬件设备上没有硬件开发的局限性,从而在开发中可以实

13、现最优的性能和性价比。Qt以其强大地功能、良好地可移植性逐渐成为一种被广泛使用的GUI系统。正是由于嵌入式操作系统及其相应图形界面的不断发展,嵌入式软件的开发显得越来越重要。其中嵌入式多媒体播放器由于能满足人们的视听享受已经逐渐成为了系统中不可或缺的重要组成部分,在嵌入式系统开发多媒体播放器已经成为一个技术热点,当前许多嵌入式产品中都包含多媒体播放器。并且随着Qt的开源,基于Qt开发的程序成本大大降低,Qt的稳定性以及功能的多样性提升了一个水平,满足了嵌入式设备价格低廉,功能强大的特性,同时Qt强大的开发功能和可移植性,实现了多平台的兼容性,可以很快移植到其他的平台上,从而节约了开发周期和成本

14、,促进了嵌入式设备的开发水平。因此基于Qt的嵌入式系统中实现多媒体播放器具有深刻的意义和价值。2 嵌入式多媒体播放器系统的设计2.1 架构设计嵌入式多媒体播放器架构设计方案如图1所示。通过使用纯C+语言来支持嵌入式linux系统,采用Qt/Embedded作为GUI来提供强大的用户界面,实现一个开放式的插件接口来增强扩展性,利用内核帧缓冲来输出,消除对特定架构的依赖,从而保证可移植性。多媒体播放器属于上层应用程序,位于linux用户空间。这样设计的目的是为了系统的移植性。图形用户界面窗口以Qt/Embedded为基础开发,通过调用Qt/Embedded提供的类库根据需要设计可以管理多媒体文件的

15、基本窗口,包括打开、删除、显示文件长度、显示播放时间等窗口,以及为方便用户设定的管理播放列表、进行播放控制的窗口,这些都是直接和用户打交道的。由于采用了Qt/Embedded最为广泛使用的的GUI,可移植性得到了保证。文件输入主要是对用户指定的文件进行读取和解析,将获得文件的长度、播放时间、编码格式、音视频帧率、文件标题等内容,结合MIME的处理,显示预先设计的窗口中。插件接口调用主要是把所有对解码器的操作整合到一个统一的开放式接口当中,根据上一部分解析出的文件信息区查找相应的解码器插件并调用,如果没有找到可用的解码器可以返回信息提醒用户添加相应的插件。通过实现这样一个接口可以使播放器的扩展性

16、大大提高,因此本部分是多媒体播放器的核心。文件解码和输出主要负责通过调用解码器对音视频数据流进行解码,然后利用Qt/Embedded可以直接操纵内核帧缓冲FrameBuffer的特性,将解码之后的数据通过FrameBuffer直接送到输出设备输出,避免对DirectShow、OpenGL等特定架构的依赖,进一步增强可移植性。图1 嵌入式多媒体播放器架构图3 插件接口模块和解码库模块3.1 插件接口模块设计插件接口模块是整个播放器的核心部分,它封装了对具体解码器的操作,从而在输入和输出模块之间搭建一座桥梁,确保数据的正常流动。插件接口模块主要提供了以下方法来控制解码器:3.1.1 文件特性函数b

17、ool isFileSupported(const QString&filename);通过检查文件的扩展名来确定待播放的文件是否被播放器支持,若是返回真,否则返回假。可识别的扩展名有asf、avi、mp2、mp3、mpeg、mpg、ogg、wav等。如果添加了新的解码器插件以后就可以识别新的文件格式,只需要将其扩展名添加到此函数支持列表中即可。3.1.2 获取文件信息函数const QSting&fileInfo();用于获取文件的各种信息并将结果保存到一个常量字符串中,便于其他函数调用。这些信息包括:播放时间、音频格式、音频比特率、音频通道、音频频率、视频格式、视频比特率、视频高度、视频宽

18、度等。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

19、,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指出当前的音频帧计数,即当期播放到了第几帧。通过这些参数就可以计算出希望跳到的帧数和当前帧数的

20、差值,然后根据这个差值将音频流向前(滞后)或向前(超前)跳即可。同时Sync函数还会将此差值int反馈给音频解码器,让音频解码器修正数据流的时间戳,如此循环,从而达到较好的音视频同步效果。此函数的总体思想是在播放视频数据流的同时启动另一个线程,打开对应的音频数据流播放,然后在视频线程中来同步音频数据。此外还有插件初始化和注册函数void pluginInit()、文件初始化函数void fileInit()、查找函数bool seek(long pos)、清空视频数据函数flushVideo- Packets()和清空音频数据函数flushAudioPackets()、获取下一数据包函数Med

21、iaPacket*getAnotherPacket(int stream)等,这里就不做详细介绍了。3.2 解码库模块解码库模块的主要作用是为插件接口模块提供解码器,考虑到播放器的可移植性和扩展性,本系统采用了ffmpeg解码库。Ffmpeg解码库是linux下的一个开源解码器集合,它支持多种音频和视频解码标准,还支持转文件格式、制作avi等,功能十分强大。可以在windows下是要使用ffshow插件,linux下的mplayer播放器都是使用ffmpeg解码库。解码库又包含解码器和分离器。解码器就是对音视频数据流进行解码的组件,分离器就是把文件流中的数据分离为音频数据流和视频数据流的组件,

22、音频数据和视频数据是分开解码的,所以二者缺一不可。4 嵌入式多媒体播放器系统的实现4.1 数据流程的总体设计图2为系统数据流程:首先输入模块从数据流源(多媒体文件)读入数据,此时它将读入文件头,做一些基本的处理,如读出文件长度,获取此文件的编码类型、比特率,判断能否播放等;然后插件接口模块会调用分离器插件将多媒体切分为视频数据流和音频数据流;在经过视频FIFO和音频FIFO,排序处理;最后送入视、音频解码器调用相应的解码器进行解码,对于音频数据就会进行重采样,对于视频数据就会读取相应的帧,逐帧解码;之后经过采样的音频数据和经过渲染覆盖的视频数据进行音视频同步,再分别通过视、音频输出模块输出。这

23、其中,数据的读入、分离、解码、输出都是通过Qt提供的类库以多线程同时进行的,在解码的同时程序也在不断地将数据读入缓冲区并排序等待处理,以提高效率。输入模块的主要功能是将用户指定的多媒体文件读入。由于不同格式的多媒体文件需要调用不同的解码器才能正常打开,因此考虑到程序的模块化将实际的文件打开工作交给插件接口模块调用相应的解码器进行,输入模块只对文件进行一些基本的处理并对文件内容进行缓存,然后为插件接口模块输送原始数据流。用户首先通过图形界面选定待播放文件发出打开指令,这将会使输入模块接收到一个信号并通过用户界面传回的信息获得待播放文件的文件路径和文件名。接下来输入模块会检查文件路径是否合法、文件

24、是否为空,之后会向插件接口模块发出信号,通知插件接口模块查找可用的解码器,为文件解码做好准备。下一步就是进行调用初始化函数init(),其具体过程下面会详细介绍,最后就是将工作移交给插件接口模块,让它调用对应的文件格式解码器的open()函数。输出模块的主要功能就是讲通过解码器解码之后的音频、视频数据送到输出设备(如LCD显示屏、扬声器)输出。根据输出内容的不同可以将输出模块划分为音频输出和视频输出两个子部分。这两个部分基本上是相互独立输出的,通过插件接口模块的同步控制让它们在输出时保持同步。视频输出和音频输出稍有不同,它利用Qt/Embedded可以将直接控制FrameBuffer的特性来输

25、出视频数据。帧缓冲区是显卡上的内存,使用帧缓冲区可以提高绘图的速度和整体性能,与帧缓冲区有关的设备室/dev/vb0(主设备号29,此设备号0)。图2 系统数据流程4.2 嵌入式音频视频同步设计本方法的基本思想是以视频为主媒体流,音频流为从媒体流,视频的播放速率保持不变,根据本系统时钟确定的实际显示时间,通过调整音频播放速度来达到音视频同步。整个系统的音视频同步数据流程见图3。首先选择一个本地系统时钟参考(LSCR),要求本地系统时钟参考上的时间是线性递增的。然后将LSCR分送到视频解码器和音频解码器,由这两个解码器根据各帧的PTS值对照本地系统时钟参考产生各帧准确的显示或回放的时间。也就是说

26、,生成输出数据流时依据本地参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间)。在播放时,读取数据块上的时间戳,同时根据本地系统时间参考上的时间来安排播放。图3 音视频同步数据流程基于时间戳的播放过程中,仅仅对早到的或晚到的数据块进行等待或快速处理,往往是不够的。如果想要更加主动并且有效地调节播放性能,就需要引入反馈机制,也就是通过对比音视频的时间戳将当前数据流的播放状态反馈给上层的“源”。如果音频流滞后,就即时通知音频解码器加快音频流输出,但如果滞后太多,则直接将当前数据丢弃,直接跳到下一帧;如果视频流滞后,就通知音频解码器减慢音频输出速度等待视频流,如之后太多也直接进行跳

27、帧。数据流首先通过分离器分解为视频数据流和音频数据流,然后经过对应的解码器,同时由本地系统时钟来进行时间戳控制;获得准确显示或回放时间以后进行时间戳比较;若同步则直接输出,不同步则进行音频跳帧或等待,直到同步后输出。5 多媒体播放系统在PC端的实现Qt是一个1991年由奇趣科技开发的跨平台C+图形用户界面的应用开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。2008年,奇趣科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。Qt支持windows平台、linux/unix平台、macintosh平台、

28、Embedded平台等,所以Qt所开发的应用具有有良好地可移植性。目前最新的版本是Qt 4.7.4。官方下载地址是:CentOS:CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。在本项目中,采用的事CentOS 5.6。5.1 mplayer的安装在

29、环境搭建之前我们先要安装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 -wit

30、h-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相关的功能但是我们不能对其进行相关的操作

31、,界面不友善,所以我们需要对其进行优化,加上界面实现对多媒体文件进行相关的操作,实现与多媒体文件进行友好的交流5.2 PC端环境的搭建主机环境: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 开发工具的选择现在让我们熟悉

32、我们所要开发的开发环境:上面的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.3 mplayer项目工程的建立与开发好像其他开发环境一样,Qt的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1