基于QT多媒体播放器设计的开发与实现.docx
- 文档编号:17655811
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:29
- 大小:246.79KB
基于QT多媒体播放器设计的开发与实现.docx
《基于QT多媒体播放器设计的开发与实现.docx》由会员分享,可在线阅读,更多相关《基于QT多媒体播放器设计的开发与实现.docx(29页珍藏版)》请在冰点文库上搜索。
基于QT多媒体播放器设计的开发与实现
本科毕业论文(设计)
(2021届)
题目:
多媒体播放器的设计
学院:
机电与信息工程学院
专业:
电子信息工程
学生姓名:
yu学号:
075
指导教师:
xxx职称(学位):
工程师
合作导师:
xxx职称(学位):
讲师
完成时刻:
2021年月日
成绩:
黄山学院教务处制
学位论文原创性声明
兹呈交的学位论文,是本人在指导教师指导下独立完成的研究功效。
本人在论文写作中参考的其他个人或集体的研究功效,均在文中以明确方式标明。
本人依法享有和承担由此论文而产生的权利和责任。
声明人(签名):
年月日
摘要1
英文摘要2
1引言3
2Qt设计简介3
研究背景3
设计的目的和意义3
论文的要紧内容和设计目标4
3多媒体播放器的设计4
软件架构设计4
播放器实现整体设计5
音视频播放系统流程5
音视频实现原理6
播放器设计中大体函数接口7
4多媒体播放器的实现8
播放器界面设计8
界面UI设计8
界面外观设计9
播放器功能设计10
大体功能设计10
播放器播放文件选择11
音视频播放设计测试及其成效12
总结13
参考文献13
附录14
多媒体播放器的设计
机电与信息学院电子信息工程xxx(075)
指导教师:
xxx(工程师)
摘要:
目前常见的多媒体播放器多种多样,各具特色。
但都存在一些缺点,例如利用的内容空间较大、播放文件格式支持少和界面不友好等等。
QT因其功能的壮大和移植性强的有点慢慢普遍利用在GUI系统开发中。
因此在Linux系统嵌入式环境下基于QT的多媒体播放器设计具有有效价值。
本设计是在Linux下利用QT技术进行GUI设计,利用QTcreator软件编程实现一个图形界面,完成一个简单的多媒体播放器的设计。
该设计基于QT集成开发环境,利用系统的函数接口来编程、具有体积小、支持的播放格式多、系统占用资源少、支持播放列表编程等功能。
关键词:
多媒体;播放器;嵌入式;QT;GUI设计
TheDesignofMultimediaPlayer
YuZeQingDirector:
SunGaoXin
electricalandInformation,HuangShanuniversity,HuangshanChina245041)
Abstract:
Thecommonmultimediaplayerhaveavarietyofdifferentfeaturesattherearesomedisadvantages,Suchastakingupalotofresource,lesssupportformatandit’sinterfacebloated.ButQTwithitspowerfulfunctionsandgoodportabilityhasbecomeawidelyusedGUImultimediaplayerbasedonQTembeddedLinuxsystemhasbecomingameaningfulthings.Inthisarticle,theGUIdesignofLinuxgraphicalinterfacebasedonQT,Forexample,ItusetheQTcreatorsoftwareprogrammingasimplemultimediaplayer.TheplayerMplayercommandinterfacebasedonQTintegrateddevelopmentevvironment.ThisMplayerissmall,butitsupportmuchplaybackfileformats,occupylesssystemresources,supportforplaylistsandsomeotherfunctions.
KeyWords:
Embedded;Qt;MediaPlayer;multimedia;GUIdesign
1引言
嵌入式和其技术是在运算机、半导体、电子产品技术和数字图像处置等技术在个领域、行业应用在具体产品开发的技术。
在现今数字技术、信息技术和网络技术高速发达的时期里,嵌入式技术在各领域。
各行业都取得了普遍的应用。
随着嵌入式产品设备的不断更新,Linux在嵌入式中因其内核微小、设计模块化在必然程度上知足了嵌入式产品设备的要求,并慢慢取得很多开发者的赞同,专门是在电子消费类产品、汽车行业及工业操纵领域、无线通信终端、网络产品、路由器和互换机中的利用。
为了在不同的系统中都能发挥到作用,人们能够对其系统进行开发,尤其是在应用领域的开发和利用。
在现今市场上便利式播放器有很多,如:
MP3、MP4等产品。
其功能比较单调,文件播放格式支持的超级少,利用起来会有许多的不方便。
为了解决市场上常见产品的一些不足,本设计就利用QT工具来实现一个多媒体播放器,在Linux环境下,此播放器不尽支持格式多样、同时还设计了友好的用户利用界面。
从外观和功能上来讲知足了用户的大体要求。
2Qt设计简介
研究背景
由于Linux系统内查对各类产品设备都具有支持性,因此,该系统内核能利用于路由器、机顶盒、电话、平板电脑、POS系统和工业操纵等软件信息类产品开发。
这次设计主若是在Linux环境下利用Qt工具实现的多媒体播放器设计。
这也是本文需要先从Linux系统提及的必要所在。
随着芯片利用技术的快速进展,嵌入式系统的开发的利用增多、其性能取得提高,功能也慢慢丰硕起来。
嵌入式系统应用领域和行业带给人们的日常生活方便,慢慢地改变了人们的生活方式,提高人们的生活质量。
在工业领域,消费类电子产业,更新换代的速度进一步的加速,市场的整体需求量进一步扩大。
在初期MP3随身听成功后取得庞大的市场,尔后支持视频功能便利式播放器慢慢取得消费者的青睐,成为继MP3以后的有一成功和冲破。
因MP3的缘故,人们一直以来将这中多媒体播放器称为MP4。
新一代MP4的开发有着广漠的前景和市场潜力,从而使得很多的开发商所看好并加大投入进行研发,最后把其推向市场产生价值。
随着嵌入式系统的流行和其独特的优势取得了许多开发者的喜爱。
使得嵌入式系统开发在现今IT行业成为主流思想。
同时在消费类电子产业快速进展的情形下,关于多媒体播放器的需求加倍多样。
各大开发公司都着力于开发Linux环境下的多媒体播放器。
在我国,随着电子产业和IT行业的慢慢成熟。
对嵌入式开发的需求量也不断的增加,关于播放器的开发需求也在不断的开发和进步。
设计的目的和意义
目前,嵌入式系统是在一个快速进展的时期,猛烈的竞争,这种竞争和进展在以后几年将继续进展和猛烈。
嵌入式系统市场和技术的进展专门快,国外技术进展的步伐加倍成熟,市场大体形成。
国内的进展速度也专门快,市场有专门大的潜力。
在国外的一些发达国家,高水平的硬件,尤其是在嵌入式CPU的处置能力上,从原先的8位到16位再到32位,进展速度专门快。
掌上电脑、智能设备等新产品的涌入市场,使得产业规模进一步扩大和进展。
国内的嵌入式硬件需求大体是靠入口来知足,技术相对较弱。
可是,现在国内外都有自己推出的嵌入式系统,都在为自己在那个产业争取一份额而尽力。
而其中Linux以其公布的系统内核源代码而取得普遍的重视和利用,进展前景超级乐观。
在国内,大型的嵌入式系统超级少,尔后的开发重点可能转向基于Internet的各类信息和嵌入式操作系统领域,包括Internet、网上交易、Iphone和平板电脑等。
在如此的时期环境下,本文就实现了在嵌入式系统下基于Qt的多媒体播放器的实现,大体实现了一个便利式的多媒体播放器的设计。
论文的要紧内容和设计目标
本文确实是基于Linux操作系统运用Qt开发工具来实现一个便利式的多媒体播放器。
第一运用Qt的C++GUI编程实现此多媒体播放器的外观和外形设计,大体实现一个多媒体播放器的外形和框架。
第二,在Qt工具中运用一些类、槽函数的利用来实现播放列表和播放功能、和多格式化的支持功能。
最终目标是实现一个方便易用的便利式多媒体播放器,咱们能够利用此播放器进行一些视频、音乐的播放。
同时要实现多格式的支持。
由于此播放器是基于Linux操作系统的,其移植性强能够在咱们所需要的设备上进行相应的移植,增大了此播放器的应用功能。
3多媒体播放器的设计
软件架构设计
嵌入式多媒体播放器软件架构设计如图3-1所示。
本设计要紧利用C++编程来支持Linux系统环境,通过Qt作为GUI开发播放器的用户界面设计,应用层利用通过挪用系统的函数接口来支持。
此种设计保证了播放器在Linux环境下的可移植性和可扩展性,增大了软件的有效性。
用户图形界面操作窗口利用Qt工具来开发,通过Qt提供的图形库来设计多媒体播放器的治理、应用大体窗口,要紧实现打开、播放、暂停、停止功能的按键设计。
同时在软件内部实现关于这些功能的支持和实现。
还有对用户设定的播放列表、播放文件的选择等功能的支持。
而这些设计都是基于Qt作为GUI设计的,因此移植性取得了大体的保证。
用户输入主若是用户选择播放文件,播放器软件对其进行读取,依照设计的功能来实现相应的响应,做出用户指定的处置。
如:
选择播放文件、对按钮的输入、打开、关闭等操作。
也确实是说在用户界面所能进行的一切操作都是属于用户输入,只要设计中设计了处置方式,播放器都会给出相应的响应。
系统函数接口的挪用主若是为了实现上层软件结构和基层结构之间的联系功能。
在此播放器设计中,其主若是提供底层函数挪用接口和解码器挪用。
通过这些函数接口使得能够把跟解码有关的函数集中起来,通过函数接口来挪用。
播放器依照播放文件的不同选择不同的解码器,若是找不到所需的解码器那么通过这些函数反馈信息提示用户。
通过函数接口的利用使得设计的可延续性取得保证。
文件解码和输出时解码器进行解码后关于音视频文件数据流的输出。
在QT设计中关于内核帧缓冲区是能够直接操作的。
因此能够把解码后的数据通过帧缓冲区输送到输出设备上去,完成整个设计的解码输出功能。
用户
图形用户界面
用户输入
函数接口调用
文件解码和输出
帧缓冲
输出设备
QT
图3-1嵌入式媒体播放器软件架构
播放器实现整体设计
音视频播放系统流程
播放器播放文件系统流程如图3-2所示:
音视频文件第一从输入模块通过用户操作读入数据。
通过读入数据的文件头,输入模块做必然的处置,获取相应的信息,如:
播放文件的编码类型、文件的长度等信息。
再判定播放器是不是支持播放此文件。
若是能够,那么函数接口挪用分离器对音视频信号进行分离。
音频数据流和视频数据流别离通过音频队列和视频队列进行排队等候。
再通过对应的音频、视频解码器进行解码操作。
再把解码后的音频信号和视频信号进行整合处置,实现同步输出到缓冲,再别离从相应模块输出。
设计中,音视频数据流的读入、解码、输出都是在Qt中利用多线程的方式来实现的,即在解码的同时不断读入数据流进入缓冲区等待解码,如此利用缓冲区的功能来提高解码的效率。
由于播放文件的格式不同利用的解码器不同,当输入模块读取用户指定的播放文件时。
只有格式与解码器相匹配才能正确打开。
而在输入模块中要紧完成对数据的读取,其最后仍是把原始的音视频数据传到了缓存中。
实际打开这些文件的是通过接口函数挪用解码器进行的。
用户通过界面操作选择播放文件进行打开操作指令,输入模块接收用户操作信号来取得播放文件的文件名、文件格式等大体信息。
同时检查文件名和文件格式等是不是合法,播放文件是不是是空档文件等。
以后函数接口才开始挪用启用解码器进行解码操作。
通过函数接口挪用初始化函数对播放器进行初始化,为文件的解码和播放做好预先预备。
输出模块要紧包括两部份,即音频输出部份和视频输出部份。
这都是依照输出的内容来划分的。
显而易见,输出为音频那么通过音频模块,假设为视频那么通过视频模块。
其功能确实是为解码后音视频信号的输出做效劳。
这两个部份再设计上也是独立分开的。
尽管解码后会对其进行同步处置,但同步后输出的介质不同。
音频信号通过音频输出通道再通过外部的喇叭等音频输出器输出,而视频信号那么通过视频通道输出。
通过函数接口挪用来操纵音视频的同步。
维持较为理想的音视频同步播放成效。
视频输入
缓冲区
输入模块
音视频分离
音频
音频解码
视频
视频输出
视频解码
视频
声音
音频输出
音视频同步
图3-2播放器系统流程
音视频实现原理
本实现原理围绕主从媒体流为中心,主媒体流为视频流,从媒体流为音频流。
其中视频信号的解码速度维持不变,通过系统时钟确信实际的时刻。
为了能使音视频同步,必需调整音频的输出速度。
通过选择一个线性递增的本地系统时钟作为参考(LSCR)。
作用于视频解码器和音频解码器中。
然后依据各帧的值比对本地时钟的参考值。
即在生成输出数据流时在每一个数据库块上标记开始时刻和终止时刻。
播放这些数据时,依据数据块上的时刻来播放。
由于在播放进程中,仅仅关于早到或晚到事务数据块做处置,如此处置存在很多的不同,是远远不够的。
因此为了有效的调剂操纵多媒体播放器的性能,再设计中加入反馈机制,通过反馈当前播放数据的播放状态来实现反馈机制。
假设音频信号滞后,那么反馈通知加速音频的解码速度。
假设为视频信号滞后那么反馈通知音频信号减慢解码速度来等待视频信号的同步。
假设其中任何一方滞后太多那么直接跳转到下一帧执行。
在分离器的分离下,数据流分解为音频数据和视频数据。
通过对应的解码器解码后,通过比对当前系统的系统时钟,取得准确的显示时刻再进行比对。
假设二者同步那么输出,不同步那么音频信号进行等待或跳帧处置,直处处置后达到同步才会输出。
播放器设计中大体函数接口
函数接口模块是真个播放器设计中的一大重点,其中包括了解码器的挪用和底层函数的挪用。
在应用层功能实现和底层挪用中起到一个通道的作用。
同时也连接上了输入和输出模块,使得数据流能够从输入到输出进行流动,保证播放信号的流动性和持续性。
函数接口模块的几个重要的接口:
1)检查播放文件是不是可支持boolisFileSupported(constQString&filename)
通过判定文件的后缀名来判定播放器是不是支持需要播放的文件,若是支持播放返回真,反之那么返回假。
能够识别的文件类型有MP3、MP4、MPG、RMVB等。
如何利用新的解码器增加了文件格式的支持,只需要将新支持的文件类型名添加到函数的支持列表中。
2)播放文件的信息函数constQString&fileInfo()
用于取得需要播放音视频文件的大体信息并将其保留在一常量字符串中,这些便于其他函数去挪用和利用相关信息。
与音视频相关的信息要紧包括:
音视频的格式、音视频的频率、播放时刻、音视频通道等。
3)音频处置函数
boolaudioReadSamples(short*output,intchannels,longsamples,long&samplesRead,int)
音频的处置工作也是本设计中必需借用的一个函数接口,其也包括利用解码器对音频数据进行处置和读取。
函数中的参数output表示输出文件的指针,channels表示音频处置的通道数,samples表示音频采样处置中的采样数。
函数的整体功能由解码器来支持和完成。
4)视频帧处置函数
boolvideoReadScaledFrame(unsignedchar**output_rows,int,int,intin_w,intin_h,intout_w,intout_h,ColorFormatfmt,int)
挪用解码器对视频帧进行处置和读取,是播放器设计中视频处置部份的核心。
参数数output_rows表示输出列地址的指针,in_h、in_w、out_h、out_w别离表示输入和输出帧的高度和宽度,fmt表示利用的色彩模式,是不是执行成功由返回值来确信。
若是返回值为真那么执行成功,反之那么执行不成功。
5)处置音视频同步函数:
intSync(File*fp,intauIndex,structtimeval*vtime)
此函数中fp为一文件描述符,用于程序中利用文件的操作代号。
vtime表示播放视频文件的帧头时刻,和auIndex表示的是当前播放文件的音频部份的帧数量,标示播放所到帧的位置。
通过参数能够计算当前帧与期望帧之间的间距,通过间距来完成对音视频播放的跳转。
此设计中的跳转功能也是基于这一大体原理实现的。
同时此函数还会将那个int型差值返回给音频解码器利用,让音频解码器跳转音频的帧时刻,如此反复的循环,来达到咱们中意并较好的音视频同步成效。
此函数的要紧作用是在播放器播放视频的进程中同时启动一个线程来供音频利用,以此来达到音频、视频同步播放的功能。
同时函数返回值为咱们希望抵达位置与当前位置的一个差值,如此更利于解码器对其数据的利用。
此函数为播放器设计进程中一个核心函数,起到的作用也是超级大的。
在函数接口挪用中还有一些其他比较重要的函数,例如用来注册的函数voidpluginInit()、用来改变事件处置的函数voidchangeEvent(QEvent*e)、查找文件函数boolseek(longpos)、初始化待播文件函数voidfileInit()、清空音视频数据函数flushAudioPackets()和flushVideoPackets()等等。
在函数接口系统中还有许多的函数,上面所涉及到的是本次设计中比较重要的几个接口函数。
4多媒体播放器的实现
播放器界面设计
此多媒体播放器界面设计要紧包括界面UI设计和外观设计,界面UI设计是在Qt中利用已有的图形库图形进行拖放形成的一个简单而简练的播放器界面。
主界面的外观设计主若是对UI设计的一个升华,如对界面按钮的格式列表,和界面UI的美工化等等。
界面UI设计
播放器设计第一要解决的是界面问题。
有两种方式,一种是比较老套而传统的,即把mplayer界面代码化,通过修改里面的代码来编写界面,如此咱们做的界面就能够和mplayer设计在一体。
但关于图形化的界面设计采纳代码编写能够说是比较痛楚而且效率很低的,同时写出的界面不必然有想一想中的美观。
而且修改起来比较繁琐和麻烦;第二种方式确实是mplayer所谓的UI模式。
利用Qt工具来实现,外观界面能够通过其图形库直接进行拖放和排列,同时还能够利用格式表来对其进行美化。
通过Qt的UI设计出来的外观界面不仅美观而且方便。
实现一样的一个界面所需的时刻大大减少,大大的提高了图形化软件设计中的效率。
在两种方式的对照之下我相信没有一个设计者会选择采纳代码编写界面而不利用Qt的UI界面设计。
但以前也有很多的图形化软件的设计是采纳代码编写的图形化界面,这些都是基于人们关于类似于Qt的一些图形库利用和了解较少。
有了像Qt如此的图形库以后,更大的方便了咱们日常开发的需要。
改变了面对图形化软件开发时的各类困难因素和重复劳动。
本播放器的UI设计图形如图4-1所示。
图4-1ui界面设计
图4-2播放器主界面成效
界面外观设计
播放器开启后第一看到的是用户操作界面,即播放器的主窗口界面,这部份的界面主若是供用户利用。
在图像化界面顶用户能够直观的利用播放器相关功能而不用去考虑内部是如何进行的。
如从界面按钮中能够完成的播放、暂停、停止等大体操作,不用去考虑如何实现的而能够直接利用。
生成文件最终以ui格式保留。
生成的UI模式下的播放器界面为Qt下手动拖放并按播放器外观进行布局生成的。
也是最初的播放器界面设计,在此界面下能够对界面进行修改。
只是在此界面下无任何播放器的功能,仅仅是一个图形框罢了。
而播放器的用户界面为UI设计后有Qt编译后形成的图形化界面,即播放器的外观界面。
此界面的设计也是在UI模式下对播放器外观的设计,可用一些美工手腕进行加工,如利用样式表等对界面和界面按钮的美化等。
编译后的界面外观如图4-2。
播放器功能设计
此部份要紧解决播放器设计中关于播放器的一些大体功能的实现,要紧涉及到的大体功能包括暂停、播放、停止、快进快退拖沓、全频播放功能等。
在Qt图形化设计的后面加以程序的开发来实现这些功能。
大体功能设计
一、暂停功能
以下代码是针关于播放器的暂停功能设计的:
voidVideoWidget:
:
mypause()
{
m_MediaObject->pause();
}
按下pause按钮通过槽函数启动上面代码,若是现在播放器处于播放状态那么暂停播放功能,若是现在处于暂停状态那么当即恢复播放状态。
二、获取播放文件的总时刻和当前播放进度
voidVideoWidget:
:
myplay()
{
qWarning("Play");
m_MediaObject->play();
}
通过如下代码即可读出咱们需要的信息:
connect(process,SIGNAL(readyReadStandardOutput()),this,SLOT(back_message_slots()));
当process能够有信息读取时,发出信号,通过槽函数back_message_slots来读取相应的信息。
voidMPlayer:
:
back_message_slots()
{
while(process->canReadLine())
{
3、播放、停止功能
voidVideoWidget:
:
myplay()
{
qWarning("Play");
m_MediaObject->play();
}
voidVideoWidget:
:
mystop()
{
m_MediaObject->stop();
}
4、播放器界面初始化
voidVideoWidget:
:
sizeHint()
{
resize(320,240);
}
五、静音功能
下面代码即可实现快进功能:
process->write("mute0");
于RFID电子标签的物联网物流治理系统[J].微运算机信息,2006:
233-235.
[2]王亚民,陈青,刘畅生等.组态软件设计与开发[M].西安:
西安电子科技大学出版社,
2003:
90-120.
[3]彭宣戈.一种嵌入式Internet接口系统[J].微运算机信息,2005:
8-9.
[4]王建民.基于Qt的嵌入式媒体播放器系统的设计[C].微运算机信息,2000,17
(1):
84-86.
[5]Stevens,Stephen.UNIX环境高级编程[M],第二版.北京:
人民邮电出版社,2006:
45-99.
[6]刘军良,潘刚,李平等.基于ARM的嵌入式Linux图形化终端设计[A].第25届中国操纵会议论文集(下册)[C],2006,25
(2):
30-45.
[7]蔡志明,卢传富,李立夏等.精通QT4编程背景[M].电子工业出版社,2020:
45-86.
[8]叶顺流.基于ARM的嵌入式LINUX研究与实现[M].重庆大学出版社,2005:
34-46.
[8]袁野,王宏远.一种嵌入式系统GUI的设计[J].运算机
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QT 多媒体 播放 设计 开发 实现