分享
 
 
 

Win2000网络多媒体应用(二) --ASF流播放器

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

Windows Media Player--ASF流播放器

Windows Media Player是Microsoft公司提出的流播放方案 Media Service 的重要组成部分,是一个通用的媒体播放器。在Media Service解决方案中,Media Player是作为客户端流播放应用程序来使用的。事实上,Media Player既可以象一个普通的应用程序一样单独使用,播放本地或网络上的流信息;也可以由HTML文本中的超级连接来启动以播放流信息;它还可以作为一个ActiveX对象在Web页面中使用。Media Player作为一个通用的媒体播放器除了播放ASF格式的流信息之外,它还可以播放多种格式的媒体信息,包括:声音文件(.wav, .snd, .aif, .au, .mp3),MIDI文件(.mid, .rim, .midi),图象文件(.mov, .avi, .qt. .wmv, .mpg, .mpeg, m1v), 播放列表文件(.asx, .wax, .m3u)等。目前Media Player已经集成在Microsoft的IE5.0中,如果要在Netscape 或低版本的IE中使用Media Player则需要安装,用户可以在Microsoft的www.windowsmedia.com上去免费下载。Media Player的工作界面如图1 所示。下面我们将对Media Player的使用做详细的介绍。首先我们要简单地介绍如何将Media Player作为一个独立的应用程序来使用,以及如何在HTML建立hyperlink以启动Media Player。然后着重介绍如何在Web页中将Media Player作为一个ActiveX对象来使用,并用JavaScript对其工作过程进行控制。

图 1 Media Player的工作界面

1 将Media Player作为独立使用的应用程序

将Media Player做为一个独立的应用程序的使用比较简单,只要在File菜单中选择Open,然后输入或选择要播放的文件就可以对该文件进行播放。如图2所示。如果要播放Media Server上广播的节目,可以在Open对话框中输入mms://IP_address/station_name 即可以直接播放Server上播放的节目。其中IP_address是Media Server的地址,而station_name是节目的站名。

图2 用Media Player直接播放ASF文件

2 利用ASX文件在HTML启动Media Player

打开Media Player的另一种方式是用HTML中超级连接,这需要用一个ASX文件来辅助完成该工作。ASX(Advanced Stream Redirector)文件是一个文本文件,它主要的目的对流信息重定向。在ASX文件中包含了媒体内容对应的的URL(Uniform Resource Locator),当我们在HTML中让一个hyperlink 与ASX联系时,浏览器会直接将ASX的内容送给Media Player,Media Player会根据ASX文件的信息用相应的协议去打开指定位置上的多媒体信息流或多媒体文件。

利用ASX文件来重定向流信息的主要原因是:目前通用的浏览器通常均不能直接支持用于播放流信息的协议,如Microsoft 的Media Server protocol (MMS) or Microsoft? ;NetShow? Theater Server protocol。它们通常支持的协议是HTTP,FTP等协议。因此如果我们在HTML 文件中链接是http://www.microsoft.com,目前所有的浏览器均能用HTTP协议与一个WWW服务器建立连接。相反,如果我们需要一个Media Server建立连接以播放流信息,就必须用MMS协议,如mms://202.112.107.59/station1,但由于目前通用的浏览器通常均不能直接支持MMS协议,所以浏览器不能与Media Server建立连接。为了解决这个问题,必须采用ASX文件。采用ASX文件后,当浏览器发现一个连接与ASX有关时,它知道需要用Media Player来播放流信息,于是它会自动启动Media Player,并将ASX文件的信息送给Media Player,Media Player就可以用如MMS之类的协议来播放流信息了。 ASX文件是单纯的文本文件,我们可以用任何文本编辑器来编辑生成,但扩展名必须是.asx。下面给出了一个ASX文件的例子。

<asx version = "3.0">

<title>demo</title>

<entry>

<ref href = "mms://202.112.107.59/demo/demo.asf"/>

</entry>

</asx>

第一行是版本号,第二行是标题,在<entry></entry>之间的部分说明Media Player应用MMS协议去播放网络计算 202.112.107.59上demo路径下的demo.asf文件。

ASX文件可以有自己的TITLE,AUTHOR,COPYRIGHT之类的信息,它的<entry></entry>可以有多个,表示有多个流要播放,这被成为播放列表,每个<entry></entry>之间还有属于每个流的相关信息包括TITLE,AUTHOR,COPYRIGHT等。下面的例子中就有两个节目要播放,它们各自还有自己的信息。

<ASX VERSION="3.0">

<TITLE>Example Media Player Show</TITLE>

<AUTHOR>Windows Media Technologies</AUTHOR>

<COPYRIGHT>(c) 1999, Microsoft Corporation</COPYRIGHT>

<ENTRY>

<TITLE>Example Clip</TITLE>

<AUTHOR>Windows Media Technologies</AUTHOR>

<COPYRIGHT>(c) 1999, Microsoft Corporation</COPYRIGHT>

<REF HREF="mms://samples.microsoft.com/media.asf" />

</ENTRY>

<ENTRY>

<TITLE>Another Clip</TITLE>

<AUTHOR>Windows Media Technologies</AUTHOR>

