用VC++实现多媒体播放器_第1页
用VC++实现多媒体播放器_第2页
用VC++实现多媒体播放器_第3页
用VC++实现多媒体播放器_第4页
用VC++实现多媒体播放器_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

精品文档第2页/共2页精品文档推荐用VC++实现多媒体播放器摘要

目前常见的多媒体软件应该讲各有特群,然而几乎每一具都存在着别如人意的地点。我的课题是“基于VC++开辟工具的媒体播放器软件设计”,首先是初步介绍一些当前的媒体及媒体播放器,然后是详细介绍一具由本人设计的多媒体播放器———mediaplayer。该播放器是基于MFC集成开辟环境,利用系统的MCI(mediacontrollerinterface)命令接口来编程,具有体积小,支持的播放格式多、系统资源占用少、支持播放列表编辑、支持各种视频格式等功能优势。

关键词

媒体播放器;MCI;播放列表;音频;视频

Abstract

Thecommonmultimediasoftwareshouldhavetheircharacteristics,butalmosteachonethereisnosatisfactorymanner.Mytopicis"basedonVC++developmenttoolsformediaplayersoftwaredesign",thefirstisanintroductiontosomeofthecurrentmediaandmediaplayer,thenthedetaileddesignofamultimediaplayerhimself-mediaplayer.TheplayerisbasedonMFCintegrateddevelopmentenviroXXXent,usingthesystemMCI(mediacontrollerinterface)commandinterfacetoprogramming,issmall,supportmulti-formatplayback,occupylesssystemresourcestosupporttheplaylistediting,supportvariousvideoformatssuchasfunctionaladvantages.

Keywords

mediaplayer;MCI;playlist;audio;video

名目

一、引言

1课题研究的目的和技术进展的现状

1.1研究本课题的目的

1.2技术应用的基本现状

2论文完成的要紧工作

3本课题中的重点

二、媒体格式简介.

1啥是WMFSDK

2WMFSDK体系结构

2.1生成器结构

2.2读取器结构

3WMFSDK编程开辟环境配置

三、软件开辟与设计.

1操作办法

2具体步骤

四、系统测试

1测试目的

2测试环境

3测试办法

3.1白盒法

3.2黑盒法

4测试结果

五、结束语

XXX

基于VC++开辟工具的媒体播放器软件设计

一、引言

多媒体技术的概念和应用浮现于20世纪80年代初期,通过十余年的进展,随着计算机科学网络的普及和多媒体技术的进展,已成为计算机领域进展的热点技术,针对目前各种媒体格式,怎么简单方便的播放各类媒体已成为人们普遍关注的咨询题,而媒体播放器的开辟也变得十分重要。

1课题研究的目的和技术进展的现状

1.1研究本课题的目的

随着技术的进展,多媒体素材类型也增多,包括音频、视频、图像、动画等,由于音视频、图像等的信息容量大,受硬件条件限制,以往多媒体应用并别广泛,随着硬件技术的别断提高,多媒体技术已为各类人员广泛使用,开辟多媒体课件、网络课程、某网战、应用软件、治理项目等均需利用多媒体素材,所以开辟制作这一播放器具有备现实意义,与其它多媒体播放器比较,这一多媒体播放器具有功能强大、占用空间小的特点,它与现有多媒体资源应用状况密切结合,既具有非常强的直观感,又别失普通性。

1.2技术应用的基本现状

Microsoft公司1998年推出了VisualC++6.0,它是支持Win32平台应用程序(application)、服务(service)和控件(control)开辟的可视化编程的集成环境。与

VC++5.0的最大别同之处是它的帮助功能更强大,MSDN(MicrosoftDeveloperNetworking)为包括VC++6.0在内的所有微软的程序产品提供在线帮助;另外,类的对象的可用成员函数、成员变量及函数的参数类型与个数都能动态显示在屏幕上,用户无须记住那些复杂而又枯燥乏味的函数名及复杂的参数,这无疑使得用VC++编程更加容易。因此VC++6.0可谓是Microsoft公司的王牌产品,编程功能强大而赢得广阔程序的偏爱。

