多媒体播放器的设计.docx

上传人:b****5 文档编号:29660970 上传时间:2023-07-26 格式:DOCX 页数:19 大小:253.90KB
下载 相关 举报
多媒体播放器的设计.docx_第1页
第1页 / 共19页
多媒体播放器的设计.docx_第2页
第2页 / 共19页
多媒体播放器的设计.docx_第3页
第3页 / 共19页
多媒体播放器的设计.docx_第4页
第4页 / 共19页
多媒体播放器的设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

多媒体播放器的设计.docx

《多媒体播放器的设计.docx》由会员分享,可在线阅读,更多相关《多媒体播放器的设计.docx(19页珍藏版)》请在冰豆网上搜索。

多媒体播放器的设计.docx

多媒体播放器的设计

1vb简介………………………………………………………………………………1

2多媒体播放器的开发设计…………………………………………………………2

2.1设计要求…………………………………………………………………………2

2.2设计方案…………………………………………………………………………2

2.3基本原理…………………………………………………………………………3

3设计方案的实现……………………………………………………………………5

4程序代码……………………………………………………………………………5

5运行结果……………………………………………………………………………10

6心得体会……………………………………………………………………………13

7参考资料……………………………………………………………………………14

 

1VB简介

Visual意为可视的、可见的,指的是开发像Windows操作系统的图形用户界面(GraphicUserInterface,GUI)的方法,它与其他编程软件不同的是不需要编写大量代码去描述界面元素的外观和位置,只要把预先建立好的对象拖放到屏幕上相应的位置即可。

应该说,这是一次质的飞跃,是一次编程技术的革命。

  Basic实际上是一个短语的缩写,这个短语就是Beginners'All-PurposeSymbolicInstructionCode,其中文意思为“初学者通用符号指令代码”。

  VisualBasic6有学习版、专业版和企业版三种版本,以满足不同的开发需要。

学习版适用于普通学习者及大多数使用VisualBasic开发一般Windows应用程序的人员;专业版适用于计算机专业开发人员,包括了学习版的全部内容功能以及Internet控件开发工具之类的高级特性;企业版除包含专业版全部的内容外,还有自动化构件管理器等工具,使得专业编程人员能够开发功能强大的组骨子里分布式应用程序。

  随着版本的提高,VisualBasic的功能也越来越强。

自从5.0版,VisualBasic推出了中文版,与前个版本相比,其功能有了很大提升。

  但是,功能再强大,VisualBasic仍然有一个缺点:

在没有MSVBVM**.DLL的计算机上必须安装所需的DLL文件(同样VisualC++在没有MSVCRT*.DLL情况下亦无法运行)。

不过在Windows2000之后,这个DLL就被预置到操作系统中了,一般来说,程序如果只使用了VB内部的控件和对象,基本上不会有太大的问题。

  在21世纪初,Microsoft公司推出VisualStudio.NET2003,它与VisualBasic之间有了重大变化,VisualStudio为各种编程工具做了一个平台,VisualBasic.NET可在这种平台上运行。

相对于传统VB,有很大的不同。

VB.Net首次使用.Net构架进行可视化编程,并且能很好地与构架兼容,VisualStudio.NET2003应用.NETFramework1.1。

  2005年VisualStudio2005则运用了NET2.0的技术,更加的方便了程序员的工作。

可是新的程序对系统配置要求也较高,需要微软.NetFramework2.0以上的.Net构架支持。

  2007年12月,微软(Microsoft)推出了VisualStudio2008Beta2发生了重大的变化(见附图)在代码输入的时候,可以比VB2005快很多,在非特殊的情况下,VB2008都会自动开启自动完成关键字这个命令而且支持最新的.NETFramework3.5SP1Beta

微软开发了一系列有关VB的脚本语言:

  VisualBasicforApplications,即VBA,包含在微软的应用程序中(比如MicrosoftOffice),以及类似WordPerfectOffice这样第三方的产品里面。