<COPYRIGHT>(c) 1999, Microsoft Corporation</COPYRIGHT>

<REF HREF="mms://samples.microsoft.com/more_media.asf" />

</ENTRY>

</ASX>

在HTML使用ASX文件的方法非常简单,与建立一个普通的HyperLink的方法相同。下面是一个简单的HTML文件testasx.htm,它给出了与ASX文件的链接。

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>Test ASX File</title>

</head>

<body>

<p><a href="http://202.112.107.59/broadcast/station.asx">Test ASX</a></p>

</body>

</html>

除了用户自己创建ASX文件之外,更简单的办法是由Media Server来自动创建。当我们希望用Media Server来播放流信息时,我们必然要对播出的节目流进行设置,比如指定流文件名,指定播放协议等。在设置完成时Media Server会根据用户的设置自动建立一个ASX文件,利用该ASX文件Media Player 就可以播放Media Server播放的节目流。我们可以直接利用这个ASX文件与HTML建立链接,而不需要用户自己去书写ASX文件。

3 在Web页中使用Media Player

虽然上面两种方法均能完成流信息的播放,但不足之处是播放是在独立的窗口中进行的。比如在HTML通过与ASX文件的链接可以打开并播放流信息,但流信息的播放是在另一个窗口即播放器窗口中进行的,播放的控制也需要在播放器窗口中来完成。幸运的是Media Player是一个标准的ActiveX控件,我们可以将它作为一个对象直接嵌入到HTML页中去,这样就可以在Web页中直接用Player对象来播放流节目。图3是一个将Player嵌入Web页的例子。

图 3 将Media Player嵌入到Web 页中

在Web页中嵌入Media Player的方法比较简单,只要用HTML中的<Object></Object>可以了,如下所示。

<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=6,4,5,715"

STANDBY="Loading Microsoft? Windows Media? Player components..."

TYPE="application/x-oleobject">

</OBJECT>

其中ID是对象的名称,当用户在JavaScript要对Media Player进行控制时可以用该对象的名称WMPlay进行访问。CODEBASE指明当用户的浏览器中没有安装Player控件时可以从该URL指定的位置去获取。

当然在建立Player对象时也可以用<PARAM >来为其指定参数。如下所示:

<PARAM NAME="FileName" VALUE="C:ASFRootWelcome.asf">

<PARAM NAME="ShowControls" VALUE="False">

<PARAM NAME="AutoRewind" VALUE="True">

<PARAM NAME="AutoStart" VALUE="False">

其中"FileName"参数表示Media Player要播放的文件活或流。"ShowControls"表示在播放时是否显示控制条。Media Player的参数很多,我们在此不再一一详述。读者如果需要了解更详细的内容可以参考Media Player SDK中的相关部分。

如果用户需要对Media Player进行控制可以用JavaScript进行控制。图4给出了用JavaScript对Media Player进行控制的例子。

图4 用JavaScript控制Media Player的例子

在这个例子中,Media Player嵌入在Web页面中,在Media Player右边有一些按钮,利用这些按钮用户可以控制Media Player的播放活动。这些按钮的HTML代码如下:

<form name="myform">

<input type="button" width="15" value="No Controls " name="NoControls"

OnClick="controlType(false)">

<input type="button" width="15" value="All Controls" name="Full"

Onclick="controlType(true)">

<input type="button" width="15" value=" Small " name="Small"

OnClick="displaySize(1)">

<input type="button" value=" Large " name="Large"

Onclick="displaySize(2)">

<input type="button" width="15" value=" Normal " name="Normal"

Onclick="displaySize(0)">

<input type="button" width="15" value=" Play " name="Play"

Onclick="PlayClick()">

<input type="button" width="15" value=" Stop " name="Stop"

Onclick="StopClick()">

</form>

相应的JavaScript代码为:

<script language="javascript">

<!--

var g_Browser = navigator.appName;

function controlType (setting)

{

if (g_Browser == "Netscape")

document.WMPlay.SetShowControls(setting);

else

document.WMPlay.ShowControls = setting;

}

function displaySize (setting)

{

if (g_Browser == "Netscape")

document.WMPlay.SetDisplaySize(setting);

else

document.WMPlay.DisplaySize = setting;

}

function PlayClick ()

{

document.WMPlay.Play();

}

function StopClick ()

{

document.WMPlay.Stop();

if (g_Browser == "Netscape")

document.WMPlay.SetCurrentPosition(0);

else

document.WMPlay.CurrentPosition = 0;

}

function PauseClick ()

{

document.WMPlay.Pause();

}

function PlayPauseClick ()

{

var state;

if (g_Browser == "Netscape")

state = document.WMPlay.GetPlayState();

else

state = document.WMPlay.PlayState;

if (state == 0)

document.WMPlay.Play();

else if (state == 1)

document.WMPlay.Play();

else if (state == 2)

document.WMPlay.Pause();

}

//-->

</script>

从这个例子可以看出当用户单即其中的某个按钮时,它对应的OnClick函数将被调用。在JavaScript函数中,可以直接用WMPlay来控制播放器的活动,比如开始播放,停止播放或占停播放,以及放大缩小等。

除了可以用动作比如鼠标的动作来对嵌入

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有