多媒体技术差不多在如下若干方面开展了有效的应用:①多媒体治理信息系统、展示系统;②多媒体电子出版物(Title);③计算机辅助教学、教育培训;④计算机艺术制作、设计;⑤计算机娱乐-游戏、双向电影;⑥协同工作。有发下三大进展趋势:进一步完善计算机支持的协同工作环境;智能多媒体技术;把多媒体信息实时处理和压缩编码算法集成到CPU中。

2论文完成的要紧工作

依照学习研究,本媒体播放器的开辟基于VC++MFC的对话框,利用WindowsMCI(MediaControlInterface)控件和VC++6.0自带的ActiveX控件――ActiveMovieControlObject来实现各类媒体格式的播放及程序界面处理。

首先确定要解决的咨询题是弄清晰MCI函数与命令消息的名称类型和功能;其次是经过分析媒体播放的具体过程,在打开媒体设备的过程中应用程序需要做哪些情况,以便在应用程序中加入对这些过程支持的代码;在对应用程序的流程有了大致的轮廓往后(最好画出流程图),在开始思考程序框架的设计,应用程序外观的设计;最终也是最关键的算是编写实现播放媒体的代码将播放器的基本功能实现,紧继续算是程序的调试和完善

3本课题中的重点

本课题中的重点是对ActiveMovie控件的应用,ActiveMovie控件是微软公司推出的用于多媒休程序设计的控件它提供了很完善的音频和视频媒体文件的回放功能,能支持多种文件格式,从最常见的WAV文件和AVI文件到使用MPEG压缩格式的VCD视频文件,都能够正常地举行播放。控件能依照文件后缀举行自动判不设备类型,并完成相应的操纵。所以,若正在编写的应用程序需要提供多媒体支持,这么使用ActiveMovie控件是一具非常好的主意。其实,非常多优秀的多媒体应用程序,其内部的多媒体回放算是利用ActiveMovie控件来实现只要精心地设计应用程序的用户界面,我们一样能够开辟出功能齐全、外观美丽、具有相当水准的多媒体播放器。

使用ActiveMovie控件开辟多媒体应用程序能够大大提高多媒体开辟效率,只要设置控件的Fil,.Name属性,确定该控件要打开的媒体文件名称,然后执行RUN办法就能够对该媒体文件举行播放;经过设置Selectio.End和SelectionSlart的值,能够实现播放某一段媒体流;还能用鼠标Click相应的按钮完成播放、停止、暂停、快进、快退等功能。

二、媒体格式简介.

1啥是WMFSDK

WMFSDK是微软WindowsMedia技术的重要组成部分,它基于COM技术,能够方便地开辟具有高性能要求的多媒体应用程序。对WMFSDK关键技术作了概括介绍,

并给出了采纳VisualC++编程语言开辟视频播放器的软件实现过程。WMFSDK采纳了面向对象的设计,是一套彻底基于COM组件模型的高级开辟包。它引入的生成器,读取器,器等对象屏蔽了ASF数据格式、传输操纵等较为底层的流媒体技术实现细节,留下比较上层的编程接口给开辟者使用。

2WMFSDK体系结构

WindowsMediaFormatSDK具有许多处理ASF文件的功能,但其核心功能是读写文件。

2.1生成器结构

使用WindowsMediaFormatSDK构建的应用程序将源媒体样本传递给生成器。生成器使用配置文件对象中指定的设置对文件举行编码。配置文件对象定义已编码文件的格式,包括每个流的详细信息以及应怎么处理流的信息。大多数音频和视频流由一种WindowsMedia编码解码器来处理。然而,编码治理器首先用一种转换器来处理数据,为压缩做预备。当样本能够放入文件时,先传递给多路复用器,多路复用器依照演示时刻从所有流中隔行扫描样本并将数据打包。多路复用器创建的位流被传送到一具接收器,接收器为最后目的地处理I/O,别管它是磁盘上的文件依然Internet或其他网络广播。

