在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="csfrootwelcome.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進行控制。


在這個例子中,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來控制播放器的活動,比如開始播放,停止播放或占停播放,以及放大縮小等。
除了可以用動作比如鼠標的動作來對嵌入的media player進行控制外,還可以利用事件來對其進行控制。microsoft? windows media? player 支持的事件很多,有普通的鼠標事件,比如鼠標的單擊、雙擊、鼠標的移動、鼠標鍵的按下與鬆開等,也有一些是media player特有的事件。與流播放有直接關係的事件有:openstatechange,playstatechange,buffering,markerhit,scriptcommand等。下面我們對這幾個重要的事件做簡單地介紹。

1 openstatechange 事件
openstatechange 事件表示player的狀態已經發生了改變。media player的打開狀態有:
0 表示流已經關閉(nsclosed)
1 表示正在裝入asx文件(nsloadingasx)
2 表示正在裝入nsc文件(nsloadingnsc)
3 表示正在尋找media server (nslocating)
4 表示正在與media server建立連接(nsconnecting)
5 表示正在打開或偵聽流信息(nsopening)
6 表示流信息已經打開(nsopen)
用javascript處理openstatechange事件的格式如下:
<script for="mediaplayer" event="openstatechange(loldstate, lnewstate)"
language="jscript">
//insert script commands//
</script>
其中mediaplayer是在<object></object>中定義的media player對像時的名字。

2 playstatechange 事件
playstatechange 事件表示media player的播放狀態已經改變,media player可能的狀態有:
0 播放已經停止(mpstopped)
1 播放暫停(mppaused )
2 正在播放(mpplaying)
3 正在等待流開始(mpwaiting)
4 向前搜索(mpscanforward)
5 向後搜索(mpscanreverse)
6 向前跳躍(mpskipforward)
7 向後跳躍(mpskipreverse)
8 流已經關閉(mpclosed)
用javascript處理該事件的方法為:
<script for="mediaplayer" event="playstatechange(loldstate, lnewstate)"
language="jscript">
//insert script commands//
</script>
3 buffering 事件
buffering事件表示media player正在緩衝數據準備播放。在進行流播放之前,media player必須要緩衝一定數量的數據之後才開始播放,buffering事件反映了player緩衝數據的狀況。用javascript處理buffering事件的方法為:
<script for="mediaplayer" event="buffering(bstart)" language="jscript">
//insert script commands//
</script>
其中bstart為一個布爾變量,當它為true時表示緩衝正在進行,反之表示緩衝已經結束。

4 scriptcommand 事件
scriptcommand事件表示media player接收到了script 命令,這時用戶可以利用對接收到script命令進行分析以決定採取相應的處理。我們知道利用media tools的asf indexer工具可以給流添加script命令,當流播放器player接收到這些script 命令時會激活這個事件處理方法,於是用戶可以在事件處理方法中對script命令進行處理。處理scriptcommand的方法是:
<script for="mediaplayer" event="scriptcommand(stype, sparam)"
language="jscript">
//insert script commands//
</script>
其中stype是script命令的類型,script命令的類型有url,text,event等,用戶可以根據script命令類型的不同做不同的處理。比如,如果是url命令,我們可以在指定的幀內打開sparam中指定的頁面。

5 markhit 事件
markerhit事件同scritpcommand事件一樣,當媒體播放器在asf流中遇到標記時會激活該事件,用戶利用該事件可以知道當前的標記是第幾個標記。markerhit事件的處理方法是:
<script for="mediaplayer" event="markerhit(lmarkernum)" language="jscript">
//insert script commands//
</script>
當然,除了支持事件處理之外,做為一個activex對象,media player還有很多的屬性(property)和方法(method)可以供web頁使用。比如用mediaplayer.markercount 屬性可以知道在asf流中到底有多少個標記;利用mediaplayer. currentposition屬性可以知道當前播放位置的時間等等。至於media player對象的方法我們在前面已經使用了很多,比如play(), pause()等均是media player的方法。由於media player對象的屬性和方法太多,我們不可能在此一一介紹,而只是對幾個較為重要的事件處理做了一定的介紹。用戶在使用時可以參考media player sdk的幫助文檔以獲取更多的信息。
本文對media service的客戶應用程序media player的使用,特別是在web頁中的使用做了簡單的介紹。作為一個通用的媒體播放器,它還有很多的功能這裡沒有介紹,要瞭解一個軟件的功能,最好的方法就是使用它。用戶如果感興趣可以從www.windowsmedia.com上去免費下載。

英文資料看這裡
msdn.microsoft.com/library/default.asp?url=/library/en-us/wmplay/mmp_sdk/controlreference.asp

文章整理:站長天空 網址:http://www.z6688.com/
以上信息與文章正文是不可分割的一部分,如果您要轉載本文章,請保留以上信息,謝謝!
arrow
arrow
    全站熱搜

    Max 發表在 痞客邦 留言(0) 人氣()