VBA这样嵌入在各种应用程序中看起来有些矛盾,但是它的功能和VB一样强大。

  VBScript是ASP的默认语言,还可以用在Windows脚本编写(ShellScript)和网页编码(HTML)中。

尽管它的语法类似于VB,但是它却是一种完全不同的语言。

VBS不使用VB运行库运行,而是由Windows脚本宿主(wscript.exe-MicrosoftWindowsBasedScriptHost)解释执行。

这两种语言之中的不同点影响ASP的表现。

  当微软准备开发一种新的编程工具的时候,第一决定就是利用最抢手的VB6来进行修改,或者就是重新组建工程开发新工具。

微软后来开发了VB的继任者VisualBasic.NET,同时也是.NET平台的一部分。

VB.NET编程语言是一种真正的面向对象编程语言(VB4-VB6只能称为基于对象而不是面向对象,最明显的特征就是VB4-VB6都不支持类的继承),和传统VisualBasic并不完全兼容。

[2]

2多媒体播放器的开发设计

2.1设计要求

内容:

多媒体播放器是根据计算机用户使用系统时的实际需求而开发,完全能够实现用户对计算机多媒体文件的查询和播放。

要求:

根据多媒体播放器的要求,要求系统具有以下功能:

选取多媒体文件;播放多媒体文件;停止播放多媒体文件;打开字幕功能;关闭字幕功能;打开CD驱动器功能;关闭CD驱动器功能;添加播放列表功能。

2.2设计方案

WindowsMediaPlayer控件(msdxm.ocx)支持的文件类型比较丰富,可以播放WAV、MID、MP3、WMA、AIF、ASF、MPEG、MPG、AVI、MOV、DAT、RMI等多媒体文件。

在VB6.0SP5下利用这个控件实现自动连续循环播放以及启动时自动从上次退出时的文件处继续播放多媒体文件的技术。

多媒体技术的基本工作原理是:

多媒体终端通过不同接入层网络(固定NGN、移动NGN、Internet),接入传输层IP分组网络,在控制层IMS/SoftSwitch等SIPProxy设备的控制下,通过业务层的逻辑控制实现多媒体业务及应用。

其结构下图所示:

 

图1多媒体结构图

MPlayer是一款开源的多媒体播放器,以GNU通用公共许可证发布。

此款软件可在各主流作业系统使用,例如Linux和其他类Unix作业系统、微软的视窗系统及苹果电脑的MacOSX系统。

MPlayer是建基于命令行界面,在各作业系统可选择安装不同的图形界面。

MPlayer是Linux上的最强大的电影播放器(也能跑在许多其它Unixs上,甚至非x86CPU上)。

如今它也有了在微软视窗操作系统和苹果MacOS中的版本。

它能使用众多的本地的,XAnim,RealPlayer,和Win32DLL编解码器,播放大多数MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,FLI,RM,NuppelVideo,yuv4mpeg,FILM,RoQ文件。

你还能观看VideoCD,SVCD,DVD,3ivx,RealMedia,和DivX格式的电影(你根本不需要avifile库)。

MPlayer的另一个大的特色是广泛的输出设备支持。

它可以在X11,Xv,DGA,OpenGL,SVGAlib,fbdev,AAlib,DirectFB下工作,而且你也能使用GGI和SDL(由此可以使用他们支持的各种驱动模式)和一些低级的硬件相关的驱动模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)。

他们大多数支持软件或者硬件缩放,因此能在全屏下观赏电影。

MPlayer还支持通过硬件MPEG解码卡显示,诸如DVB和DXR3与Hollywood+。

可以使用European/ISO8859-1,2(匈牙利语,英语,捷克语等等),西里尔语,韩语的字体的清晰放大并且反锯齿的字幕(支持10种格式),和onscreendisplay(OSD)。

MPlayer是Linux上一款非常优秀的电影播放器,能够播放大多数视频文件,如MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,FLI,RM,NuppelVideo,yuv4mpeg,FILM,RoQ等。

而且它的另一个优点是可移植性好,现在常用的微软的Windows平台和苹果的Mac平台都有它的身影。

