摘 要: 本文介绍了一种使用VFP6.0数据表管理多媒体文件和系统侍服器信息,用系统已有侍服器显示多媒体信息,从而达到有效管理多媒体信息的方法。
关键词: 数据库,多媒体,信息管理
随着多媒体技术的发展,每天我们要面对大量各种类型的多媒体信息。怎样高效合理地管理这些多媒体信息日益成为摆在我们面前的问题。多媒体数据库的建设也许是一种最佳的选择。可以通过建立专门的多媒体数据库管理这些信息。
VFP6.0 对多媒体信息的管理提供了强大的支持,例如General 字段,OLE 控件, AxtiveX 控件等,但是对于今天数量日愈增多,类型变化多端的多媒体信息,单用VFP提供的支持来管理这些信息出现越来越多的困难。主要有 1 . 将多媒体信息存储在General 字段中,不但数据库文件的大小会无限膨胀,稍有不慎还会造成多媒体信息的损坏和丢失;2. 维护存储有多媒体信息的数据表文件需要复杂的技术和烦琐的编程;3.新类型的多媒体信息出现时,要纳入即有的多媒体数据库管理往往要修改大量的源程序;4.库中多种多媒体信息的显示是个难题。针对这些问题,在实际运用中我们探索出一种高效、灵活、又能充分利用系统资源的一套管理多媒体信息的方法。
该方法的思路是:1.将原始多媒体信息文件放在专门文件夹或任意文件夹中,用数据库管理这些多媒体文件的基本信息,如类型,文件名称,大小,建立时间等;2.用专门的易于扩充和维护的模型库来管理各类多媒体文件的侍服器,以用于打开、播放或显示文件内容3.建立专门的多媒体文件打开、播放、编辑等功能的组件来显示这些文件(这是关键)。
实现步骤如下:
1.先建立开发路径(Player),在开发路径下建立多媒体文件夹(Media)将要管理的多媒体文件保存在该文件夹中。这些多媒体文件也可在任意文件夹中。
2.建立多媒体文件信息管理表,
多媒体文件名(含路径) |
类型(以后缀标识) |
文件大小 |
文件建立时间 |
MultFile(filename C(40),type C (3),Size C(6),time D(8))。
3. 建立多媒体文件侍服器(播放器)管理表,
类型(以后缀标识) |
侍服器(含路径) |
播放器(不含路径) |
播放控制符 |
Player(ptype C(3),fplayer C(80),pname C(16) , contral C(24))。
4.建立如下两个表单作为多媒体文件打开、播放、显示功能组件:
图1. 多媒体播放组件
说明:该表单是多媒体播放组件的关键部分,表单控件为一个组合框,一个文本框,一个标签,三个按钮和一个系统工具条,分别说明如下。
组合框里显示当前要显示或播放的多媒体文件名称(含路径),下拉列表中显示“多媒体文件信息管理表”所有文件供选择。组合框右侧的“播放”按纽是执行播放功能的,其执行核心代码为 Multplay.PRG。当初次运行该工具,或者组合框为一新多媒体文件类型时,执行播放时,会提示您在“打开文件对话框”中选择合适的媒体播放器,一旦选定,该播放器会被记录到“多媒体文件侍服器(播放器)管理表”中作为该类文件的默认播放器,但可以用后述的“侍服器管理”表单改变默认播放器。
文本框,标签,其余两个按钮和系统工具条组合功能为把磁盘上的各种多媒体文件录入多媒体文件信息管理表。对于保存在开发路径的Media文件夹中的文件只需单击“搜索”按纽,即可一无遗漏且没有重复地录入到库中;对于保存其它文件夹中的文件可以单击系统工具条的“添加”按纽,再单击“选择”按纽,在打开文件对话框中选择录入数据库。
表单及控件的方法代码如表中所示:
对 象 名 称 |
方 法 |
代 码 |
打开多媒体文件表单 |
Load Event 方法 |
IF !USED('Multfile')
USE Multfile in 0 order filename
ENDIF
IF !USED('player')
USE player in 0 order pType
ENDIF |
播放按钮 |
Click Event方法 |
cMuFile = thisform.cFileName
IF !EMPTY(cMuFile)
DO Multplay.PRG with cMuFile
ELSE
WAIT "要播放的多媒体文件名为空,请重新选择!" WINDOW NOWAIT
ENDIF |
搜索按钮 |
Click Event方法 |
cPath=SYS(5)+SYS(2003)+"\Media\"
nFileNum=Adir(aFile,"&cpath*.*")
SELECT Multfile
FOR i = 1 To nFileNum
SEEK cPath+aFile(i,1) IN Multfile ORDER Filename
IF !FOUND()
APPEND BLANK
REPLACE Multfile.Filename WITH cPath + aFile(i,1)
ENDIF
ENDFOR |
选择按钮
|
Click Event方法 |
cFileName=GETFILE()
ThisForm.TxtFielName.Value=cFileName |
其中关键程序 Multplay.PRG 源代码为
PARAMETER lcMciFile
#DEFINE PARA_ERROR "参数太少,需要一项参数,"
#DEFINE BOX_CAPTION "迷你工具"
#DEFINE SELE_PLAYER "请在打开文件对话框中选择合适的媒体播放器!"
#DEFINE NO_PLAYER "您计算机上没有安装此类型的媒体播放器!"
IF PARA()<1
=MESSAGEBOX(prog()+ PARA_ERROR ,0+48+0,BOX_CAPTION)
RETURN
ENDIF
cFileName=lcMciFile
cExtName=UPPER(JUSTEXT(cFileName))
PUBLIC aReturn(2)
IF cExtName$'AVI|MOV|WAV|MPA|MPE|MPEG|MPG|AU|SAND|AIF|AIFC|AIFF|QT|' &&TYPE =MOV
IF FILE('C:\Windows\rundll32.exe ')
run /N1 C:\Windows\rundll32.exe C:\Windows\system\amovie.ocx,RunDll /play /close &cFileName
ENDIF
ELSE
lCheck = wPlayer(cExtName)
IF lCheck = .T.
cPlayer = aReturn(1)
cContr = aReturn(2)
run /N1 &cPlayer &cContr &cFileName
ENDIF
ENDIF
FUNCTION wPlayer
PARAMETER cExtName
nOldArea = SELECT(0)
SELECT player
SEEK UPPER(cExtName) IN player ORDE ptype
IF FOUND()
aReturn(1) = player.fplayer
aReturn(2) = player.contral
IF !FILE(ALLTRIM(aReturn(1)))
cPname = player.pname
=MESSAGEBOX( SELE_PLAYER,0+64+0,BOX_CAPTION)
aReturn(1)=LOCFILE(cPname)
IF EMPTY(aReturn(1))
=MESSAGEBOX(NO_PLAYER,0+64+0,BOX_CAPTION)
lReturn = .F.
ELSE
REPLACE player.fplayer WITH aReturn(1)
lReturn = .T.
ENDIF
ELSE
lReturn = .T.
ENDIF
ELSE
=MESSAGEBOX( SELE_PLAYER,0+64+0,BOX_CAPTION)
aReturn(1)=GETFILE()
IF EMPTY(ALLTRIM(aReturn(1)))
=MESSAGEBOX(NO_PLAYER,0+64+0,BOX_CAPTION)
lReturn = .F.
ELSE
APPEND BLANK
REPLACE pType WITH UPPER(cExtName),fPlayer WITH aReturn(1),pName WITH;
JUSTFNAME(aReturn(1))
lReturn = .T.
ENDIF
ENDIF
RETURN lReturn
ENDFUN
图2. 侍服器管理表单
说明:“侍服器管理”表单用来维护和改变多媒体文件的默认播放器。多媒体文件侍服器(播放器)管理表中记录着任意类型(以文件名中后缀作为类型标识)多媒体文件的认播放器(含路径)。本文所述多媒体播放的基本思路是对任意类型的多媒体文件,从文件名中取出后缀部分,到“多媒体文件侍服器(播放器)管理表”同“类型”对比,找到相应的播放器进行播放。一种类型的多媒体文件可能有多种播放器,有时可能需要不断变换播放器,“改变侍服器”按纽就是用来完成改变任务的。
表单及控件的方法代码如表中所示:
对 象 名 称 |
方 法 |
代 码 |
侍服器管理表单 |
Load Events
方法 |
IF !USED('player')
USE player in 0 order pType
ENDIF |
改变侍服器按钮 |
Click Events
方法 |
=MESSAGEBOX("请在打开文件对话框中选择用来替换的媒体播放器!",0+64+0,"迷你工具")
cMultPlayer=GETFILE()
IF EMPTY(ALLTRIM(cMultPlayer))
=MESSAGEBOX(“您计算机上没有安装此类型的媒体播放器”,0+64+0,"迷你工具")
ELSE
REPLACE fPlayer WITH cMultPlayer, pName WITH:
JUSTFNAME(cMultPlayer)
ENDIF |
本文所述多媒体信息管理方法,是要充分发挥数据库管理信息的功能和计算机所有已安装的软件资源的功能,数据库中不直接存储多媒体信息,也不要求开发专门的多媒体播放软件,而是用数据库管理多媒体文件和计算机上现有的文件侍服器,用程序在两者间搭起桥梁。所以除了数据库知识,还要了解一些文件侍服器的知识,关于文件侍服器详请参阅有关资料,这里只简单举例介绍如何正确选择本方法中要用的多媒体播放器。例如对于DOC文件,要找系统中已有的侍服器,可在 WINDOWS资源管理器菜单中选中“查看”单击“文件夹选项”,再选择“文件类型”页框,上面可以看到所有在WINDOWS系统注册的文件类型及其侍服器,找到后缀为DOC的文件类型为Microsoft Word文档,选中按“编辑”,在“编辑文件类型”对话框中的“操作”,单击“编辑”, 在打开的“编辑这种类型操作”对话框中找到“用于执行操作的应用程序”"D:\Microsoft Office\Office\WINWORD.EXE" 即该类文件的一种侍服器。其后的 /n是控制符。
该方法在VFP6.0上实现,所有程序均调试通过,管理多媒体信息直观方便。
|