毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc

上传人:wj 文档编号:4848439 上传时间:2023-05-07 格式:DOC 页数:42 大小:1.22MB
下载 相关 举报
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第1页
第1页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第2页
第2页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第3页
第3页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第4页
第4页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第5页
第5页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第6页
第6页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第7页
第7页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第8页
第8页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第9页
第9页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第10页
第10页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第11页
第11页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第12页
第12页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第13页
第13页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第14页
第14页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第15页
第15页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第16页
第16页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第17页
第17页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第18页
第18页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第19页
第19页 / 共42页
毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc

《毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc(42页珍藏版)》请在冰点文库上搜索。

毕业设计论文--------基于DirectShow的多媒体播放器设计与实现.doc

毕业论文基于DirectShow的多媒体播放器设计与实现

编号

毕业设计(论文)

基于DirectShow的多媒体播放器设计与实现

目录

摘要 I

Abstract II

1绪论 1

1.1课题研究的背景与意义 1

1.2课题国内外研究现状 1

1.3可行性分析 2

1.3.1技术可行性分析 2

1.3.2经济可行性分析 2

1.3.3管理可行性分析 2

1.4论文的主要内容及章节安排 3

2相关平台及开发技术简介 3

2.1MicrosoftVisualC++2010概述 3

2.1.1MicosoftVisualC++2010特点 3

2.1.2MFC概述 4

2.2ADO访问数据库技术概述 4

2.2.1OLEDB和ADO简介 4

2.2.2ADO主要对象介绍 5

2.2.3VC++中使用ADO进行数据库开发的基本流程 5

2.3DirectShow核心技术 5

2.3.1DirectShow整体架构 5

2.3.2COM组件 6

2.3.3Filter概述及连接 6

2.3.4滤波器链表管理器 7

2.3.5滤波器链表中数据传输 7

2.3.6事件通知机制 8

2.4Skin++皮肤库概述 9

2.4.1Skin++简介 9

2.4.2Skin++特性 9

3系统需求分析 9

3.1系统业务需求 9

3.2系统数据需求 10

3.3功能需求 10

3.4非功能需求 10

3.4.1适应性 10

3.4.2安全性 10

3.4.3可靠性 11

3.4.4可扩充性 11

3.4.5可维护性 11

3.4.6可移植性 11

4多媒体播放器的设计 11

4.1系统功能设计 11

4.1.1媒体文件添加(数据输入) 11

4.1.2媒体文件存储和显示(数据存储及显示) 12

4.1.3媒体文件播放及控制(数据流传输、控制及输出) 12

4.2系统结构设计 12

4.3系统数据库设计 13

4.4播放器滤波器链表结构设计 13

4.5DirectShow智能连接 13

4.5.1智能连接概述 13

4.5.2智能连接的实现 14

5多媒体播放器的实现 14

5.1基于DirectShow播放器的实现 14

5.1.1初始化COM 14

5.1.2创建滤波器链表管理器 15

5.1.3智能连接建立滤波器链表 15

5.2DirectShow接口实现 15

5.3媒体文件信息存储实现 15

5.3.1数据库存储 16

5.3.2链表存储 16

5.3.3List列表显示 17

5.4播放控制功能的实现 18

5.4.1定位 18

5.4.2播放 19

5.4.3暂停、停止 19

5.4.4全屏 19

5.4.5截图 20

5.4.6静音控制 20

5.4.7速率控制 21

5.4.8上一个和下一个 21

5.4.9查找 22

5.4.10删除 22

5.4.11排行榜 23

5.4.12播放模式设置 24

5.4.13帮助 24

5.4.14捕获本地摄像头 25

5.5歌词关联实现 26

5.5.1歌词构造原理概述 26

5.5.2获取歌词方法及过程 27

5.5.3遇到难点和问题 27

5.6用户管理功能实现 28

5.6.1用户注册 28

5.6.2用户登录 29

