APP下载

基于Authorware实现WMV数字视频的播放控制

2016-06-16刘智浓张永利童子方

电脑知识与技术 2016年10期
关键词:数字视频

刘智浓+张永利+童子方

摘要:WMV作为微软主推的一种流媒体数字视频文件压缩格式,在模拟仿真、虚拟现实和CAI等多媒体技术领域得到广泛的应用。实例设计表明,在Authorware中通过设置ActiveX控件Windows Media Player的属性,响应控件事件或调用控件方法等方式,在保证视频播放流畅性和程序运行稳定性的同时,可实现WMV数字视频的个性化播放控制。

关键词:ActiveX控件;Authorware; WMV;数字视频;Windows Media Player

中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2016)10-0216-04

Abstract:WMV, regarded as one of the Microsoft Corporation's recommended products, is a sort of file compression format in streaming media digital video. It's been widely using in simulation, virtual reality, CAI and other multimedia technology. Case design shows that in Authorware, with the controls of Windows Media Player based on ActiveX control, we can make the WMV digital video playing personalized become true as well make the video playing smoothly and the programs running steadily by setting control properties.

Key words: ActiveX control; Authorware; WMV; digital video; Windows Media Player

1 概述

在模拟仿真、虚拟现实和CAI等领域的多媒体技术应用中,为达到生动、形象和逼真的效果,会大量使用录像、三维动画等视频文件,为保证系统运行的实时性和流畅性,需要根据系统开发平台和应用环境,对视频文件的压缩格式进行选择。笔者在基于Authorware软件开发某飞机的虚拟教学训练系统时,通过播放效果、文件容量大小和系统兼容性等方面的综合比较和实验,最后选择了WMV格式作为系统视频文件的压缩格式,并基于ActiveX控件Windows Media Player(简称WMP)实现了WMV数字视频文件的个性化播放控制。

2 WMV数字视频的特点

WMV它的英文全称为Windows Media Video,是微软推出的一种采用独立编码方式并且可以直接在网上实时观看的数字视频文件的压缩格式。它的主要优点包括:支持本地或网络回放、可扩充的媒体类型、多语言支持、流的优先级化以及扩展性等等。特别是在同等视频质量下,WMV格式的文件体积非常小,很适合在网上播放和传输。而且作为微软主推的标准视频格式,在windows平台的应用无需外部插件的支持。虽然Authorware软件数字电影图标不支持WMV格式的视频文件,但可以通过ActiveX控件WMP来实现WMV格式视频文件的播放和控制。使用WMP控件播放WMV格式的视频文件时,既可以使用控件内嵌的播放器来实现暂停、音量、快进等标准播放控制。也可以通过设置控件的属性,响应控件事件或调用控件方法等方式,来实现个性化的播放控制,增强系统人机交互功能[1] [2]。

3 Windows Media Player控件在Authorware中的使用方法

ActiveX控件是一种可重用的软件组件,是一种嵌入式共享程序数据的编程技术。Authorware是Macromedia公司推出的功能强大的多媒体创作工具,它为创作者提供了一个基于流程图和设计图标的开发环境,具备多媒体素材的集成能力和超强的交互控制能力。Authorware从4.0版本开始支持ActiveX控件技术,并提供ActiveX Xtra函数来实现ActiveX控件属性的设置或获取、控件方法的调用以及控件事件的捕获等功能,在增强多媒体应用程序功能的同时,扩充了多媒体应用程序可以处理的数据种类[3]。

3.1插入控件

在Authorware中使用某种ActiveX控件之前,必须保证该ActiveX控件在系统中进行了注册。在Authorware中通常使用两种方法对ActiveX控件进行注册。一种是动态注册,需通过在ActiveX控件属性对话框中输入控件的URL和版本号,如果设置正确,当程序执行到包含该ActiveX控件对象的【Sprite】设计图标时,会自动下载并向系统注册ActiveX控件。另一种是函数注册,Authorware提供了一系列函数用于ActiveX控件的注册,如ActiveXControlRegister("FILENAME")函数,注册文件名为“FILENAME”的ActiveX控件,成功则返回一1,否则返回0。由于微软自Windwos XP开始把Windows Media Player作为系统内置的媒体播放器,所以只要微机操作系统的版本高于Windwos XP,就已保证了WMP控件在系统中进行了注册[4]。

以Authorware7.0为例,介绍插入WMP控件的步骤。首先在流程线上您想要插入控件图标的位置处单击,然后在系统菜单上,选择“插入”→“控件”→“ActiveX”,在弹出的“Select ActiveX Control”对话框中,选择Windows Media Player后,单击“OK”按钮,弹出“ActiveX Control Properties”(ActiveX控件属性)对话框,如图1所示,在对控件的各属性值进行设置后,单击“OK”按钮,在流程线上出现一个ActiveX...图标,即完成WMP控件的插入。

1.2 设置控件属性