2.2读取器结构

读取过程与数据写入过程都是相同,只是顺序是相反的。读取器连接到源,源能够是文件、网络连接或自定义源。拆分器处理文件的数据部分,将数据分成单个流样本,然后将样本解压缩(假如启用了DRM爱护),并经过相应的WindowsMedia编码解码器来处理。默认事情下,读取器内部会自动挑选合适的解码器对ASF流数据举行解压缩。

3WMFSDK编程开辟环境配置

WMFSDK仅适合C/C++编程语言,开辟平台能够是VC++6.0或VisualStudio.NET.本文介绍VC6.0的设置办法。

打开VC++6.0,挑选菜单命令的Tools→Options,单击Directories,在Showdirectoriesfor下拉菜单中挑选Includefiles,然后将SDK的安装路径放在VC标准路径之前。

在开辟应用程序项目时,对VC6.0Debug版本还需要如下设置:挑选菜单命令Project中的settings,进入标签link,在Category下拉列表中挑选General,把wiXXXm.lib和wmvcore.lib文件添加到Object/librarymodules中,并选中Ignorealldefaultlibraries。

三、软件开辟与设计

1操作办法

①用VC++6.0应用程序向导建立一具基于对话框的MFC程序,取名MediaPlayer,其它选项都基于默认设置。

②向对话框中添加控件,调整对话框布局。

③在Project菜单中挑选Setting命令,挑选Link选项卡,在Object/Librarymodules输入wiXXXm.lib,wmvcore.lib文件,这是编译使用MCI接口的多媒体程序所必须的。

④在编程时,要添加工程文件wmsdk.h。wmsdk.h定义了SDK中的接口,常量,数据结构,枚举变量和GUID等。

⑤向该工程的各个成员函数添加代码。要紧有主程序类的初始化函数OnInitDialog(),功能按钮Open()(打开),OnPlay()(播放)、OnPause()(暂停)、OnStop()(停止)、和GetHeaderAttribute(),RetrieveAttributes()

2具体步骤:

①打开VC6.0,在Projects下挑选MFCAppWizard(exe),并取名MediaPlayer,然后建立基于对话框(DialogBased)的运用程序。

②打开ResourceView,挑选其中的对话框,打开其中的主对话框,去掉对话框上的“确定”按钮,保留“取消”,将Caption改为“Exit”。然后再在上面加上九个按钮,ID和Caption分不为

IDC_OPEN,Open;

IDC_PLAY,Play;

IDC_PAUSE,Pause;

IDC_STOP,Stop;

IDC_CLOSE,Close;

IDC_LOWER,>;

IDC_FULLSCREEN,Full;

IDC_REPEAT,Repeat;

再加入两个静态文本控件,分不为IDC_STATIC,Volume;IDC_STATIC2,Status:Nomal

③再打开Projects->AddtoProject->ComponentsandControls->RegisteredActiveXControls对话框,挑选其中的ActiveMovieControlObject,Insert,OK之后,你会发觉你的控件面板上多了一项ActiveMovieControlObject,将它选中,直截了当放在你的对话框上就行了。按Ctrl+W打开ClassWizard为它添加变量CActiveMovie3m_ActiveMovie。

④接下来,算是为程序添加消息处理函数。打开ClassWizard,为各个按钮加入消息处理函数。在MediaPlayerDlg.cpp文件里为各消息处理函数添加代码,各代码如下:

voidCMediaPlayerDlg::OnClose()

{

m_ActiveMovie.CloseWindow();//关闭窗口

}

voidCMediaPlayerDlg::OnOpen()