不仅如此,Mplayer还可以移植到很多非X86的平台上。

 

2.3基本原理

MCI(媒体控制接口)是Microsoft公司为实现Windows系统下设备无关性而提供的媒体控制接口标准。

用户可以方便地使用MCI控制标准的多媒体设备。

  MCI包含在Windows多媒体扩展的MMSYSTEM模块中,用来协调事件间以及MCI设备驱动程序间的通讯,提供了与设备无关的接口属性。

通常应用程序是通过指定一个MCI设备类型来区分MCI设备,设备类型指明了当前实际使用设备的物理类型,不同的设备类型使用不同的控件属性来进行描述(见附表1)。

  从使用的控制方式上来说,MCI设备分为复合和简单两类。

一个简单MCI设备并不需要设备元素。

例如,CD音频和音碟机就是在一个已经安装好了的硬盘上工作的,它们不需要应用程序为其操作的媒体内容提供任何信息。

但对于复合的MCI设备,就需要应用程序提供设备元素,即一个包含全部路径名的源数据文件或目的文件。

  VisualBasic语言的CustomControl(用户控制部件)概念体现了当今软件设计的发展潮流--面向对象技术,编程者可以在VisualBasic的工具箱(Toolbox)中嵌入各式各样五花八门的用户控件,每个用户控制部件都有一定的属性和操作方法,编程者通过属性的设置和方法的控制完成特定的功能。

为了方便地控制多媒体,在专业版VisualBasic工具箱中提供了一个用于多媒体目的的用户控件--MCI.OCX。

  多媒体MCI控件MCI.OCX专用于对多媒体控制接口MCI设备的多媒体数据文件实施记录和回放,从目的效果上来说,该控件通过一组按钮来发出种种设备控制命令以实现对诸如:

音频面板、MIDI音序器、CD-ROM驱动器、音频CD播放机、录像带播放、录音带录放等设备的控制。

在VisualBasic程序设计时,当在表中加入多媒体MCI控件时(在工具箱内双击MCI控件),则出现下列按钮群:

向前(Prev)、向后(Next)、播放(Play)、暂停(Pause)、返回(Back)、单步(Step)、停止(Stop)、记录(Record)和出带(Eject)。

应用程序对MCI的这组按钮操作非常灵活方便,如当我们打开一个MCI设备后,就可以根据该设备类型的属性随时从控件中选择合适的状态按钮来表示即刻设备的物理状态。

所有MCI控件可以有下列几种方式来编程:

⑴控件及其各按钮的可见性和使能性;⑵可变或完全对控件进行重新定义;⑶在一个窗口表格中可以同时控制多个设备。

在VisualBasic3.0专业版中,多媒体控件MCI.OCX(在VisualBasic3.0和4.0中,多媒体控件的扩展名为.VBX)是作为可选用部件提供的。

为了使用它,首先要执行FileAddFile菜单命令,把Windowssystem目录下的MCI.OCX加入到工具箱(Toolbox)中,这时会在工具箱中出现相应的MCI.OCX图标。

如果使用的是VisualBasic4.0版(或5.0版),选择oolsCustomControls菜单或直接键入Ctrl+T,即可出现对话框,在AvailableControls列表框中选中MicrosoftMultimediaControls条目旁边的检查框,同样会在工具箱中出现MCI.OCX图标。

  双击工具箱中的多媒体控件MCI.OCX图标,调用MCI.OCX控件之后,表单FORM中将出现一排灰色的媒体控制按钮(九个)。

多媒体控件MCI.OCX包含有一组高级的与设备无关的控制命令。

在使用该多媒体控件时,首先用OPEN命令打开MCI设备(多媒体设备)并建立一个与之对应的文件,以便来进行录或放等操作(但是对诸如CDAudio、VCR和录像带不能使用相应文件)。

一旦设备打开成功,就可以向它发出各种操作命令(见附表的按钮命令)来完成指定的工作任务。

