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="/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>標簽和<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=@"/bk/sizhongblog/images/play.gif" onclick="WMPlay.play()" width="20" height ="20"></a>其中“WMPlay”是播放ASF流媒體文件的控件ID。