Windows Media流媒體可以(yǐ)通過MMS協議或HTTP協議,在(zài)Windows Media Player中或在(zài)網頁中嵌入相應ActiveX進行播放,我們主要(yào / yāo)讨論在(zài)網頁中播放ASF流媒體文件的(de)方法,這(zhè)在(zài)網絡教育中更有普遍意義。
1. 在(zài)網頁中播放ASF流媒體文件的(de)原理
在(zài)網頁中播放ASF流媒體文件就(jiù)是(shì)在(zài)網頁中嵌入Windows Media Player ActiveX控件,通過此控件進行ASF文件的(de)播放。以(yǐ)下是(shì)插入此控件的(de)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="/bk/sizhongblog/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>标簽和(hé / huò)<embed>标簽的(de)嵌套使用是(shì)爲(wéi / wèi)解決IE與Netscape浏覽器的(de)兼容性問題。在(zài)<object>标簽中,classid指出(chū)了(le/liǎo)Windows Media Player ActiveX控件的(de)版本;ID用于(yú)在(zài)網頁中給這(zhè)個(gè)控件命名,以(yǐ)便在(zài)網頁中使用腳本(如javascript)對其進行調用(在(zài)<embed>标簽中使用的(de)是(shì)name);width和(hé / huò) height用于(yú)設定播放時(shí)整個(gè)顯示區域的(de)尺寸,PARAM用于(yú)設定控件的(de)屬性,例如name指出(chū)屬性的(de)名稱,相應value則設定其屬性值。
特别要(yào / yāo)注意的(de)是(shì):設定播放的(de)文件名屬性時(shí),通常是(shì)指向ASX文件,而(ér)并非直接指向ASF文件。這(zhè)是(shì)因爲(wéi / wèi)ASX文件是(shì)meta文件。在(zài)使用Windows Media 服務功能來(lái)加強流媒體傳輸性能時(shí),必須使用此ASX文件(詳見文後的(de)讨論),而(ér)不(bù)使用Windows Media 服務功能時(shí)也(yě)可使用ASX文件來(lái)對ASF文件定向,因此此處應将文件名屬性指定爲(wéi / wèi)ASX文件,這(zhè)樣可在(zài)今後對流媒體的(de)播放方式上(shàng)有變化時(shí)不(bù)必修改網頁。
使用Windows Media 服務功能時(shí)的(de)ASX文件内容是(shì)在(zài)設置單播點時(shí)由Windows Media 管理器自動生成的(de):
<asx version = "3.0">
<title>hly</title>
<entry>
<ref href = "mms://server/video/hly.asf"/>
</entry>
</asx>
此時(shí)使用MMS協議傳輸流媒體,其中server是(shì)服務器名稱,video是(shì)單播發布點别名。
不(bù)使用Windows Media 服務功能時(shí)ASX文件内容可這(zhè)樣編輯:
<asx version = "3.0">
<title>hly</title>
<entry>
<ref href = "hly.asf"/>
</entry>
</asx>
2.播放ASF流媒體文件控制其它網頁的(de)浏覽
在(zài)播放ASF流媒體文件時(shí),在(zài)指定的(de)時(shí)刻顯示相應的(de)其它的(de)網頁,這(zhè)是(shì)網絡教育常用的(de)技術手段。其技術要(yào / yāo)點是(shì):在(zài)網頁上(shàng)設計一(yī / yì /yí)個(gè)左右分幀的(de)框架結構,将這(zhè)兩個(gè)幀按意義命名,例如将左邊的(de)幀命名爲(wéi / wèi)video,右邊顯示相應網頁的(de)幀命名爲(wéi / wèi)content。注意這(zhè)裏的(de)命名應與在(zài)ASF文件中插入的(de)URL信息相一(yī / yì /yí)緻。這(zhè)樣,當左邊的(de)幀在(zài)播放插入URL信息的(de)ASF流媒體文件時(shí),在(zài)相應的(de)時(shí)刻就(jiù)會在(zài)右邊的(de)幀中顯示有關的(de)網頁。
3.用超文本鏈接控制ASF流媒體文件播放的(de)跳轉
用超文本鏈接可以(yǐ)控制ASF流媒體文件播放的(de)跳轉,實現相關知識點的(de)快速搜索。其技術要(yào / yāo)點是(shì) :在(zài)ASF文件中插入相應的(de)時(shí)間點标記。在(zài)播放ASF視頻的(de)網頁中用<a href=@"#">爲(wéi / wèi)相應的(de)文字建立空超文本鏈接,并用onclick事件控制Windows Media Player ActiveX插件的(de)CurrentMarker屬性,具體代碼爲(wéi / wèi)<a herf="#"onclick="WMPlay.CurrentMarker='1' ">其中WMPlay是(shì)插件的(de)ID和(hé / huò)name。此行代碼的(de)意義是(shì)讓控件跳至第一(yī / yì /yí)個(gè)時(shí)間點标記處。當然也(yě)可對圖像采用相同的(de)方法控制視頻的(de)跳轉。
4.用ASF流媒體控制Flash動畫的(de)播放
用Flash動畫配合視頻播放,對視頻中不(bù)能直接顯示的(de)教學内容作深入的(de)表達,這(zhè)對網絡教學是(shì)十分重要(yào / yāo)的(de)一(yī / yì /yí)種技術。[4]其技術要(yào / yāo)點是(shì):在(zài)ASF流媒體文件中相應需要(yào / yāo)控制Flash動畫的(de)時(shí)間處插入文本類型的(de)腳本命令,如play、pause、stop(分别用于(yú)Flash動畫的(de)播放、暫停、停止)。在(zài)網頁的(de)<head></head>标簽之(zhī)間添加下列代碼:
<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”是(shì)播放ASF流媒體文件的(de)控件ID,函數ScriptCommand的(de)參數ScType是(shì)腳本類型。ScCmd是(shì)腳本命令,條件語句根據腳本命令調用Flash動畫播放器控件的(de)相應的(de)方法,對Flash動畫進行控制。注意Falsh.Play()等調用方法命令中的(de)Flash是(shì)Flash動畫播放器控件的(de)ID和(hé / huò)name。
5.自定義按鈕控制ASF流媒體文件的(de)播放。
在(zài)網頁上(shàng)用Windows Media Playwer ActiveX控件播放ASF流媒體文件時(shí),設置其屬性Controller="true",使控件顯示控制條,用戶可用此控制條控制ASF流媒體文件的(de)播放。但由于(yú)控件的(de)控制條的(de)形式單一(yī / yì /yí),缺少個(gè)性,我們通常需要(yào / yāo)根據ASF流媒體播放的(de)控制需求和(hé / huò)網絡課程的(de)藝術設計,在(zài)網頁中設計一(yī / yì /yí)些自定義按鈕用于(yú)控制播放視頻(同時(shí)應設置控件屬性<PARAM name="controller" value="false">,将控制條關閉)。這(zhè)樣既可靈活控制視頻的(de)播放,又有整體的(de)藝術性。其技術要(yào / yāo)點是(shì):在(zài)網頁中适當的(de)位置插入自定義按鈕圖像(或者插入交替按鈕圖像),爲(wéi / wèi)其設定空的(de)超文本鏈接,這(zhè)樣在(zài)浏覽中當鼠标指向按鈕時(shí)将出(chū)現手形光标。通過按鈕行爲(wéi / wèi)調用控件中相關的(de)方法,從而(ér)控制ASF流媒體文件的(de)播放,有關的(de)代碼如下:<a href=@"#"><img title="play" src=@"/bk/sizhongblog/images/play.gif" onclick="WMPlay.play()" width="20" height ="20"></a>其中“WMPlay”是(shì)播放ASF流媒體文件的(de)控件ID。