应用思考-教育技术论坛

标题: Windows Media 流媒体技术详解 [打印本页]

作者: download    时间: 2009-8-13 19:17
标题: Windows Media 流媒体技术详解
摘 要:Windows Media 流媒体由于交互性强、使用方便和效率高,近来在网络课程中的应用逐渐增多。本文讨论了Windows Media 流媒体在网络课程中应用的优势及其在设计、制作、发布、应用等各环节的相关理论和技术细节。
关键词:Windows Media;流媒体;ASF
在网络教育中采用流媒体是十分重要的技术手段。由于Microsoft 公司凭借在操作系统上的特殊优势,将其流媒体技术Windows Media迅速推广普及。由于Windows Media在技术性能、易用性、效率和交互性等方面具有突出的优势,因而在当前的网络教育中普遍使用了这一技术。然而,在目前有些采用Windows Media技术的网络课程(课件)中经常出现流媒体播放不稳定的现象,因此结合实例详细讨论Windows Media流媒体技术的要点和正确应用方法就显得非常必要。
一、
Windows Media流媒体技术
当数据及其相关的所有属性从网络服务器上接收到时就立即被播放出来,而不是需要下载完毕后再播放,以这种方式传输的网络数据称为“流”。[1] Windows Media是Microsoft公司推出的流媒体技术,其中包括了流媒体的制作、发布、播放和管理的整体解决方案,它的核心流媒体数据格式是 ASF(Advanced Stream Format),视频、音频、图像、控制命令脚本和时间点等信息通过这种格式以网络数据包形式传输,实现流媒体的发布。最新的Windows Media流媒体文件扩展名是WMV和WMA,这两者主要是为了区别视频和音频,其结构与ASF没有本质区别。
Windows Media服务是运行于服务器端的流媒体控制平台,它使用户能够通过各类网络传输流媒体内容,它为ASF流媒体提供了两种发布方式:Unicast Service(单播)和Station Service(多播、广播站),它们分别用于交互式点播和广播方式。交互式点播方式允许用户通过交互参与流媒体播放的控制;而广播方式下用户只能观看播放,不能进行控制,适用于对教室现场的广播。[2] 本文着重讨论交互点播方式下流媒体发布的技术问题。
二、
ASF流媒体文件的制作
ASF流媒体文件的制作分为视频文件的编码和ASF文件中插入控制信息这两个主要步骤。
1.
ASF视频文件的编码
为了在网络上传输低比特率的流媒体,其压缩/解压缩算法是有损算法,实现压缩/解压缩算法的程序也称为编码/解码器(codecs)。[3]ASF视频文件的编码是指将视频文件用相应的编码器压缩生成ASF格式的视频文件。
常用的ASF 视频文件编码器有:Windows Media Encoder 7、On-Demand Producer等。在用编码器进行编码时,应正确选择网络带宽和音、视频编码算法这两个关键因素。网络带宽涉及传输数据流量,因而影响压缩率,进而影响视频画质,应根据网络的实际情况(如Modem、ISDN、ADSL、Cable Modem、LAN等)选择网络带宽参数,通常在校园网环境下可选择256kbps。编码算法则直接影响视频画质或者音频音质和压缩后文件的数据量,选择编码算法时还应考虑到解码(播放)时应有相应版本的解码器,例如考虑到Windows98 SE下的Windows Media Player 6.4可进行相应ASF文件的播放,则视频编码算法可选Microsoft MPGE4 V2,音频编码算法可选Voxware MetaSound Voice AC24V1(22Kbps)。
2.在ASF视频文件中插入控制信息
Windows Media 流媒体技术的特点之一是交互性很强,这是通常播放的视频所不具备的特征。为了实现交互功能,需要在ASF视频文件中插入相应的控制信息。
2.1插入URL
ASF 流媒体播放的一个经典应用是这样的:在一个左右框架结构的网页中,左边框架中播放ASF视频文件,当播放到某一时刻,右边框架中会显示相应的网页内容。这种应用模式在网络教育中是非常有用的。这种ASF视频播放控制指定URL上网页的显示就需要在ASF文件中插入URL信息。
插入URL 的方法是:在Windows Media Advanced Script Indexer中打开ASF文件,在相应的时间处暂停视频的播放,在脚本区右击鼠标,选择Add.在弹出的New Script Properties 对话框中时间已经自动设定好,选择Type(类型)为URL,在Parameter(参数)域中输入URL ,它指出将打开网页的地址和目标框架。如:page1.htm&&content,其中page1.htm是要显示的网页,它应与视频文件在同一个文件夹中,content是显示page1.htm网页的框架名称。
需要特别注意的是: 当使用服务器上的Windows Media 服务功能控制流媒体的传输时,在ASF文件中插入的URL中应包括Windows Media 管理器中所建立的单播点别名。例如:video/page1.htm&&content,此处的video就是单播点别名。最后选择菜单 File>Index this file保存所插入的控制信息。
2.2插入脚本

ASF视频播放时可对其他控件属性或方法进行控制或调用,这需要在ASF文件中插入脚本。