最后记住,要用Close命令来关闭设备和数据文件。

  使用MCI.OCX来进行多媒体应用程序开发是很方便的,因为大多数属性都是容易理解的,其中mand属性尤为重要,它是在运行过程中向多媒体设备发命令。

格式为:

  Form.Mmcontrol.mand=cmdstring$

  其中,cmdstring$变量是如下可执行命令名:

Open、Close、Play、Pause、Stop、Back、Step、Prev、Next、Seek、Record、Eject、Sound和Save。

一旦给其命令设置,它就立刻执行,所发生的错误存在Error属性中。

  下面以播放DEMO.WAV(波形文件)文件为例,说明VisualBasic多媒体应用程序设计步骤。

  首先,创建一个包含有多媒体控件(MCI.OCX)的表格(Form),于是屏幕上显示出形状类似录音机的控制键,不过这时多媒体控制部件是不能马上拿来用的(各键呈灰色),须通过程序代码来改变键的状态。

  其次,在Form_Load过程中,插入相应程序代码。

如下

  SubForm_Load()

  ‘在发出OPEN命令前要设置多媒体设备的属性

  Form1.MMControl1.Notify=False

  Form1.MMControl1.Wait=True

  Form1.MMControl1.Shareable=False

  Form1.MMControl1.DeviceType="WaveAudio"

  Form1.MMControl1.FileName="c:

windowss

  Mmdatademo.wav"

  Form1.MMControl1.mand="Open"

  EndSub

3设计方案的实现

3.1自动连续循环播放多个文件

通过对通用对话框控件(DLG32.OCX)的有关属性进行设置,可实现按选择的文件类型在列表框中显示符合条件的文件,用户可在该列表框中显示符合条件的文件,用户可在该列表框中选择一个文件,或选择连续或不连续的几个文件,若选择了多个文件,则按顺序连续循环播放。

开始播放后,组合框和窗体的标题栏同时显示正在播放文件的文件名。

3.2自动记忆播放目录和正在播放的文件的路径

退出播放器时,程序自动将用户选择的目录保存到Windows的注册表中,以便下次选择要播放的文件时,在打开对话框中,直接显示的是上次选择的目录。

同时,自动将用户选择的文件清单保存到文件中,以便下次启动该程序时,可以直接从退出时正在播放的那个文件开始继续播放,这样就能实现每次启动播放器,首先播放的是上次退出时播放的那个文件。

这样做就使程序具有了记忆功能。

3.3用户自定义播放顺序

单击下一首按钮,开始播放下一个文件,单击上一首按钮,开始播放上一个文件。

单击暂停按钮,则播放器暂停播放,同时暂停按钮变为开始按钮,单击开始按钮,播放器从暂停处继续播放,同时开始按钮恢复为暂停按钮。

单击组合框右边的下拉箭头,可以看到正在播放的文件列表,要想换一个文件播放,直接单击文件名即可。

用户也可以直接打开播放列表文件,用文本编辑器编辑播放文件的顺序。

 

4程序代码

4.1 界面布局设计

新建一个窗体Forml,在上面画一个组合框bol,设置其Style属性2-DropdownList,画五个命令按钮(打开、暂停、关闭、上一首、下一首),一个通用对话框(monDialog)控件,一个媒体播放器(WindowsMediaPlayer)控件。

调整好控件在窗体中的位置。

4.2 系统初始化

PrivateDeclareFunctionGetSystemDirectoryLib″

Kernel32″Alias″GetSystemDirectoryA″(ByValpBuffer

AsString,ByValnSizeAsLong)AsLong返回Win2

dows\system所在的文件夹

PrivateWinSysPathAsString

PrivateSelectFName(1000)AsString

PrivateSelectNumAsInteger,NextPlayingAs

Integer

PrivatePreviousPathAsString此变量保存用户上次选择的目录,其值保存在Windows注册表中

4.3 自动从上次退出时的文件处继续播放

要实现此功能,可以在窗体的Load事件中编写

如下代码:

Dimtmp1AsString

Dimtmp2AsInteger

MediaPlayer1.AutoRewind=True