{

charszFileFilter[]="Mp3File(*.mp3)|*.mp3|""WmaFile(*.wma)|*.wma|"

"VideoFile(*.dat)|*.dat|""WaveFile(*.wav)|*.wav|""AVIFile(*.avi)|*.avi|"

"MovieFile(*.mov)|*.mov|""MediaFile(*.mmm)|*.mmm|"

"MidFile(*.mid;*,rmi)|*.mid;*.rmi|""MPEGFile(*.mpeg)|*.mpeg|"

"AllFile(*.*)|*.*||";//文件类型过滤(打开的文件格式类型)

CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);

if(dlg.DoModal()==IDOK){

CStringPathName=dlg.GetPathName();

PathName.MakeUpper();

m_ActiveMovie.SetFileName(PathName);

}

}

voidCMediaPlayerDlg::OnPlay()

{

m_ActiveMovie.Run();//播放文件

SetTimer(0,20,NULL);//设置定时器

}

voidCMediaPlayerDlg::OnStop()

{

m_ActiveMovie.Stop();//停止播放文件

KillTimer(0);//关掉定时器

}

voidCMediaPlayerDlg::OnPause()

{

m_ActiveMovie.Pause();

}

voidCMediaPlayerDlg::OnUpper()//快进

{

longVolume=m_ActiveMovie.GetVolume();

m_ActiveMovie.Pause();

m_ActiveMovie.SetVolume(Volume+100);

m_ActiveMovie.Run();

}

voidCMediaPlayerDlg::OnLower()//慢放

{

longVolume=m_ActiveMovie.GetVolume();

m_ActiveMovie.Pause();

m_ActiveMovie.SetVolume(Volume-100);

m_ActiveMovie.Run();

}

voidCMediaPlayerDlg::OnRepeat()

{

if(!isRepeat){

isRepeat=TRUE;

SetDlgItemText(IDC_STATIC2,"Status:Repeat");//重复播放}

else{

isRepeat=FALSE;

SetDlgItemText(IDC_STATIC2,"Status:Normal");

}

}

voidCMediaPlayerDlg::OnFulscreeen()//全屏

{

m_ActiveMovie.Pause();

m_ActiveMovie.SetFullScreenMode(true);

m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);

m_ActiveMovie.Run();

}

{

doubleCurrentPos=m_ActiveMovie.GetCurrentPosition();

if(CurrentPos==0&&isRepeat)//假如当前是文件的起始位置而且为重复播放状态m_ActiveMovie.Run();

CDialog::OnTimer(nIDEvent);

}

⑤为使播放器具有Repeat功能,需在头文件MediaPlayerDlg.h加入操纵变量BOOLisRepeat;类型可为Private。并且修改OnInitDialog()函数:

BOOLCMediaPlayerDlg::OnInitDialog()

{

CDialog::OnInitDialog();

isRepeat=FALSE;

……

}

⑥如此此播放器就具有普通的媒体播放功能了,但为了有更好的用户界面,我将按钮变成了圆形的。为此,要在工程里加入文件RoundButton.h以及RoundButton.cpp

用CRoundButton来代替CButton。先打开类向导,为上述按钮添加对应变量。

CRoundButtonm_FullScreen;

CRoundButtonm_Repeat;

CRoundButtonm_Upper;

CRoundButtonm_Lower;

CRoundButtonm_Close;

CRoundButtonm_Exit;

CRoundButtonm_Stop;

CRoundButtonm_Play;

CRoundButtonm_Pause;

CRoundButtonm_Open;

四系统测试

1测试目的

①依据用户需求,概要设计和详细设计讲明,设计测试用例,对软件系统举行测试。其目的是[12]:

②测试是为了发觉程序中的错误而执行程序的过程。

③好的测试方案是极有也许发觉迄今为止尚未发觉的错误测试方案

④成功的测试是发觉了至今为止尚未发觉的错误

温馨提示

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

评论

0/150

提交评论