插入脚本的方法是:在脚本区中右击鼠标,选择Add。在弹出的对话框中选择Type(类型)为TEXT,在Parameter(参数)域中输入所需插入的脚本命令,如Play,Stop或Pause等。
2.3插入标记


在一个正在播放的视频中,想立即找到某个关键的知识点并不十分容易。但通过在ASP文件中插入时间点标记就可以方便的实现这一功能。



插入标记的方法是:在Windows Media Advanced Script Indexer中打开ASF文件,在需插入时间点处暂停视频的播放,在标记区右击鼠标,选择Add。然后在弹出的New Marker Properties对话框中输入标记名称,时间也已自动设定好。用此法将ASF文件中所需的多处标记设置后,最后保存插入的控制信息。

2.4导入用于插入控制信息的脚本文件

在一个较长的ASF视频文件中按上述方法插入大量的URL或时间点标记有时并不方便。Windows Media Advanced Script Indexer允许导入文本格式的脚本文件,由这些脚本文件描述所需插入的控制信息,据此完成控制信息的插入。其脚本文件的格式如下:

;****************************************
; Exported by ASI ver 1.0 ; Source File
: C:\WINDOWS\Desktop\1.txt ;****************************************

; Attributes
Title
:

Author
:

Description
:

Rating
:

Copyright
:


; Markers
start_marker_table
00:00:11.6
page1

00:00:45.3
page2

00:00:45.4
page3

end_marker_table

; Scripts
start_script_table
00:00:11.6
URL
page1.htm&&content

00:00:20.0
URL
page2.htm&&content

00:00:45.3
URL
page3.htm&&content

end_script_table
它的结构非常明确,我们可以按照所需插入的控制信息用文本编辑器来编辑它,然后用File>Import Script file命令导入这个脚本文件即可,当然最后也要用前述方法将插入的控制信息保存在ASF文件中。

三、网页中播放ASF流媒体文件的方法

Windows Media流媒体可以通过MMS协议或HTTP协议,在Windows Media Player中或在网页中嵌入相应ActiveX进行播放,我们主要讨论在网页中播放ASF流媒体文件的方法,这在网络教育中更有普遍意义。
1. 在网页中播放ASF流媒体文件的原理
在网页中播放ASF流媒体文件就是在网页中嵌入Windows Media Player ActiveX控件,通过此控件进行ASF文件的播放。以下是插入此控件的HTML代码。
<OBJECT ID="WMPlay" width=320 height=240 classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"

codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"
standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject">

<PARAM name="FileName" value="demo.asf">


<PARAM name="DisplaySize" value="0">


<EMBED type="application/x-mplayer2"


pluginspage="http://www.microsoft.com/isapi/redir.dll?prd=windows&sbp=mediaplayer&ar=media&sba=plugin"


filename="demo.asf"


displaysize="0"


name="WMPlay"


width=320 height=240


></EMBED>

</OBJECT>
其中<object> 标签和<embed>标签的嵌套使用是为解决IE与Netscape浏览器的兼容性问题。在<object>标签中,classid指出了Windows Media Player ActiveX控件的版本;ID用于在网页中给这个控件命名,以便在网页中使用脚本(如JavaScript)对其进行调用 (在<embed>标签中使用的是name);width和 height用于设定播放时整个显示区域的尺寸,PARAM用于设定控件的属性,例如name指出属性的名称,相应value则设定其属性值。
特别要注意的是:设定播放的文件名属性时, 通常是指向ASX文件,而并非直接指向ASF文件。这是因为ASX文件是meta文件。在使用Windows Media 服务功能来加强流媒体传输性能时,必须使用此ASX文件(详见文后的讨论),而不使用Windows Media 服务功能时也可使用ASX文件来对ASF文件定向,因此此处应将文件名属性指定为ASX文件,这样可在今后对流媒体的播放方式上有变化时不必修改网页。
使用Windows Media 服务功能时的ASX文件内容是在设置单播点时由Windows Media 管理器自动生成的:
<asx version = "3.0">

<title>hly</title>


<entry>


<ref href = "mms://server/video/hly.asf"/>


</entry>

</asx>
此时使用MMS协议传输流媒体,其中server是服务器名称,video是单播发布点别名。
不使用Windows Media 服务功能时ASX文件内容可这样编辑:
<asx version = "3.0">

<title>hly</title>


<entry>


<ref href = "hly.asf"/>


</entry>

