基于Visual FoxPro的多媒体数据快速处理技术

时间:2022-05-16 07:08:18

基于Visual FoxPro的多媒体数据快速处理技术

摘要:实现了基于VFP的非OLE方式多媒体数据快速处理,提出了一种简化数据库管理,节省了大量存储空间,且编程简单,快速的多媒体信息处理技术。

关键词:VFP;OLE;多媒体数据快速处理

中图分类号:TP391.41文献标识码:A文章编号:1009-3044(2008)25-1545-02

Fast Disposal Technology of Datas in Media Based on VFP

WANG Shuo1, WU Hui2

(1. Hebei Transportation College, Shijiazhuang 050091, China; 2. Shijiazhuang Information Engineering Vocational College, Shijiazhuang 050091, China)

Abstract: The paper introduced the technology of not using OLE in Visual FoxPro(VFP) to realize the fast disposal of multimedia data. It not only predigested the database management, saved the space for multimedia information. But the technology is very easy to be programmed and realized.

Key words: VFP; OLE; Fast Data Disposal Technology In Multimedia

1 VFP与OLE技术

Visual FoxPro(以下简称VFP)是一种高级数据库应用程序开发系统,可利用OLE技术实现对象的链接与嵌入。为此 VFP在定义数据库(表)的过程中,提供了General字段,用以将各种媒体对象放入数据库中。并可用APPEND、MODIFY命令或系统菜单对数据库中的各种媒体对象进行输入、输出和编辑等操作。虽然VFP提供的OLE编程方式简单快捷,但在实际运行VFP程序的过程中,发现使用OLE方式处理多媒体数据运行效果并不理想,其原因在于:

1.1 重复占用磁盘空间

在进行多媒体数据入库操作后,发现备注文件(.FPT)的生成长度略大于原文件(.BMP、.WAV、.AVI)长度,且有些操作不能删除原文件,造成重复占用磁盘使用空间。

1.2 运行速度慢

在VFP中利用OLE方法处理多媒体数据,访问磁盘的次数明显增加。由于频繁地读取磁盘数据,使得用户操作有明显的等待时间。

2 VFP中多媒体程序的设计与实现

为简化多媒体数据的管理,提高多媒体信息的输出速度,笔者对VFP中多媒体信息处功能、外部应用程序接口、Windows 的多媒体动态链接库进行了充分的研究,终于找到一种简单有效的实现方法。

首先建立一多媒体数据库PLAY. DBF, 设有三个字符型字段:BMPFILE、WAVFILE、AVIFILE,分别用于存放图片文件名(.BMP )、声音文件名(.WAV)和视频文件名(.AVI)。

2.1 实现数字视频文件的快速播放

虽然VFP处理视频文件的功能较弱,但作为VFP运行基础的Windows系统却提供了上百个具有多媒体处理能力的API函数,并统一由多媒体动态链接库提供给开发者使用。多媒体动态链接库所在目录及库名,在不同的系统中略有不同,在Windows 3.2和Windows 95中,为\WINDOWS\SYSTEM\MMSYSTEM.DLL,在Windows NT中,则为\WINDOWS\SYSTEM32\WINMM.DLL。

在VFP中,为调用多媒体动态链接库中的API函数,提供了一个外部应用程序接口库文件FOXTOOLS. FLL。其中有两个重要的函数:REGFN()和CALLFN()。前者用来寄存驻留在WINDOWS的动态链接库中的API函数及其参数。后者则用以调用执行 Windows 的 API 函数。调用格式:REGFN("函数名","传给函数的参数类型、数量","函数返回值的数据类型","DLL库名")

返回参数:调用成功REGFN()返回一个数值,否则返回-1。

CALLFN ((REGFN()的返回值,参数1,参数2...)

注意:

(1)在CALLFN()中说明的参数数目、类型必须与在REGFN()中指定的参数相符,否则调用失败。

(2)在VFP5.0中,针对32位系统提供了调用REGFN32()。

(3)对regfn()和callfn() 中双引号内的字符串应注意大小写的混合写法,否则可能会引起执行错误。

例:本例仅给出视频操作部分的程序代码,省略了其它相关部分的程序代码。

(1)FORM.INIT事件中的程序代码:

set library to HOME()+foxtools.fll ADDITIVE

public playfavi

playfavi=regfn("MCISendString","CCII","I","MMSYSTEM")

(2)OPEN.CLICK(打开视频文件操作)程序代码:

avifname=play.avifile

callfn(playfavi,"Open &avifname alias AVI Type AVIVideo","",0,0)

callfn (playfavi,"put AVI window at 160 100 320 240","",0,0)

thisform.Refresh()

说明:160,100为窗口左上角坐标,320,240为窗口大小,也可用坐标变量的方式确定视频播放窗口的位置及大小。

(3)PLAY.CLICK(播放AVI文件操作)程序代码:

callfn(playfavi,"Play AVI","",0,0)

(4)TOP.CLICK(回到片头操作,即影片的第一帧)程序代码:

callfn (playfavi,"SEEK AVI TO START","",0,0)

(5)END.CLICK(转到片尾操作,即影片的最后一帧)程序代码:

callfn(playfavi,"SEEK AVI TO END","",0,0)

(6)CONFIG.CLICK(显示视频处理配置操作)程序代码:

callfn (playfavi,"configure avi ","",0,0)

(7)CLOSE.CLICK(关闭视频文件操作)程序代码:

callfn(playfavi,"close AVI","",0,0)

2.2 声音文件的处理技巧

VFP处理声音文件的方式除OLE外,还可用编程方法控制播放.WAV文件具体方法:

SET BELL TO PLAY.WAVFILE,WAV

CHR(7)

用此方法处理声音文件虽然快捷简单,但无法通过键盘或鼠标中断WAV文件的播放。为解决此问题,笔者事先用WINDOWS的RECORDER录制一个了“静音文件”SILENCE.WAV, 即没有任何声音的声音文件,同时在表单中设置“停止播放”的命令按钮,其CLICK代码段为:

SET BELL TO "SILENCE.WAV",WAV

CHR(7)

操作者可通过“停止播放”按钮中断声音的播放。

2.3 图片文件的快速处理

快速方法:充分利用VFP引入的图形控件及其PICTURE属性。

程序处理过程:

(1)建立表单FORM,放入图形控件IMAGE1,添加PLAY.DBF至表单的数据环境,并将图形控件IMAGE1的属性设置如下:

(2)程序清单:

THISFORM.IMAGE1.PICTURE=PLAY.BMPFILE

THISFORM.REFRESH()

该程序在运行过程中,随着数据库指针的移动,图形控件IMAGE1将随之实现图片的快速刷新显示。

3 结束语

采用以上方法(非OLE方式)处理多媒体数据不仅能简化数据库管理(仅对各种媒体的文件名进行管理即可),节省了大量的存储空间,还可以提高多媒体信息的处理速度,并且编程简单,易于实现。

参考文献:

[1] 杨佩理.VFP编程技术及数据库应用教程[M].北京:中国电力出版社,2002:23-56.

[2] 张龙祥.数据库原理与设计[M].北京:人民邮电出版社,2002:50-62.

[3] 王家文,曹宇.图形图像处理[M].北京:国防工业出版社,2004:78-90.

上一篇:把WinXP优化得健步如飞 下一篇:粗糙集理论在在线互动式UPS中的应用