属性是ActiveX控件的数据,它决定了ActiveX控件对象的特征。大多数属性用于描述控件的外观,如颜色、字体等。另外一些属性则用于描述控件的状态,如有的控件具有Enable属性,当将该属性设置为False时,则该控件对象就被禁用。WMP控件常用的属性如表1所示:

在Authorware中设置控件对象属性办法有两种。一种是直接在控件属性对话框中修改控件的属性,另一种方法是通过函数调用来设置ActiveX控件的属性,这种方法在编程时使用较多。函数格式如下:

GetSpriteProperty(@"SpriteIconTitle", #property) //读取控件对象的属性值

SetSpriteProperty(@"SpriteIconTitle",#property, value) //设置控件对象的属性值

其中参数SpriteIconTitle为ActiveX控件图标的名称,property为该控件对象的某个属性,value为该属性的值。

3.3调用控件方法

方法是ActiveX控件对数据的操作。对于一个控件对象,可以通过调用该对象的方法来完成某些特定的功能,比如对控件对象的状态进行修改等等。ActiveX控件属性对话框中的【Methods】选项列出了控件的全部方法,以及该方法的参数和返回值。

在Authorware中对ActiveX控件方法的调用一般是在程序中通过函数来实现的。函数语法格式如下:

CallSprite(@"SpriteIconTitle",#method[,argument…])

其中参数SpriteIconTitle为ActiveX控件图标的名称,method[,argument…]为要执行的ActiveX控件的方法及其参数,如果没有参数,则argument可以省略。需要强调的一点是,从Authorware 6.0开始为增强了与ActiveX控件的通信手段,在控件属性对话框中增加了CallString方法,该方法提供了一个使Authorware应用程序可以访问ActiveX控件所有属性与方法的手段。CallString方法以一个字符串作为参数,在该字符串中,方法或属性以“.”连接,并可将一次调用的返回值作为参数传递给下一次的调用。

通过设置和调用WMP控件的CallString方法的[controls]属性和[settings]属性,可实现WMV格式视频的播放控制。其中的controls属性可实现播放、暂停、快进、上一曲等控制,settings属性可设定播放次数、是否静音、播放速度和音量等播放属性。常用的属性如表2所示[5]:

3.4响应控件事件

事件是可以被控件识别的操作,ActiveX控件不仅具有对事件做出反应的能力,还可以向外发送相应的消息。ActiveX控件由这项机制通知应用程序在ActiveX控件中发生的事件,比如属性参数的改变,用户按下鼠标左键等等。

在Authorware中是通过事件交互来实现控件事件的响应,即利用交互方式中事件响应方式来对控件对象发送的消息进行捕获和处理。具体步骤如下:首先在流程线上放置一个交互图标,在其右侧放置一个群组图标,将交互类型设置为"事件";然后在该事件的属性对话框的“事件”选项中的“发送”窗口双击需相应的控件图标(事件发送者),直到它前面出现"x";最后在“事”窗口的列表中找到相应的事件双击,直到它前面出现"x"即可。图2为响应图标名字为“视频”的WMP控件的鼠标单击(Click)事件的程序流程和事件交互属性设置的示意图。

这样,当程序运行时,如果在“视频”图标的控件上单击鼠标时,就会触发控件的”Click”事件,“事件响应”交互图标就会捕获此事件,并进入”单击事件”群组图标执行该事件的响应处理程序。

4 应用实例

本实例为某飞机虚拟训练系统,采用3DMAX制作了大量的三维动画来表现虚拟仿真操作。虽然3DMAX输出的avi格式的动画文件,是Authorware软件内部支持的标准视频格式,可以使用“数字化电影”图标进行播放控制。但是由于3DMAX建模数据量大,导致最后生成的动画文件体积较大。为了减少系统资源的占用,我们使用视频格式转换软件将avi格式的视频文件转换为WMV格式的视频文件,在Authorware中通过WMP控件来实现播放控制,在保证运行效果的同时,大大减少了文件体积。

以该系统某一功能模块的WMV视频播放器设计为例:要求除实现视频的播放、暂停、静音等基本控制外,还要能通过在视频窗口单击来实现窗口播放和全屏播放的视频播放模式切换,以及随时终止播放返回本级菜单、返回主界面和退出系统等人机交互控制功能。本模块程序流程如下图所示:

4.1加载视频文件

首先在流程线上插入WMP控件,插入控件时不需在ActiveX控件属性对话框中设置控件的各属性值,并将控件图标的名称改为“视频”。然后在视频图标下面插入一个计算图标,命名为“视频加载”,该计算图标的主要功能是加载视频文件,并设置WMP控件的相关属性,主要程序代码如下。

SetSpriteProperty(@"视频",#url,FileLocation^"\\wmv\\s-2.wmv")

--设置控件加载的视频文件的地址和文件名。

SetSpriteProperty(@"视频",#fullScreen,"False")

--设置控件以窗口方式运行。

SetSpriteProperty(@"视频",#uimode,"none")

--禁用WMP控件的内置播放器。

SetSpriteProperty(@"视频",#enableContextMenu,"False")

--禁用右键菜单。

CallSprite(@"视频",#callstring,"controls.play")

--调用CallString方法,开始播放加载的视频文件。

4.2 播放控制

如图3所示,“播放控制”交互图标的第一个分支为条件响应分支,其作用是用来判断加载的视频文件是否已播放完毕,播放完毕,则调用控件的close方法,关闭控件,退出交互。否则,继续执行交互,等待播放结束。判断条件是通过调用控件CallString方法中的playState属性值来设置的。该属性的返回值表示播放的状态,如1、2、3、6、9和10分别表示当前的播放状态为停止、暂停、播放、正在缓冲、正在连接和准备就绪。该条件分支的属性设置如下图所示:

条件表达式为:CallSprite(@"视频",#callstring,"playState")=1。

第二个分支为事件响应分支,其作用是用来捕获控件的click事件,当在播放的视频上单击鼠标左键时,则进入该分支,通过一个计算图标调用控件CallString方法中的fullScreen属性,实现全屏播放和窗口播放的切换,该事件响应的设置方法如图2所示。该分支群组图标内的计算图标中的主要程序代码如下:

If CallSprite(@"视频",#callstring,"fullScreen") then

--判断目前是否为全屏播放模式

CallSprite(@"视频",#callstring,"fullScreen(0)")

--设置为窗口播放模式

else

CallSprite(@"视频",#callstring,"fullScreen(-1)")

--设置为全屏播放模式

end if

第三个分支为热区域响应分支,其作用是控制视频文件的播放或暂停,分支内的群组图标结构如下图所示:

图5 热区域响应分支“播放/暂停”群组图标结构

分支内的“play/pause”计算图标通过调用控件CallString方法中的controls.pause方法和controls.play方法,来实现播放和暂停的控制。“图标切换”交互图标为条件交互,根据变量m_play的值,来控制播放界面上的“播放图标”和“暂停图标”的显示。计算图标内的程序代码如下:

if CallSprite(@”视频”,#callstring,”playState”)=3 then

--判断当前播放的状态是否为“播放”

CallSprite(@”视频”,#callstring,”controls.pause”)

--设置当前的状态为“暂停”

m_play:=1

else

CallSprite(@”视频”,#callstring,”controls.play”)

--设置当前的状态为“播放”

m_play:=0

end if

其他分支分别通过调用控件CallString方法中的settings.mute、controls.stop和settings.volume等属性或方法,实现静音、返回和音量调节等功能的控制,具体代码略。

5 结论

Authorware作为一种基于流程图和设计图标的多媒体创作工具,具有简单易用、编程灵活的特点,但其软件功能相对比较简单,为了满足复杂程序创作的需要,可以通过调用ActiveX控件来直接使用基于VB、VC、Delphi等高级编程语言编制的具有特殊功能的程序模块,在扩展多媒体应用程序功能的同时,也大大提高程序设计的效率。如本实例通过应用WMP控件实现在Authorware中播放WMV格式的视频文件,不仅实现了全屏播放等Authorware数字电影图标不能实现的功能,还将视频文件的体积缩小为原avi格式的六分之一,在减少系统资源占用的同时,显著地提高了视频播放的流畅性和程序运行的稳定性。

参考文献:

[1] 姜宏. 网络流媒体播放器的研究与设计[J]. 电脑知识与技术,2013(2).

[2] 夏蕾. Authorware 中常用的数字电影控制技巧[J]. 电子测试,2013(19).

[3] 李艳. 数字电影文件如何在Authorware中正常播放[J]. 现代电子技术,2010(4).

[4] 张应成. ActiveX控件在Authorware7.0中的应用[J]. 软件导刊, 2008(5).

[5] 王仁云. 视频编码模式以及在Windows Media编解码器的应用[J]. 现代教育技术,2008(13).

[6] 曹江田. 利用Authorware开发雷达多媒体教学训练系统[J]. 电子世界,2014(1).

[7] 龚蔚峰. 在多媒体Authorware软件中如何控制电影图标[J]. 网络安全技术与应用,2014(3).

[8] 李兴德,俞海英,伍红兵,等. 基于数字媒体技术的军事模拟训练软件的设计与实现[J].计算机应用, 2012(S1).

[9] 袁海东著. Authorware6教程[M]. 北京:电子工业出版社,2002.

[10] 赵鸣,徐海荣,孙波. ActiveX控件实现多媒体课件的网络化[J]. 现代电子技术,2006(4).

猜你喜欢

数字视频
高职院校数字视频监控传输网络的思考与分析
数字视频水印技术浅析
基于多尺度互信息量的数字视频帧篡改检测
数字视频矩阵平台与全数字视频监控系统整合方案研究
基于ONVIF的高速公路异构数字视频联网监控
工业数字视频监控系统在石化行业安全领域的应用