第 5章 多媒体节目开发工具
? 多媒体节目开发环境
? 多媒体创作工具
? 多媒体功能卡开发工具
? WINDOWS多媒体开发环境
5.1 多媒体节目开发环境
? 多媒体开发环境 包括图形开发工具、触摸屏
开发工具、音频开发工具、图像开发工具等
和各种创作系统 。
? 多媒体开发和创作环境一般具有下述功能,
(1)提供编程的环境;
(2)超文本、超媒体和多媒体数据管理的功能
(3)支持多媒体数据的输入输出;
(4)应用连接功能;
(5)数据和动画制作功能;
(6)友好的用户界面 。
5.2 多媒体编著工具
? 多媒体创作工具 (或称编著工具 )是一种高级的软
件程序或命令集合。
? 创作工具旨在提供给设计者一个自动产生多媒体
节目的综合环境,使设计者可将不同的内容与各
种功能结合在一起,形成一个结构完整的节目。
? 多媒体创作工具通常应包括制作、编辑、输入输
出各种形式的数据,以及将各种数据组合成为一
个连续性序列的基本工作环境 。
多媒体编著(创作)工具分类,
(1) 以卡或页为基础的创作工具;
(2) 以图符为基础,基于事件的创作工具;
(3) 以时间为基础的创作工具;
(4) 以传统程序语言为基础的创作工具;
(5) 其他专用的创作工具。
5.2.1 多媒体编著的功能和分类
5.2.2 以卡或页为基础的多媒体编著工具
? 大多数以卡或页为基础的创作工具提供一种可
以将对象连接于卡或页的环境。
? 一页或一张卡便是数据结构中的一个节点,它
类似于书的一页或数据袋里一张卡片。
? 这种页或卡片上的数据比书上的一页或数据袋
里一张卡片的数据更多样化。
? 在卡或页上的图符很容易理解和使用
? 以 Asymetrix公司开发的 ToolBook为例介绍这类
软件。
1,ToolBook简介
? ToolBook是一个面向对象开发环境
? 提供一种面向对象的程序设计语言 OPENSCRIPT。
? 从使用观点来看, ToolBook分两个层次:读者和作
者 。 在读者层次用户可以执行该书, 阅览其内容 。
在作者层次上, 设计者可以使用命令来编写新的书 。
? ToolBook采用 Windows用户接口。也采用下拉菜单、
图符驱动、放弃和剪贴板功能、综合帮助功能,设
置操作约定。
? ToolBook支持大量流行的文件格式,方便数据交换。
2,设计编程制作一体化环境
? ToolBook具有把图形、文字、数字视频图像、声音
及动画集成为一个交互式节目的能力。
? 它提供了高级脚本语言 OPENSCRIPT,配置了许多
命令去播放各种类型的媒体,管理各种数据以便改
变对象的性质。
? 擅长于制作把其他 Windows应用软件集成在一起的
多媒体节目,还可在媒体单元之间建立链接关系。
? ToolBook的书形隐喻符很容易使人理解,因此它缩
短了用户开发节目之前学习创作工具的时间。
3.节目设计思想
? ToolBook按书的结构组织应用程序 。
? ToolBook电子书的每屏被描述为一页, 每页内可有
多级的对象, 它们分为背景和前景, 其中背景的设
置是满足用户要将生成的一系列页共享一些通用元
素的要求, 如一幅图像或像 NEXT,QUIT这样的命
令按钮 。
? 开发电子书的过程是:在屏幕上画出各种各样的对
象,然后生成潜在的“脚本”,它在一给定对象以
某种方式被选中或触发时,引发一个或多个结果。
这些脚本事实上是用 OPENSCRIPT语言写的小段程
序 。
4.编程特点
脚本特点综述如下,
(1)脚本是一系列 OPENSCRIPT语句或指令,它们告诉对象
要做些什么。
(2)脚本可分为一些处理单元,它们描述特定文件出现时,
如读者触发按钮或按某个键,将会发生的事件。
(3)脚本可以控制对象也可以控制信息。
(4)页面上对象如字段、按钮以及图形的脚本往往对该页面
或者同一本书中的一个页面发生影响。
(5)书、页面以及背景和页面上的对象一样也可以有脚本。
5.2.3 基于 图符和事件的编著工具
? 基于图符的创作工具提供可视化的程序设计环境。
? 在设计之初须先用其他软件来制作各种元素。
? 然后在此系统中建立一个流程图,在流程图当中可
以包括起始事件、分支、处理及结束等各种图符。
? 设计者可依流程图将适当的对象从所谓的图符库按
下拉至工作区内。这些图符可以包括菜单条的选项、
图形、图像、声音及运算等。
? 这个流程图也是事先安排的次序,同时也表示整个
节目的逻辑蓝图。
? 这类创作工具最典型是 Authorware。
Authorware功能特点
? Authorware是一个交互式多媒体节目创作工具,它
使用图符设计流程图,无需编程,非常方便使用。
? Authorware可以用流程图来当作导航图, 设计者只
要将图符用鼠标按下拉至流程图的某个位置上,便
可以使每一个环节相互连接。
? 变量可以互相传输参数。 Authorware提供了 200个以
上的系统变量及功能来决定属性、数据抓取、对象
处理及显示等工作,甚至控制作业流程的分支,跳
画面及循环等效果。
? Authorware 最大特点是使用 15个图符组成的界面 。
图 5.1 Authorware6.0的图符
5.2.4 以时间为基础的多媒体 编著工具
? 是常见的一种多媒体编辑系统,常用于制作电影
与卡通片的节目。
? 它们大多是以时间轴来决定事件的顺序与对象显
示上演的时段。
? 这种时间关系可以许多频道形式出现,以便安排
多种对象同时呈现。
? 在这类系统中都会有一个控制播出的控制面板,
它很像录音机、录放像机的控制板,含有倒带、
倒退、停止、演出及快进等按钮。
? 如 Action!
Action!
? 由 Macro Media公司所发行,可在 Windows与
Macintosh下执行的多媒体编辑创作工具。
? 结合了动作、声音、文字、图形、动画多媒体
显示环境,使用时间轴来组织其元素。
? 使用时间轴及控制面板来组织一个场景。
? 有一个内容表可以显示出一节目的全部场景,
以及每一个场景当中的全部对象。
? 另有一个场景排序器可显示出节目中某一场景
的全貌、场景各称及其连接的模板,也显示出
每一个场景最后的状态及场景之间的声响等。
5.2.5 传统程序语言为基础的编著工具
? 精通编程的程序员对于多媒体编辑创作系统的限
制及依赖工具箱产生对象的方式较不容易接受。
? 因此,一方面保留传统语言的特性,另一方面改
进其程序设计环境成为可视化的操作系统。
? 这样程序员既可以用传统的语言来编写程序又可
方便地使用媒体开发工具箱,使这些工具箱内的
编码可以直接被采用成为重用的编码 。
? Visual BASIC 。
? Visual C++ 。
1.Visual BASIC
? Microsoft推出在 Windows环境下开发的程序语言,也是多媒
体编著软件。
? VB提供各式的图形界面。
? VB是基于事件的语言,程序的行为附着于对象,等到对象
被调用或被用户引发时才被执行。
? VB提供给鼠标与键盘双重的输入管道。同时也可摄取剪辑
板,动态数据交换及对象连接与嵌入等设备,并通过 MCI使
音响、影片、动画等均可融入其中。
? 它还可将数据文件引进来使用,在完成一个多媒体产品后,
可以将它制作成为一个可以直接执行的 EXE文件而成为单
独的一个应用程序。
2.Visual C++
? Visual C++是 Microsoft所推出多媒体程序设计软件,
它与 Visual BASIC很相似 。
? Visual C++的工具包括有 Visual Workbench,AppStudio、
AppWizard,ClassWizard等模块。
? 设计 VC程序的方法是先利用 Visual Workbench及
AppStudio来产生或编辑新的资源,接着利用
ClassWizard来产生类,最后将这些资源在 AppWizard
中组织起来通过 Build来完成构造一套新的应用节目或
多媒体的节目。
5.3 多媒体功能卡开发工具
本节着重讨论音频卡和视频卡这两种功能
卡的编程开发工具。
5.3.1 Sound Blaster编程工具
? Creative为了方便第三方软件开发人员或用户
的开发, 提供了 Sound Blaster开发工具包 SBK。
? SBK提供了一组反映 Sound Blaster功能的库函
数,在 DOS环境下,用户可根据需要用高级语
言来调用这些函数。
? SBK没有提供 Windows下进行软件开发的动态
连接库,如需开发 Windows下的声音软件,可
使用 Windows MDK。
1.SBK的功能
(1) 语音输入输出。
(2) FM音乐输出 。
(3) 由文本生成语音。
(4) MIDI输入和输出。
(5) 混音器控制。
(6)CD-ROM驱动器的声音接口。
2.编程实例 — 播放 CMF音乐文件示例
Sound Blaster播放 CMF音乐文件过程是,
(1) 检测 Sound Blaster语音板;
(2) 打开一个,CMF文件;
(3) 初始化音乐驱动;
(4) 读取 CMF音乐文件首引区,设定音乐演奏速度;
(5) 读取 CMF音乐文件乐器区段偏移地址及乐器栏内使用乐
器数量;
(6) 读取 CMF音乐文件音乐段偏移地址,由语音板输出音乐;
(7) 监测音乐输出过程;
(8) 可以使用暂停、继续、中止函数来控制音乐输出;
(9) 音乐输出结束,重设驱动状态。
5.3.2 Video Blaster编程工具
? Creative公司为了便于其 Video Blaster功能卡
的使用,推出了 VBK。
? 这个工具包是所有多媒体软件开发人员使用
Video Blaster数字图像捕获及覆盖特性进行软
件开发的有力工具。
? VBK提供了 3个开发接口,
? DOS驱动编程接口。
? Windows动态链接库编程接口。
? MCI编程接口。
1,DOS驱动编程 接口
? 该接口通过使用 DOS驱动程序 VBLSTDRV.COM提
供功能支持。
? API功能包括,
(1)取得 VBLSTDRV的版本号、初始化驱动程序、结束驱动
程序、获得 I/O地址、中断向量号等系统参数。
(2)设置逻辑窗口范围和位置。
(3)对显示窗口进行缩放、漫游等操作。
(4)修改输入信号的彩色系统、显示状态、坐标等。
2,Windows动态链接库编程接口
? VBK为在 Windows环境下对 Video Blaster
进行程序开发的用户,提供了一个动态链
接库 PCVIDEO.DLL。
? PCVIDEO.DLL输出的函数覆盖了所有
VBLSTDRV的 API功能 。
3,MCI编程接口
? VBK为 Windows3.1的多媒体 MCI程序设计的用
户提供 MCI混叠驱动程序 MCIVBLST.DRV,
其混叠命令集提供了显示混叠视频的一般方法。
? MCIVBLST中的 MCI命令所提供的功能也覆盖
了 PCVIDEO.DLL动态链接库的大部分功能,
应用程序不必在 DLL级上编程就可以处理活动
视频信号。
5.4 Windows多媒体开发环境
5.4.1 媒体控制接口 (MCI)
? MCI在控制音频、视频等设备方面,提供了与
设备无关的 API接口。
? 用户应用程序可使用 MCI控制标准多媒体设备
? 不同设备其驱动控制方式不同,
一些 MCI设备驱动程序 (影碟机 )直接控制目标设备;
一些 MCI设备驱动程序 (MIDI函数 )可使用 MMSYSTEM
函数间接控制目标设备;
还有一些 MCI设备驱动程序 (影片演播器 )则提供了与其
他 Windows DLL的高层接口。
? 应用程序通过设备的类型来区分设备 。
? 如果要通过 MCI去控制设备,必须将相应的 MCI驱
动程序和设备的驱动程序,DLL(如果需要 )装入。
? MCI驱动程序的安装可通过 Windows中的控制面
板来完成。在 Windows中 SYSTEM.INI文件中的
〔 mci〕 部分包括了一个已安装了的设备类型表 。
MCI接口分类
Windows采用两种 MCI接口,
? 一是使用命令消息接口函数,直接控制 MCI设
备;
? 二是使用命令字符串接口函数,基于文本接口
或命令脚本来控制 MCI设备。
不同之处在于它们基本命令结构及其发送消息到
设备的原理不同。
? 命令消息接口使用消息控制 MCI设备;
? 命令字符串接口使用文本命令控制 MCI设备。
表 5.1 MCI设备类型
设备类型 描 述
cdaudio
dat
digitalvideo
mmmovie
other
overlay
scanner
vcr
videodisc
waveaudio
激光唱机,CD-ROM
数字化磁带音频播放机
窗口中的数字视频 (非基于 GUI)
多媒体影片演播器
未定义的 MCI设备
叠加设备 (窗口中的模拟视频 )
图像扫描仪
磁带录相机或播放机
影碟机
播放数字化波形文件的音频设备
表 5.2 Windows提供的 MCI设备驱动程序
设备类型 设备驱动程序名 描 述
cdaudio
mmmovie
sequencer
videodisc
waveaudio
MCICDA.DRV
MCIMMP.DRV
MCISEQ.DRV
MCIPIONR.DRV
MCIWAVE.DRV
一个播放光盘音频的 MCI设备驱
动程序
一个播放多媒体影片文件的 MCI
设备驱动程序
一个播放 MIDI音频文件的 MCI设
备驱动程序
一个播放先锋 LD-V4200影碟机文
件的 MCI设备驱动程序
一个播放和记录波形音频文件的
MCI设备驱动程序
表 5.3 Microsoft其他 MCI设备驱动程序
设备驱动程序名 描 述
MCIAAP.DRV
MCIAVK.DRV
MCIAVI.DRV
一个播放 FLI,FLC的三维动
画文件的 MCI设备驱动程序
一个播放 DVI的 AVK动态视频
文件的 MCI设备驱动程序
一个播放 AVI动态视频文件的
MCI设备驱动程序
5.4.2 命令消息接口
使用命令消息接口发送 MCI命令 3个函数,
? MciSendCommand 发送一个命令消息到一个
MCI设备;
? MciGetDeviceID 当打开一个设备时,返回这
个设备的 ID号;
? MciGetErrorString 返回对应于一个错误代码
的字符串。
? 发送命令消息 MciSendCommand函数定义,
DWORD MciSendCommand(WORD DeviceID,WORD
Message,DWORD Param1,DWORD Param2)
其中,DeviceID标识一个 MCI设备;
Message 标识要发出的消息,如 MCI-OPEN等;
Param1 为消息指定标志;
Param2 为指定一个指向消息数据结构的指针。
该函数调用如果成功返回 0,否则返回一个错误代码,
MciGetErrorString 可获得对这个错误的文本描述。
1.发送命令消息
? MCI命令消息分类,
直接由 MCI解释的命令;
由所有的 MCI设备所支持的命令;
基本命令;
扩展命令。
? 对于不同的设备类型,MCI使用一组不同的扩展
命令控制此类设备特殊性能,
2,MCI命令消息分类
第一组是 MCI元素文件操作扩展命令组,包括
MCI_COPY,MCI_CUT,MCI_DELETE,
MCI_PASTE,一般具有编辑 MCI数据能力的设备支
持;
第二组是 MCI设备操作及定位扩展命令组,包括
MCI_CUE,MCI_ESCAPE,MCI_SEEK,
MCI_STEP;
第三组是窗口或视频设备的扩展命令组,包括
MCI_FREEZE,MCI_PUT,MCI_REALIZE,
MCI_UNFREEZE,MCI_UPDATE,MCI_WHERE,
MCI_WINDOW。
表 5.4 直接由 MCI解释的命令
消 息 描 述
MCI-SYSINFO
MCI-BREAK
MCI-SOUND
返回有关 MCI设备的信息
为指定的 MCI设备设置一个中止键
播放一段在 WIN.INI文件中的
〔 Sounds〕 部分所指定的系统声音
表 5.5 所有的 MCI设备支持的命令消息
消 息 描 述
MCI-CLOSE
MCI-GETDEVCAPS
MCI-INFO
MCI-OPEN
MCI-STATUS
关闭一个 MCI设备
获得一个 MCI设备的性能
从一个 MCI设备中得到有关的信息
初始化一个 MCI设备
从一个 MCI设备返回有关的状态信

