來自:http://www.cnblogs.com/bandry/archive/2006/10/11/526229.htmljavascript
在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進行控制。html
在這個例子中,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();java
}
//-->
</script>
從這個例子能夠看出當用戶單即其中的某個按鈕時,它對應的OnClick函數將被調用。在JavaScript函數中,能夠直接用WMPlay來控制播放器的活動,好比開始播放,中止播放或佔停播放,以及放大縮小等。
除了能夠用動做好比鼠標的動做來對嵌入的Media Player進行控制外,還能夠利用事件來對其進行控制。Microsoft? Windows Media? Player 支持的事件不少,有普通的鼠標事件,好比鼠標的單擊、雙擊、鼠標的移動、鼠標鍵的按下與鬆開等,也有一些是Media Player特有的事件。與流播放有直接關係的事件有:OpenStateChange,PlayStateChange,Buffering,MarkerHit,ScriptCommand等。下面咱們對這幾個重要的事件作簡單地介紹。windows
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中指定的頁面。app
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頁中的使用作了簡單的介紹。做爲一個通用的媒體播放器,它還有不少的功能這裏沒有介紹,要了解一個軟件的功能,最好的方法就是使用它。用戶若是感興趣能夠從http://www.windowsmedia.com/上去免費下載。
(默認0爲否,-1或1爲是)
<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" width="286" height="225">
<param name="AudioStream" value="/-1">
<param name="AutoSize" value="-1">
<!--是否自動調整播放大小-->
<param name="AutoStart" value="-1">
<!--是否自動播放-->
<param name="AnimationAtStart" value="-1">
<param name="AllowScan" value="-1">
<param name="AllowChangeDisplaySize" value="-1">
<param name="AutoRewind" value="0">
<param name="Balance" value="0">
<!--左右聲道平衡,最左-9640,最右9640-->
<param name="BaseURL" value>
<param name="BufferingTime" value="15">
<!--緩衝時間-->
<param name="CaptioningID" value>
<param name="ClickToPlay" value="-1">
<param name="CursorType" value="0">
<param name="CurrentPosition" value="0">
<!--當前播放進度 -1 表示不變,0表示開頭 單位是秒,好比10表示從第10秒處開始播放,值必須是-1.0或大於等於0-->
<param name="CurrentMarker" value="0">
<param name="DefaultFrame" value>
<param name="DisplayBackColor" value="0">
<param name="DisplayForeColor" value="16777215">
<param name="DisplayMode" value="0">
<param name="DisplaySize" value="0">
<!--視頻1-50%, 0-100%, 2-200%,3-全屏 其它的值做0處理,小數則採用四捨五入而後按前的處理-->
<param name="Enabled" value="-1">
<param name="EnableContextMenu" value="-1">
<!-是否用右鍵彈出菜單控制-->
<param name="EnablePositionControls" value="-1">
<param name="EnableFullScreenControls" value="-1">
<param name="EnableTracker" value="-1">
<!--是否容許拉動播放進度條到任意地方播放-->
<param name="Filename" value="01.wma" valuetype="ref">
<!--播放的文件地址-->
<param name="InvokeURLs" value="-1">
<param name="Language" value="-1">
<param name="Mute" value="0">
<!--是否靜音-->
<param name="PlayCount" value="10">
<!--重複播放次數,0爲始終重複-->
<param name="PreviewMode" value="-1">
<param name="Rate" value="1">
<!--播放速率控制,1爲正常,容許小數-->
<param name="SAMIStyle" value>
<!--SAMI樣式-->
<param name="SAMILang" value>
<!--SAMI語言-->
<param name="SAMIFilename" value>
<!--字幕ID-->
<param name="SelectionStart" value="-1">
<param name="SelectionEnd" value="-1">
<param name="SendOpenStateChangeEvents" value="-1">
<param name="SendWarningEvents" value="-1">
<param name="SendErrorEvents" value="-1">
<param name="SendKeyboardEvents" value="0">
<param name="SendMouseClickEvents" value="0">
<param name="SendMouseMoveEvents" value="0">
<param name="SendPlayStateChangeEvents" value="-1">
<param name="ShowCaptioning" value="0">
<!--是否顯示字幕,爲一塊黑色,下面會有一大塊黑色,通常不顯示-->
<param name="ShowControls" value="-1">
<!--是否顯示控制,好比播放,中止,暫停-->
<param name="ShowAudioControls" value="-1">
<!--是否顯示音量控制-->
<param name="ShowDisplay" value="0">
<!--顯示節目信息,好比版權等-->
<param name="ShowGotoBar" value="0">
<!--是否啓用上下文菜單-->
<param name="ShowPositionControls" value="-1">
<!--是否顯示往前日後及列表,若是顯示通常也都是灰色不可控制-->
<param name="ShowStatusBar" value="-1">
<!--當前播放信息,顯示是否正在播放,及總播放時間和當前播放到的時間-->
<param name="ShowTracker" value="-1">
<!--是否顯示當前播放跟蹤條,即當前的播放進度條-->
<param name="TransparentAtStart" value="-1">
<param name="VideoBorderWidth" value="0">
<!--顯示部的寬部,若是小於視頻寬,則最小爲視頻寬,或者加大到指定值,並自動加大高度.此改變只改變四周的黑框大小,不改變視頻大小-->
<param name="VideoBorderColor" value="0">
<!--顯示黑色框的顏色, 爲RGB值,好比ffff00爲黃色-->
<param name="VideoBorder3D" value="0">
<param name="Volume" value="0">
<!--音量大小,負值表示是當前音量的減值,值自動會取絕對值,最大爲0,最小爲-9640-->
<param name="WindowlessVideo" value="0">
<!--若是是0能夠容許全屏,不然只能在窗口中查看-->
</object>
上面的這個播放器是老式的那種,6.4版本!新式播放器是在MediaPlayer9.0之後出現的,也就是說只有裝了9.0或9.0以上的播放器才能正常使用的。
-------------------------------------------------------------------------------
下面是新式播放器代碼,相對之前的來講要簡單不少:
<object id="player" height="64" width="260" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param NAME="AutoStart" VALUE="-1">
<!--是否自動播放-->
<param NAME="Balance" VALUE="0">
<!--調整左右聲道平衡,同上面舊播放器代碼-->
<param name="enabled" value="-1">
<!--播放器是否可人爲控制-->
<param NAME="EnableContextMenu" VALUE="-1">
<!--是否啓用上下文菜單-->
<param NAME="url" VALUE="1.wma">
<!--播放的文件地址-->
<param NAME="PlayCount" VALUE="1">
<!--播放次數控制,爲整數-->
<param name="rate" value="1">
<!--播放速率控制,1爲正常,容許小數,1.0-2.0-->
<param name="currentPosition" value="0">
<!--控件設置:當前位置-->
<param name="currentMarker" value="0">
<!--控件設置:當前標記-->
<param name="defaultFrame" value="">
<!--顯示默認框架-->
<param name="invokeURLs" value="0">
<!--腳本命令設置:是否調用URL-->
<param name="baseURL" value="">
<!--腳本命令設置:被調用的URL-->
<param name="stretchToFit" value="0">
<!--是否按比例伸展-->
<param name="volume" value="50">
<!--默認聲音大小0%-100%,50則爲50%-->
<param name="mute" value="0">
<!--是否靜音-->
<param name="uiMode" value="mini">
<!--播放器顯示模式:Full顯示所有;mini最簡化;None不顯示播放控制,只顯示視頻窗口;invisible所有不顯示-->
<param name="windowlessVideo" value="0">
<!--若是是0能夠容許全屏,不然只能在窗口中查看-->
<param name="fullScreen" value="0">
<!--開始播放是否自動全屏-->
<param name="enableErrorDialogs" value="-1">
<!--是否啓用錯誤提示報告-->
<param name="SAMIStyle" value>
<!--SAMI樣式-->
<param name="SAMILang" value>
<!--SAMI語言-->
<param name="SAMIFilename" value>
<!--字幕ID-->
</object>
Real Player 網頁播放器 參數含義
參數:autostart 屬性:True或是False 做用:指定是否自動播放指定的源文件
參數:backgroundcolor 屬性:任何用符號「#」開頭的16進制數值或是任何預約義的顏色做用:指定圖像窗口的背景顏色
參數:center 屬性:True或是False 做用:指定片段使用初始編碼大小播放,而且在圖像窗口的中央。
參數:classid 屬性:"clsid:CFCDAA03-8BE4-1lcf-B84B0020AFBBCCFA:** 做用:用於指定ActiveX控件的惟一的字符串標示,能夠認出嵌入的RealPalyer播放器。
參數:console 屬性:任何字符串做用:能夠將各類不一樣的RealPlayer控制彙集在網頁上,這樣它們能夠交互使用或是保持獨立,並且互相不影響
參數:controls 屬性:ImageWindow,All,ControlPanel,PlavButton,PlayOnlyButton, PauseButton,StopButton,FFCtrl,RWCtrl,MuteCtrl,MuteVolume,VolumeSlider,PositionSlider,TACCtrl,HomeCtrl,InfoVolumePanel,InfoPanel,StatusBar,StatusField,PositionField 做用:可讓你指定那些控制是可見的。
參數:height 屬性:任何整數值做用:指定RealPlayer元素的高度,單位:像素
參數:id 屬性:任何字符串做用:爲標籤中的RealPlayer元素指定名字。
參數:imagestatus 屬性:True或是False 做用:指定是否在圖像窗口中顯示狀態信息,默認值是true
參數:loop 屬性:True或是False 做用:可讓你指定片段是否無限循環
參數:maintainaspect 屬性:True或是False 做用:默認RealPlayer拉伸全部的片段來充滿整個圖像窗口。
參數:name 屬性:任何字符串做用:爲標籤中的RealPlayer元素指定名字(在標籤中使用id)
參數:nojava 屬性:True或是False 做用:避免啓動Java虛擬機
參數:nolabels 屬性:True或是False 做用:能夠禁止顯示標題或是版權信息(realplayer5.0以上時,它是垃圾...)
參數:nologo 屬性:True或是False 做用:避免RealPlayer啓動時在圖像窗口中顯示
參數:numloop 屬性:任何整數值做用:讓你可以指定文件片循環的次數,不須要參數loop
參數:prefetch 屬性:True或是False 做用:指定在播放前,RealPlayer是否能夠得到流描述信息,默認值是False
參數:region 屬性:任何字符串做用:同SMIL一塊兒使用。容許你指定使用HTML代替SMIL
參數:scriptcallbacks 屬性:用逗號分割的列表做用:指定瀏覽器的回調監控(好高級的東東!)
參數:shuffle 屬性:True或是False 做用:同多文件片的ram文件或是SMIL文件一塊兒使用。可讓RealPlayer隨機播放列表中的文件
參數:src 屬性:任何合法的相對或是完整的URL 做用:指定播放的文件或是源文件的地址
參數:type 屬性:字符串做用:爲嵌入插件指定MIME類型
參數:width 屬性:任何整數值做用:指定RealPlayer元素的寬度
RealPlayer的一些函數、方法和過程
這是 Real Player ActiveX Control Library (Version 1.0) 的全部函數與方法,有興趣能夠研究一下。
function GetSource: WideString;
procedure SetSource(const lpszNewValue: WideString);
function GetConsole: WideString;
procedure SetConsole(const lpszNewValue: WideString);
function GetControls: WideString;
procedure SetControls(const lpszNewValue: WideString);
function GetNoLabels: WordBool;
procedure SetNoLabels(bNewValue: WordBool);
function GetAutoStart: WordBool;
procedure SetAutoStart(bNewValue: WordBool);
function GetAutoGotoURL: WordBool;
procedure SetAutoGotoURL(bNewValue: WordBool);
function GetVolume: Smallint;
procedure SetVolume(nVol: Smallint);
function GetMute: WordBool;
procedure SetMute(bMute: WordBool);
function GetLoop: WordBool;
procedure SetLoop(bVal: WordBool);
function GetImageStatus: WordBool;
procedure SetImageStatus(bEnable: WordBool);
function GetPacketsTotal: Integer;
function GetPacketsReceived: Integer;
function GetPacketsOutOfOrder: Integer;
function GetPacketsMissing: Integer;
function GetPacketsEarly: Integer;
function GetPacketsLate: Integer;
function GetBandwidthAverage: Integer;
function GetBandwidthCurrent: Integer;
procedure DoPlayPause;
procedure DoStop;
procedure DoNextItem;
procedure DoPrevItem;
function CanPlayPause: WordBool;
function CanStop: WordBool;
function HasNextItem: WordBool;
function HasPrevItem: WordBool;
function HasNextEntry: WordBool;
function HasPrevEntry: WordBool;
procedure DoNextEntry;
procedure DoPrevEntry;
procedure AboutBox;
procedure EditPreferences;
procedure HideShowStatistics;
function IsStatisticsVisible: WordBool;
procedure DoGotoURL(const url: WideString; const target: WideString);
procedure DoPlay;
procedure DoPause;
function GetPosition: Integer;
function GetPlayState: Integer;
function GetLength: Integer;
function GetTitle: WideString;
function GetAuthor: WideString;
function GetCopyright: WideString;
function GetClipWidth: Integer;
function GetClipHeight: Integer;
function CanPlay: WordBool;
function CanPause: WordBool;
procedure SetPosition(lPosition: Integer);
function GetNumLoop: Integer;
procedure SetNumLoop(lVal: Integer);
function GetCenter: WordBool;
procedure SetCenter(bVal: WordBool);
function GetNoLogo: WordBool;
procedure SetNoLogo(bVal: WordBool);
function GetMaintainAspect: WordBool;
procedure SetMaintainAspect(bVal: WordBool);
function GetBackgroundColor: WideString;
procedure SetBackgroundColor(const pVal: WideString);
function GetStereoState: WordBool;
function GetLiveState: WordBool;
function GetShowStatistics: WordBool;
procedure SetShowStatistics(bVal: WordBool);
function GetShowPreferences: WordBool;
procedure SetShowPreferences(bVal: WordBool);
function GetShowAbout: WordBool;
procedure SetShowAbout(bVal: WordBool);
function GetOriginalSize: WordBool;
procedure SetOriginalSize;
function GetDoubleSize: WordBool;
procedure SetDoubleSize;
function GetFullScreen: WordBool;
procedure SetFullScreen;
function GetEnableContextMenu: WordBool;
procedure SetEnableContextMenu(bVal: WordBool);
function GetEnableOriginalSize: WordBool;
procedure SetEnableOriginalSize(bVal: WordBool);
function GetEnableDoubleSize: WordBool;
procedure SetEnableDoubleSize(bVal: WordBool);
function GetEnableFullScreen: WordBool;
procedure SetEnableFullScreen(bVal: WordBool);
function GetEnableMessageBox: WordBool;
procedure SetEnableMessageBox(bVal: WordBool);
procedure SetTitle(const pVal: WideString);
procedure SetAuthor(const pVal: WideString);
procedure SetCopyright(const pVal: WideString);
function GetWantKeyboardEvents: WordBool;
procedure SetWantKeyboardEvents(bWantsEvents: WordBool);
function GetWantMouseEvents: WordBool;
procedure SetWantMouseEvents(bWantsEvents: WordBool);
function GetNumEntries: Smallint;
function GetCurrentEntry: Smallint;
function GetEntryTitle(uEntryIndex: Smallint): WideString;
function GetEntryAuthor(uEntryIndex: Smallint): WideString;
function GetEntryCopyright(uEntryIndex: Smallint): WideString;
function GetEntryAbstract(uEntryIndex: Smallint): WideString;
procedure SetCanSeek(bCanSeek: WordBool);
function GetCanSeek: WordBool;
function GetBufferingTimeElapsed: Integer;
function GetBufferingTimeRemaining: Integer;
function GetConnectionBandwidth: Integer;
function GetPreferedLanguageString: WideString;
function GetPreferedLanguageID: Integer;
function GetUserCountryID: Integer;
function GetNumSources: Smallint;
function GetSourceTransport(nSourceNum: Smallint): WideString;
function GetWantErrors: WordBool;
procedure SetWantErrors(bVal: WordBool);
function GetShuffle: WordBool;
procedure SetShuffle(bVal: WordBool);
function GetVersionInfo: WideString;
function GetLastMessage: WideString;
function GetLastErrorSeverity: Integer;
function GetLastErrorRMACode: Integer;
function GetLastErrorUserCode: Integer;
function GetLastErrorUserString: WideString;
function GetLastErrorMoreInfoURL: WideString;
procedure SetPreFetch(bVal: WordBool);
function GetPreFetch: WordBool;
procedure SetRegion(const pVal: WideString);
function GetRegion: WideString;
function GetIsPlus: WordBool;
function GetConsoleEvents: WordBool;
procedure SetConsoleEvents(bVal: WordBool);
function GetDRMInfo(const pVal: WideString): WideString;
property ControlInterface: IRealAudio read GetControlInterface;
property DefaultInterface: IRealAudio read GetControlInterface;
網頁中WMP視頻控制之使用指南
□播放方法和屬性
除播放、暫停、中止外,媒體播放器還可用下面的屬性:
掃描(Scanning)——與錄像機的快進快倒功能相似;
搜索(Seeking)——直接移到剪輯中標記的特定上演時間;
□播放
媒體播放器提供了兩種技術來指定要播放的媒體名稱(剪輯),你能夠設置 FileName 屬性,或調用 Open 方法。 若是 AutoStart 屬性的值是 true 的話,當 FileName 屬性被設置成該電影剪輯的 URL 後,該電影剪輯將開始播放;不然電影剪輯不會開始播放, 除非你調用 Play 方法。 Open 方法開始播放是異步的,它不象 Play 方法要等到其餘的進程結束後纔開始播放。
媒體播放器提供了下面的相似錄像機的屬性和方法來控制流媒體的播放:
Play、Stop、Pause 方法,來開始、中止、暫停流媒體。
PlayCount 屬性,設置文件播放的次數。
AutoRewind 屬性,肯定當中止播放時是否返回到電影剪輯的開始部分。
□音頻控制
媒體播放器提供了下面的屬性來管理音頻:
Balance 屬性,肯定左右音箱的聲音平衡;
Volume 屬性,用來加大或下降音量;
Mute 屬性,用來關閉或打開聲音;
※你能夠將 ShowAudioControls 屬性設爲 true 來在控制欄添加處理聲音的控件。
□掃描
媒體播放器提供了下面的屬性用以掃描:
FastForward 方法,快進;
FastReverse 方法,快倒;
Rate屬性,改變播放速率;
※要想使電影剪輯能被掃描,必須將 CanScan 和 AllowScan 屬性設爲 true。
□搜索
用於搜索的屬性有:
MarkerCount 屬性,指剪輯中標記的總數量;
CurrentMaker、GetMarkerName、GetMarkerTime 方法,用於返回標記信息;
MarkerHit 事件,當遇到標記時觸發;
CurrentPosition 屬性,當前位置(用秒度量),可用來將播放頭移到剪輯中指定的點;
PositionChange 事件,當設置 CurrentPosition 屬性時觸發;
※要想搜索到任意的時間,必須將 CanSeek 屬性設爲 true,要想搜索到標記點,必須將 CanSeekToMarkers 屬性設爲 true。
□媒體播放器的外觀界面
在網頁中,你能夠經過相關屬性來控制媒體播放器的哪些部分出現,哪些部分不出現。
媒體播放器包括以下元素:
Video Display Panel:視頻顯示面板;
Video Border:視頻邊框;
Closed Captioning Display Panel;字幕顯示面板;
Track Bar;搜索欄;
Control Bar with Audio and Position Controls:帶有聲音和位置控制的控制欄;
Go To Bar:轉到欄;
Display Panel:顯示面板;
Status Bar:狀態欄;
下面的屬性用來決定顯示哪個元素:
ShowControls 屬性:是否顯示控制欄(包括播放控件及可選的聲音和位置控件);
ShowAudioControls 屬性:是否在控制欄顯示聲音控件(靜音按鈕和音量滑塊);
ShowPositionControls 屬性:是否在控制欄顯示位置控件(包括向後跳進、快退、快進、向前跳進、預覽播放列表中的每一個剪輯);
ShowTracker 屬性:是否顯示搜索欄;
ShowDisplay 屬性:是否顯示顯示面板(用來提供節目與剪輯的信息);
ShowCaptioning 屬性:是否顯示字幕顯示面板;
ShowGotoBar 屬性:是否顯示轉到欄;
ShowStatusBar 屬性:是否顯示狀態欄;
□播放列表
媒體播放器提供下面的方法來訪問播放列表中的剪輯:
Next 方法,跳到節目(播放列表)中的下一個剪輯;
Previous 方法,跳回到節目中的上一個剪輯;
媒體播放器的一個特性是可以預覽節目中的每個剪輯,使用以下屬性:
PreviewMode 屬性,決定媒體播放器當前是否處於預覽模式;
CanPreview 屬性,決定媒體播放器可否處於預覽模式;
在windows 媒體元文件中,能夠爲每個剪輯指定預覽時間——PREVIEWDURATION,若是沒有指定,那麼默認的預覽時間是10秒鐘。
你也能夠用Windows 媒體元文件來添加 watermarks 與 banners,元文件也支持插入廣告時的無間隙流切換。
□節目信息
使用 GetMediaInfoString 方法能夠返回相關剪輯或節目的以下信息:
文件名:File name
標題:Title
描述:Description
做者:Author
版權:Copyright
級別:Rating
URLs:logo icon、watermark、banner的地址
剪輯信息能夠放在媒體文件中,也能夠放在Windows 媒體元文件中,或者二者都放。若是在元文件中指定了剪輯信息,那麼用 GetMediaInfoString 方法返回的就是元文件中的信息,而不會返回剪輯中包含的信息。
在元文件中,附加信息能夠放置在每個剪輯或節目的 PARAM標籤中。你能夠爲每一個剪輯添加任意多個 PARAM 標籤,用來存儲自定義的信息或連接到相關站點。在 PARAM 標籤中的信息能夠經過 GetMediaParameter 方法來訪問。
下面的屬性返回有關大小和時間的信息:
ImageSourceHeight、ImageSourceWidth:返回圖像窗口的顯示尺寸;
Duration 屬性,返回剪輯的長度(秒), 要檢測這個屬性是否包含有效的數值,請檢查IsDurationValid 屬性。(對於廣播的視頻,其長度是不可預知的)。
□字幕
你能夠用 .smi 文件來爲你的節目添加字幕。媒體播放器支持下面的屬性來處理字幕:
SAMIFileName 屬性,指定 .smi 文件的名字;
SAMILang 屬性,指定字幕的語言(若是沒有指定則使用第一種語言);
SAMIStyle 屬性,指定字幕的文字大小和樣式;
ShowCaptioning 屬性,決定是否顯示字幕顯示面板;
□腳本命令
伴隨音頻、視頻流,你能夠在流媒體文件中加入腳本命令。腳本命令是多媒體流中與特定時間同步的多對Unicode串。第一個串標識待發命令的類型,第二個串指定要執行的命令。
當流播放到與腳本相關的時間時,控件會向網頁發送一個 scriptCommand事件,而後由事件處理進程來響應這個事件。腳本命令字符串會做爲腳本命令事件的參數傳遞給事件處理器。
媒體播放器會自動處理下面類型的內嵌腳本命令:
1)URL型命令:當媒體播放器控件收到一個URL型的命令時,指定的URL會被裝載到用戶的默認瀏覽器。若是媒體播放器嵌在一個分幀的HTML文件中,URL頁能夠裝載到由腳本命令指定的幀內。若是腳本命令沒有指定一個幀,將由 DefaultFrame 屬性決定將 URL 頁裝入哪一幀。
你能夠經過設置 InvokeURLs 屬性來決定是否自動處理 URL 型的腳本命令。若是這個屬性的值爲 false ,媒體播放器控件將忽視 URL型命令。可是腳本命令事件仍會觸發,這就容許你有選擇地處理 URL 型命令。
URL 型命令指定的是 URL 的相對地址。基地址是由 BaseURL屬性指定的。媒體播放器控件傳送的腳本命令事件的命令參數是連接好的地址。
2)FILENAME型命令:當媒體播放器控件收到一個FILENAME型的命令時,它將 FileName屬性設置爲腳本命令提供的文件,以後媒體播放器會打開這個文件開始播放。 媒體播放器控件老是自動處理 FILENAME 型命令,不象 URL 型命令,它們不能被禁止。
3)TEXT型命令:當媒體播放器控件收到一個 TEXT型的命令時,它會將命令的內容顯示在控件的字幕窗口。內容能夠是純文本的,也能夠是 HTML。
4)EVENT型命令:當媒體播放器控件收到一個 EVENT型的命令時,它會在媒體元文件中搜索 EVENT 元素的 NAME 屬性。若是 NAME 屬性與腳本命令中的第二個字符串匹配,媒體播放器控件就執行包含在 EVENT 元素中的條目。
5)OPENEVENT型命令:當媒體播放器控件收到一個 OPENEVENT型的命令時,它會在媒體元文件中檢查 EVENT 元素,並打開匹配的標題,但不播放,直到收到來自 EVENT型命令的同名真實事件。
□捕捉鍵盤和鼠標事件
EnableContextMenu 與 ClickToPlay 屬性爲用戶提供了在圖像窗口進行操做的方法。
若是 EnableContextMenu 屬性爲 true ,在圖像窗口右擊鼠標能夠打開關聯菜單,若是將ClickToPlay 屬性設爲 true ,用戶能夠單擊圖像窗口進行播放與暫停的切換。
要接收鼠標移動和單擊事件,請將 SendMouseMoveEvents 和 SendMouseClickEvents 屬性設爲 true 。鼠標事件有:
MouseDown,當用戶按下鼠標時產生;
MouseUp,當用戶釋放鼠標時產生;
MouseMove,當用戶移動鼠標時產生;
Click,當用戶在媒體播放器上單擊鼠標按鈕時產生;
DbClick,當用戶在媒體播放器上雙擊鼠標按鈕時產生;
要接收鍵盤事件,請將 SendKeyboardEvents 屬性設爲 true 。鍵盤事件有:
KeyDown,當用戶按下一個鍵時產生;
KeyUp,當用戶釋放一個鍵時產生;
KeyPress,當用戶按下並釋放一個鍵時產生;
□監測流狀態與網絡連接
流狀態屬性包括:
PlayState:播放狀態;
OpenState:打開狀態;
Bandwidth:帶寬;
支持的事件有:
OpenStateChange:打開狀態改變(僅當SendOpenStateChangeEvents屬性爲true時觸發)
PlayStateChange:播放狀態改變(僅當SendPlayStateChangeEvents屬性爲true時觸發)
EndOfStream:流結束時觸發;
NewStream:打開新流時觸發;
網絡接收屬性包括:
ReceptionQuality:接收質量;
ReceivedPackets:已經收到的包;
LostPackets:丟失的包;
監測緩衝的屬性有:
BufferingTime:緩衝時間;
BufferingCount:緩衝次數;
BufferingProgress:緩衝進程;
Buffering:緩衝事件;
□錯誤處理
媒體播放器提供了內建的錯誤處理功能——在對話框或狀態欄顯示錯誤信息。 另外,你能夠本身添加錯誤處理程序。若是 SendErrorEvents 屬性設置爲 true,將不會顯示錯誤框,而是發送錯誤事件;若是 SendErrorEvents 屬性設置爲 false,將顯示錯誤框,而是發送錯誤事件。
媒體播放器支持下面的錯誤處理事件:
Error 事件,指有危險性錯誤發生;
Warning 事件,指發生了非危險性的錯誤;
當你的應用程序接收到一個錯誤事件,你能夠檢測下面的屬性來肯定具體的錯誤信息:
HasError:檢測目前的媒體播放器是否有錯誤;
ErrorCode:提供與該類型錯誤相關的代碼值;
ErrorDescription:提供錯誤的描述信息;
ErrorCorrection:指定媒體播放器對該類型的錯誤進行校訂;
□播放CD
媒體播放器將 CD 看做(在每一個音軌的開頭具備標記的)單一音頻流。 要在網頁中使用CD,你須要將 FileName 屬性設爲 CDAUDIO:,必須帶有冒號,以下所示:
<HTML>
<HEAD><TITLE>CD Audio Playback Example</TITLE></HEAD>
<BODY>
<OBJECT ID="MediaPlayer"
CLASSID="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
WIDTH="320"
HEIGHT="508"
STYLE="position:absolute; left:0px; top:70px;" >
<PARAM NAME="FileName" value="/cdaudio:">
<PARAM NAME="AutoStart" VALUE="0">
<PARAM NAME="ShowControls" VALUE="1">
<PARAM NAME="ShowStatusBar" VALUE="1">
<PARAM NAME="ShowDisplay" VALUE="1">
</OBJECT>
</BODY>
</HTML>
以後你能夠用 Play 方法播放 CD 了。
你能夠在 windows 媒體元文件中指定播放順序以及每一個音軌的信息。示例以下:
<ASX VERSION="3.0">
<TITLE>CD Audio with the Media Player</TITLE>
<AUTHOR>Windows Media Technologies</AUTHOR>
<COPYRIGHT>(c) 1999, Microsoft, Inc.</COPYRIGHT>
<ENTRY>
<TITLE>Track 1: Title 1</TITLE>
<REF href="/cdaudio:" />
<STARTMARKER NUMBER="1"/>
<ENDMARKER NUMBER="2"/>
</ENTRY>
<ENTRY>
<TITLE>Track 2: Title 2</TITLE>
<REF href="/cdaudio:" />
<STARTMARKER NUMBER="2"/>
<ENDMARKER NUMBER="3"/>
</ENTRY>
<ENTRY>
<TITLE>Track 3: Title 3</TITLE>
<REF href="/cdaudio:" />
<STARTMARKER NUMBER="3"/>
<ENDMARKER NUMBER="4"/>
</ENTRY>
<ENTRY>
<TITLE>Track 4: Title 4</TITLE>
<REF href="/cdaudio:" />
<STARTMARKER NUMBER="4"/>
</ENTRY>
</ASX>框架