</asx>
2.播放ASF流媒体文件控制其它网页的浏览
在播放ASF 流媒体文件时,在指定的时刻显示相应的其它的网页,这是网络教育常用的技术手段。其技术要点是:在网页上设计一个左右分帧的框架结构,将这两个帧按意义命名,例如将左边的帧命名为video,右边显示相应网页的帧命名为content。注意这里的命名应与在ASF文件中插入的URL信息相一致。这样,当左边的帧在播放插入URL信息的ASF流媒体文件时,在相应的时刻就会在右边的帧中显示有关的网页。
3.用超文本链接控制ASF流媒体文件播放的跳转
用超文本链接可以控制ASF流媒体文件播放的跳转,实现相关知识点的快速搜索。其技术要点是 :在ASF文件中插入相应的时间点标记。在播放ASF视频的网页中用<a
href=
"#">为相应的文字建立空超文本链接,并用onclick事件控制Windows Media Player ActiveX插件的CurrentMarker属性,具体代码为<a herf="#"onclick="WMPlay.CurrentMarker="1" ">其中WMPlay是插件的ID和name。此行代码的意义是让控件跳至第一个时间点标记处。当然也可对图像采用相同的方法控制视频的跳转。
4.用ASF流媒体控制Flash动画的播放
用Flash动画配合视频播放,对视频中不能直接显示的教学内容作深入的表达,这对网络教学是十分重
要的一种技术。[4]其技术要点是:在ASF流媒体文件中相应需要控制Flash动画的时间处插入文本类型的脚本命令,如play、pause、stop(分别用于Flash动画的播放、暂停、停止)。在网页的<head></head>标签之间添加下列代码:
<script LANGUAGE="JavaScript" FOR="WMPlay" EVENT="ScriptCommand(ScType, ScCmd)">
if (ScType =="TEXT"){

if (ScCmd=="play"){flash.Play()};


if (ScCmd=="pause"){flash.Stop()};


if (ScCmd=="stop"){flash.Stop();flash.Rewind()};


}

</script>
其中“WMPlay” 是播放ASF流媒体文件的控件ID,函数ScriptCommand的参数ScType是脚本类型。ScCmd是脚本命令,条件语句根据脚本命令调用 Flash动画播放器控件的相应的方法,对Flash动画进行控制。注意Falsh.Play()等调用方法命令中的Flash是Flash动画播放器控件的ID和name。
5.自定义按钮控制ASF流媒体文件的播放。
在网页上用Windows Media Playwer ActiveX控件播放ASF流媒体文件时,设置其属性Controller="true", 使控件显示控制条,用户可用此控制条控制ASF流媒体文件的播放。但由于控件的控制条的形式单一,缺少个性,我们通常需要根据ASF流媒体播放的控制需求和网络课程的艺术设计,在网页中设计一些自定义按钮用于控制播放视频(同时应设置控件属性<PARAM name="controller" value="false">, 将控制条关闭)。这样既可灵活控制视频的播放,又有整体的艺术性。其技术要点是:在网页中适当的位置插入自定义按钮图像(或者插入交替按钮图像),为其设定空的超文本链接,这样在浏览中当鼠标指向按钮时将出现手形光标。通过按钮行为调用控件中相关的方法,从而控制ASF流媒体文件的播放,有关的代码如下:
<a href="#"><img title="play" src="images/play.gif" onclick="WMPlay.play()" width="20" height ="20"></a>
其中“WMPlay”是播放ASF流媒体文件的控件ID。
四、 Windows Media 管理器的设置
Windows Media 服务的功能在中文Windows 2000上是由Windows Media管理器实现的。在网页中用Windows Media Player ActiveX控件播放ASF流媒体文件时,是通过Windows Media管理器建立相应的点播单播发布点,并采用MMS协议进行流媒体数据的传输。单播连接是客户端与服务器之间的点到点的连接,在这种连接中客户端可接收流式数据。而MMS协议用于访问Windows Media发布点上的单播内容,它是连接Windows Media单播服务的默认方法。如果我们在ASF文件中插入了有关的索引控制信息并要快进、后退、暂停、开始和停止等,则必须使用MMS协议[5] 。
通过Windows Media管理器建立单播发布点的方法是:启动Windows Media管理器,在配置服务器功能中点击单播发布点,在右边窗口中点击单播发布点按钮并选择“新建”;下一步在选择一个发布点中,选择创建一个发布点;下一步在创建一个新的发布点中,设置发布点的别名,特别需要注意这个别名应与插入在ASF文件中URL的别名相同,然后设置ASF文件所在的目录;下一步在定位目标ASF文件中,通过浏览按钮选择相应的ASF文件;下一步在选择发布方法中,选择使用MMS协议,同时也选择创建一个指向ASF流的ASX文件,这样管理器会自动生成一个满足上述设置要求的ASX文件并替换原有的ASX文件。这样一个单播发布点就建立了。
要在网络教学中使用ASF流媒体文件并充分发挥它的技术优势,应在建立ASF文件、在网页中播放和设置Windows Media 管理等环节中,根据实际功能需求采用正确的方法,这样才能保证在一定的网络带宽下,ASF流媒体播放稳定,交互灵活,满足网络教学的要求。

参考文献:
[1]
张 力. 采用突出宽带网优势的技术加强网络课件交互和资源共享能力[J]. 中国电化教育,2001,(11).P233
[2]邹 刚等. 由Windows Media 构建的VOD系统[J]. 中国电化教育,2002,(5).P78
[3]Microsoft Corp. Window Media Technologies Version 7 JumpStart CD. 1998-2000
[4]张 兖. Windows Media互动杂谈,http://www.liumeiti.com/,2002-6-20
[5]Microsoft公司, Windows Media管理帮助文档. 1997-1999




欢迎光临 应用思考-教育技术论坛 (http://etthink.com/) Powered by Discuz! X3.4