表 5.6 基本命令消息
消 息 描 述
MCI_LOAD
MCI_PAUSE
MCI_PLAY
MCI_RECORD
MCI_RESUME
MCI_SAVE
MCI_SEEK
MCI_SET
MCI_STATUS
MCI_STOP
从一个磁盘文件加载数据
暂停播放或记录
开始传送输出数据
开始传送输入数据
重新开始播放或记录
将数据存储到磁盘文件中
向前或向后检索
设置设备信息
从一个 MCI设备返回有关的状态信息
停止播放或记录
3.打开一个设备
? 使用设备之前, 必须使用 MCI_OPEN命令消息来初
始化该设备
? 打开 MCI设备的方法有以下几种,
(1)用设备类型字符串指定待打开的 MCI设备
(2)用 MCI设备驱动程序名指定待打开的 MCI设备
(3)用设备类型常数 (见下表 )指定待打开的 MCI设备
(4)仅用设备元素指定打开的复合设备
表 5.7 设备类型及常数
设备类型 常 数
animation
cdaudio
dat
digitalvideo
other
overlay
scanner
vcr
sequencer
videodisc
waveaudio
MCI_DEVTYPE_ANIMATION
MCI_DEVTYPE_CD_AUDIO
MCI_DEVTYPE_DAT
MCI_DEVTYPE_DIGITAL_VIDEO
MCI_DEVTYPE_OTHER
MCI_DEVTYPE_OVERLAY
MCI_DEVTYPE_SCANNER
MCI_DEVTYPE_VIDEOTAPE
MCI_DEVTYPE_SEQUENCER
MCI_DEVTYPE_VIDEODISC
MCI_DEVTYPE_WAVEFORM_AUDIO
4.关闭一个设备
? MCI_CLOSE命令消息取消对一个设备或者设
备元素的访问,它类似于一个文件的关闭操作。
? 为了有助 MCI管理设备,应用程序在它使用完
这个设备之后,应该明确地关闭它所使用过的
每一个设备或者设备元素 。
5.4.3 命令字符串接口
使用命令字符串接口 3个函数,
? MciSendString向一个 MCI设备驱动程序发送一个命
令字符串。这个函数同时也具有对于回调函数和返
回字符串的参数。
? MciGetErrorString返回一个同错误代码相对应的错
误字符串。
? MciExecute向一个 MCI设备驱动程序发送一个命令
字符串。
? 发送命令字符串 MciSendString函数的语法定义如下,
WORD FAR PASCAL MciSendString(LpstrCommand,
LpstrRtnstring,WORD Rtnlength,hcallBack)
指针 LpstrCommand 指向一个以 NULL结尾的 MCI控制命
令的字符串。这个字符串的形式如,
Command device_name arguments
指针 LpstrRtnstring指向一个由应用程序提供的返回字符
串缓冲区 。 Rtnlength是缓冲区大小,
句柄 hcallBack用来指定接收并处理 MCI向应用程序发出
的 MM_MCINOTIFY消息的窗口句柄 。
使用 MciExecute发送命令字符串
? MciExcute函数是 MciSendString的简化形式。
其语法定义如下,
BOOL MciExecute(Lpstr Command)
LpstrCommand是一个指向以 NULL结束的控制命令的
字符串,字符格式同 MciSendString。 若函数调用成功
返回 TRUE,否则返回 FALSE。
MciGetErrorString函数返回一个 MCI错误代码的
文本描述字符串,其语法如下,
WORD MciGetErrorString(DWORD Error,LpstrBuffer,
WORD Length)
Error是错误代码,是上一次 MciSendCommand或
MciSendString函数调用的返回值;
LpstrBuffer指向一个缓冲区指针,用来接收系统返回
的文本描述;
Length指定 LpstrBuffer的长度。函数调用成功返回
TRUE,否则表示查询的错误代码未知。
5.4.4 编程实例
? Windows多媒体开发环境下利用 MCI编程播
放音频和视频文件的综合例子。
? 具体程序见 P158-165。
本章小结
? 首先对常用的多媒体创作工具进行了分类,并以
典型的软件为例介绍了它们各自的功能特点 ;
? 介绍多媒体功能卡开发工具,主要介绍了声霸卡
开发工具 SBK和视霸卡开发工具 VBK;
? 最后介绍了 Windows多媒体开发环境,着重介绍
MCI的概念和使用方法,并给出了一个综合例子 ;
? 希望通过本章的介绍对读者开展多媒体应用有所
帮助。