5.6.3用户使用系统整体流程 29

5.7播放JPG格式图片实现 30

5.7.1JPG格式图片缩放实现 30

5.7.2JPG格式图片的显示 30

6测试多媒体播放器实例及结论 31

6.1测试环境设计 31

6.1.1软件环境 31

6.1.2硬件环境 32

6.2测试用例设计 32

6.3测试结果分析 33

6.3.1多媒体播放器的主题界面 33

6.3.2多媒体播放器测试结果记录 34

6.4测试结论 35

结束语 35

致谢 35

参考文献 36

摘要

随着数字音视频处理、数字信息存储技术的不断发展,基于数字编解码的多媒体应用已经越来越深入到人们的日常生活中,如何高效处理声音、视频数据以及支持媒体文件格式则成为主要的问题。

DirectShowSDK是微软公司提供的一套在Windows平台上进行媒体处理的开发包,它支持高品质的数字视频、高保真的音频及其它特殊效果,广泛应用于流媒体播放器的开发、多媒体流的高质量捕捉和回放、视频点播技术等。

本论文概括性的阐述了基于DirectShow开发多媒体播放器的具体过程。

重点实现了播放、暂停、停止、前后切换、声音控制、进度控制、抓取视频帧、排行榜、删除、查找、播放模式控制、全屏等功能。

其中使用的技术包括VisualC++以及MFC程序设计方法、利用DirectShow实现播放器核心技术、ADO数据库访问技术、Skin++皮肤库技术。

通过对系统的需求分析、设计、实现,完成了媒体播放器系统,各项功能正常使用、并给出了实现关键代码。

论文中第二章是对相关技术的介绍,第三、四章是对系统需求分析和设计,第五章是本论文的重点,详细介绍播放器实现细节,第六章是对系统的测试和总结。

DirectShow是基于COM组件,它是二进制级别的(不受限于编程语言和操作系统),具有很好的兼容性和移植性。

由于本人是DirectShow的初学者,播放器存在一些瑕疵,DirectShow发展前景广阔,以后有机会深入研究它,在现有的基础上把播放器做得更加完美。

关键字:

VisualC++MFCDirectShow播放器

Abstract

Withdigitalaudioandvideoprocessing,digitalinformationstoragetechnologycontinuestoevolve,basedonthedigitalencodinganddecodingofmultimediaapplicationshasbecomeincreasinglypenetratedintopeople'sdailylives,howtoefficientlyhandlevoice,video,data,andsupportformediafileformathasbecomeamajorproblem.DirectShowSDKisasetofMicrosoftCorporationontheWindowsplatformformediaprocessingdevelopmentkit,whichsupportshigh-qualitydigitalvideo,high-fidelityaudio,andotherspecialeffects,widelyusedinthedevelopmentofstreamingmediaplayer,multimediastreaminghigh-qualitycaptureandplayback,video-on-demandtechnology.

ThisthesisdescribesthebroaddevelopmentofmultimediaplayerbasedonDirectShowspecificprocess.Focustoachievetheplay,pause,stop,forwardorbackward,soundcontrol,schedulecontrol,grabvideoframes,leaderboards,delete,search,playbackmodecontrol,fullscreenandotherfunctions.WhichusetechnologiesincludeVisualC++andMFCprogramdesignmethods,theuseofDirectShowplayercoretechnology,ADOdatabaseaccesstechnology,Skin++librarytechnologyskin.Throughthesystemrequirementsanalysis,design,implementation,completedamediaplayersystem,variousfunctionsnormaluse,andgivestherealizationkeycode.Thesecondchapterisapaperrelatedtotechnologyintroduction,twochaptersisthesystemrequirementsanalysisanddesign,thefifthchapteristhefocusofthispaper,detailingtheimplementationdetailsoftheplayer,thesixthchapteristhesystemtestingandsummary.DirectShowisbasedontheCOMcomponent,itisabinarylevel(notlimitedtoprogramminglanguages​​andoperatingsystems),hasgoodcompatibilityandportability.SinceIwasabeginnerDirectShow,theplayerhassomeflaws,DirectShowdevelopmentprospects,havetheopportunitytostudyitindepth,onthebasisoftheexistingplayersmoreperfect.