MediaPlayer1.AutoStart=True

MediaPlayer1.ShowStatusBar=True

MediaPlayer1.ShowDisplay=True

MediaPlayer1.AutoSize=False

bo1.Locked=False

PreviousPath=GetSetting(″MyPlayer″,″

PlayMM″,″LastPath″,″NoData″)

以下代码将上次选择的多媒体文件(保存在WinSysPath中)读出来,放SelectFName数组中,并开始播放

tmp1=Space(260)

tmp2=GetSystemDirectory(tmp1,Len(tmp1))

WinSysPath=Left(tmp1,tmp2)

WinSysPath=WingSysPath+″\Inventory.txt″

Inventory.txt文件保存正在播放文件的列表。

OnErrorGoToErrhandler

SelectNum=0

NextPlaying=-1

OpenWinSysPathForInputAs#1

DoWhileNotEOF

(1)

LineInput#1,SelectFName(SelectNum)

\boL.AddltemMid(SelectFName(Select2

Num),InStrRev(SelectFName(SelectNum),″\N)+

1)

SelectNum=SelectNum+1

Loop

Close#1

MediaPlayerlEndOfStream(0&)

Errhandler:

Ifbol.ListCount=0Then′Inventory.txt文件不存在或播放列表为空

bol.List(0)=“没有可选项目”

EndIf

bol.Listlndex=0

4.4 选择播放序列

PrivateSubmand1Click()

DimFNameAsString

DimiAsInteger,jAsInteger

DimThePathAsString

DimtmpAsString

monDialog1.CancelError=True

OnErrorGoToErrhandler

允许多选,所有选择的文件名之间用空格分隔,保存在FileName中

monDialogl.Flags=cdlOFNAllowMultiselect

monDialogl.InitDir=IIf(PreviousPath=″o2

Data″,″C:

\WINDOWS″,PreviousPath)

monDialogl.Filter=″3.mpeg|3.mpeg|3.

mpg|3.mpg|3.avi|33.AVI|3.wav|3.WAV|

3.mid|3.MID|3.mp3|3.MP3|3.mov|3.

MOV|3.dat|3.DAT|3.RMI|3.rmi|3.3|3.

3″

monDialogl.MaxFileSize=32767当同时选择许多文件时默认的260放不下,故要大点,这是最大的值

monDialog1.ShowOpen

FName=monDialogl.FileName

下面代码将选择的若干文件名分开,放在数组

SelectFName中

IfInStr(FName,Chr(32))=0Then′若只选择一个文件,FName中没有空格,否则文件名之间用空格分隔,若文件在根日录,则路径形如E:

\,否则形如E:

\abc\123

SelectNum=1

SelectFName(0)=FName

ThePath=Left(Fname,InStrRev(Fname,″\″)

-1)

Else

ThePath=Left(FName,InStr(FName,Chr

(32))-1)+″\″

FName=Mid(Fname,InStr(Fname,Chr(32))+

1)SelectNum=0

J=1

tmp=Space(0)

Fori=1ToLen(FName)

IfMid(FName,i,1)=Chr(32)Then

SelectFName(SelectNum)=ThePath+tmp

SelectNum=SelectNum+1

tmp=Space(0)

Else

tmp=tmp+Mid(FName,i,1)

EndIf

Nexti

SelectFName(SelectNum)=ThePath+tmp

SelectNum=SelectNum+1

EndIf’分隔结束

bol.Clear

Fori=0ToSelectNum-1此循环将选中的文

件显示在组合框中

bol.AddltemMid(SelectFName(i),In2

StrRev(SelectFName(i),″\″)+1)

Nexti

bol.Listlndex=0

NextPlaying=0

Me.Caption=bol.Text

MediaPlayerl.FileName=SelectFName(0)

SaveSetting″MyPlayer″,″PlayMM″,″LastPath″,″

ThePath″

Errhandler:

EndSub

4.5 暂停播放

PrivateSubmand2Click()

Ifmand2.Caption=“暂停”Then

mand2.C

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

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

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

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