Keywords:

VisualC++MFCDirectShowPlayer

1绪论

1.1课题研究的背景与意义

当今信息技术越来越发达,社会越来越信息化、智能化,多媒体在未来社会应用越来越广泛。

Microsoft的Windows操作系统作为全球最主流、最常用的操作系统,掌握在它上面的多媒体开发技术显得越来越需要,相对于其他多媒体开发技术,掌握它本身提供的DirectX多媒体开发包显得更为适合。

DirectShow是微软提供的多媒体开发包DirectX中的一部分,它是建立在DirectDraw和DirectSound基础之上。

Microsoft给DirectShow程序员提供了一套开发多媒体标准的、统一的、高效的API接口,这些接口使得多媒体数据的回放变得简单,剥离了应用程序和硬件底层的差异性。

而DirectShow是基于COM组件的开发包,COM是基于二进制代码级的协议(与编程语言无关的协议),对使用DirectShow开发的软件以后的移植和兼容问题提供了良好的解决方案。

DirectShow使用智能连接开发多媒体应用程序,大大简化了开发人员工作量,同时开发人员亦可开发自定义的滤波器。

使得基于DirectShow的应用程序可以充分满足不同用户的需求。

在未来几年中,DirectShow技术的发展前景将是非常广阔的。

1.2课题国内外研究现状

DirectShow流媒体视频技术现在广泛的应用在国内外,涉及视频处理、视频捕捉、网络视频监控、网络视频传输和电子商务等各个方面。

国内的视频播放器多种多样,有暴风影音、QQ影音、迅雷看看等多种播放器,它们各自有各自的特点,目前暴风影音占据着市场的最大份额,它们各自采用的实现技术有所异同。

随着Internet的商业化,一些商家纷纷行动规划开发适用于本企业的播放器。

根据iResearch艾瑞资讯最新退出的网民连续用户行为研究系统iUserTracker的最新数据显示,目前,比较流行的多媒体播放器有:

MicrosoftWindowsMediaPlayer、RealOne、豪杰超级解霸以及暴风影音等,暴风影音和WindowsMediaPlayer是使用最广泛的影视播放软件,而这量大播放器的核心编码已成控件,因此全球网络化的公司都在利用这两大核心控件开发适合自己使用的播放器;网络上也有不少的研究者热衷于播放器的研究利用控件或MCT接口开发自己的播放器,并取得了很大的进步,推动了播放器的发展。

笔者所开发的多媒体播放器是使用的DirectShow技术,使用K-Lite_Codec_Pack进行解码,能播放任意格式的媒体文件,和其他播放器不同的是,我加入了排行榜、播放模式控制、捕获设备视频等功能,界面清晰,使用简单。

1.3可行性分析

1.3.1技术可行性分析

本人熟悉计算机相关基本知识、熟悉程序设计方法、熟练掌握VC++编程、MFC开发方法和技巧,具备一定的编程经验和独立编程能力。

基于DirectShow视频播放器实现原理可以通过查阅相关资料、请教老师和他人进行学习掌握,所以在技术上具有可行性。

1.3.2经济可行性分析

该软件的开发、测试、运行使用等步骤皆在自己PC上完成,无需提供其他设备。

开发过程中涉及到的知识、软件开发成本、交付后的运营维护皆由本人控制、完成,所用的软件和硬件配置环境均为现成,所以经济上具有可行性。

1.3.3管理可行性分析

本软件运用到实际生活、工作中,将会使音频/视频的播放和处理变得便利、经济及娱乐,而且还可以根据朋友、他人的用户体验不断完善此软件,可以感受到成就感,所以管理上具有可行性。

综上所述,本课题的可行性是有保障的。

1.4论文的主要内容及章节安排

论文的主要内容:

详细的阐述利用DirectShow实现多媒体播放器的原理、实现过程以及实现之后的演示效果,当中包含大量的VisualC++程序设计方法和数据库操作。

论文内容整体安排如下:

第一章:

介绍此课题的意义、相关背景和现状。

第二章:

介绍完成此软件所用到的平台和技术。

第三章:

阐述此软件的需求分析,包括业务分析、数据分析、功能需求和非功能需求。

第四章:

阐述此软件的整体结构和各个模块设计。

第五章:

详细阐述此软件的具体实现过程,包括各功能的核心代码。

最后是总结、致谢。

2相关平台及开发技术简介

2.1MicrosoftVisualC++2010概述

MicrosoftVisualC++,(简称VisualC++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。

VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(WindowsAPI)、三维动画DirectXAPI,Microsoft.NET框架。

2.1.1MicosoftVisualC++2010特点

MicrosoftVisualC++是微软公司推出的开发Win32环境程序、面向对象的可视化集成编程系统。

它的主要优点如下:

(1)程序框架自动生成

(2)灵活方便的类管理

(3)代码编写和界面设计集成交互操作

(4)可开发多种程序

(5)支持数据库接口、OLE2、WinSock网络和3D控制界面

2.1.2MFC概述

MFC(MicrosoftFoundationClasses)是一个微软公司提供的类库(classlibraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

MFC中的关键技术:

(1)MFC程序的初始化过程

建立一个MFC窗口:

从CWinApp派生一个应用程序类,然后建立应用程序对象(theApp)。

(2)动态创建

运行时创建指定类的对象。

如框架窗口对象、视对象等,比如文档对象需要由文档模版类对象来动态的创建。

(3)串行化

程序中尽管有着各种各样的数据,串行化机制会像流水一样按顺序存储到单一的文件中,而又能按顺序的取出,变成各种不同的对象数据。

(4)消息映射和传递

MFC把SDK编程中对消息的产生、传递、到过程函数中响应的过程封装起来,形成消息映射宏、消息映射表和消息响应函数体系,更加直观和便于操作。

2.2ADO访问数据库技术概述

2.2.1OLEDB和ADO简介

OLEDB(ObjectLinkandEmbeddingDataBase)是VisualC++开发数据库应用程序时提供的新技术,它对所有的文件系统包括关系型数据库和非关系型数据库都提供了统一的接口。

ADO(ActiveXDataObject)技术基于OLEDB,它继承了OLEDB技术的优点,对其接口作了封装,使程序开发得到简化。

2.2.2ADO主要对象介绍

(1)连接对象(ConnectionObject)代表一个和数据源的连接,以后的数据库操作都是建立在这个连接上的。

(2)命令对象(CommandObject)用来处理数据库的一些操作,在某些方面具有和连接对象相同的功能

(3)记录集对象(RecordSetObject)代表了一个记录集,用来访问记录集。

在使用这3个对象的时候,需要定义与之对应的3个智能指针,分别为:

_ConnectionPtr、_CommandPtr和_RecordsetPtr。

2.2.3VC++中使用ADO进行数据库开发的基本流程

(1)引入ADO动态链接库。

(2)初始化OLE/COM库环境。

(3)用Connection对象连接数据库。

(4)利用建立好的连接,打开记录,通过Connection、Command对象执行SQL语句或利用Recordset对象取得结果记录集进行查询、处理操作。

(5)使用完毕后关闭连接、释放对象。

2.3DirectShow核心技术

2.3.1DirectShow整体架构

DirectShowSDK为流媒体的开发带来了极大的便利。

提供了从底层的视频采集到顶层的流媒体交互应用的解决方案,并且把应用程序从数据传输、硬件差别和同步机制等复杂问题中分离出来。

其整体架构如下图所示:

图2.1DriectShow系统架构

2.3.2COM组件

DirectShow是基于COM的流媒体处理的开发包。

COM是一种跨应用和语言共享的二进制代码的方法,它是个开放的组件标准,具有很强的扩充和扩展能力。

其优点如下:

(1)可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制。

(2)可以方便的将应用系统扩展到网络环境中。

(3)可以在多个应用系统中重复利用同一个组件。

(4)COM组件与语言和平台无关。

2.3.3Filter概述及连接

滤波器Filter是一个COM组件,是DirectShow中最基本的元件,DirectShow提供了标准滤波器,亦可自定义。

滤波器主要分为以下几种类型:

(1)源滤波器

(2)变换滤波器(3)提交滤波器。

滤波器之间通过输出引脚(OutPin)和输入(InputPin)引脚之间连接来进行数据传输,所有的滤波器连接起来形成滤波器链表即FilterGraphManager。

数据流的传输过程如下图所示:

图2.2数据传输流动过程

2.3.4滤波器链表管理器

在DirectShow中,使用滤波器链表管理器来控制滤波器链表中的所有滤波器,它也是COM形式的。

它通过使用迭代的方法将各个滤波器连接起来建立滤波器链表。

最重要的是它提供了一系列的接口给应用程序,比如IMediaControl(控制数据流)、IMediaEventEx(处理滤波器链表事件)、IBasicAudio(控制音频流的音量和平衡)等,使得应用程序方便、实时的控制、改变滤波器链表中的状态,以达到用户想要的要求和效果。

2.3.5滤波器链表中数据传输

滤波器之间传递的数据内容不是直接指向内存块的指针,而是一个管理内存的COM对象,称之为媒介样品(MediaSample),它由一个叫做(分配器)Allocator的COM对象来创建和管理。

滤波器、媒介样品和分配器三者之间的关系如下图所示:

图2.3分配器、媒介样品和滤波器之间的关系

DirectShow为数据在滤波器链表中传输定义了两种机制:

(1)推模式(PushModel):

上一级滤波器将生成的数据提交给下一级滤波器,下一级被动的接收数据,依次进行传递。

(2)拉模式(PullModel):

下一级滤波器向上一级滤波器请求数据,上一级滤波器才传送数据给它,依次进行传递。

2.3.6事件通知机制

DirectShow中的事件通知机制和Windows中的消息机制非常类似,各种滤波器,滤波器链表管理器都是通过事件通知的方式和应用程序进行交互、通信的。

比如多媒体文件的播放、暂停、停止等状态变化都是通过此方式通知应用程序,应用程序自定义响应函数来处理各种事件。

在本软件中,响应最多的是多媒体文件播放结束事件通知。

具体实现过程:

(1)自定义滤波器链表通知给指定窗口消息

#defineWM_GRAPHNOTIFY(WM_USER+20)

(2)设置消息通知到指定窗口

m_pFilterGraph->SetNotifyWindow(this->GetSafeHwnd());

(3)自定义响应函数中解析事件(回调函数)

pEvent->GetEvent(&eventCode,&eventParam1,&eventParam2,INFINITE)

(4)响应操作

2.4Skin++皮肤库概述

2.4.1Skin++简介

Skin++,采用独特的软件界面开发技术,让原本复杂繁琐的界面编程变得轻松自如,只需要在您的程序中添加一句代码,Skin++就能让您的界面焕然一新,并拥有多种主题风格和色调的动态切换功能。

2.4.2Skin++特性

(1)支持Windows系统对话框与控件。

(2)支持广泛的开发工具。

(3)皮肤资源海量。

2.4.3Skin++换肤流程

(1)应用程序启动,加载Skin++库。

(2)执行Skin++加载皮肤文件API函数。

(3)应用程序退出,卸载Skin++库。

3系统需求分析

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2