html —— 媒體播放object、embed、vedio等元素
一、object元素
<object> 標籤用於包含物件,比如影象、音訊、視訊、Java applets、ActiveX、PDF 以及 Flash。
1、object標籤屬性:
HTML5 中已廢棄:
archive :
用來指名物件資源列表的以空格分隔的 URI 列表。
border :
元素周圍的邊框的寬度,單位為畫素。
classid :
物件實現的 URI,可以同時與 data 屬性使用,或者使用 data 屬性替代。
codebase :
解析 classid,data 或者 archive 中定義的相對路徑的根路徑,如果沒有定義,預設為當前文件的 base URI。
codetype :
classid 定義的 data 的內容型別(MIME 型別)。
declare :
取值為布林的屬性可以設定這個元素為僅宣告的格式。物件必須被隨後的 <object> 元素例項化。在 HTML5 中,完整的重複 <object> 元素,可以重用元素。
standby:
物件的實現和資料載入過程中,瀏覽器可以顯示的資訊。
tabindex :
當前元素在文件 Tab 導航中的順序。
HTML5中仍保留:
data:
一個合法的 URL 作為資源的地址,,需要為 data 和 type 中至少一個設定值。
height:資源顯示的高度,單位是 CSS 畫素。
name:
瀏覽上下文名稱(HTML5),或者控制元件名稱(HTML 4)。
type
data 指定的資源的 MIME 型別,需要為 data 和 type 中至少一個設定值。
usemap
指向一個 <map> 元素的 hash-name;格式為 ‘#’ 加 map 元素 name 元素的值。
width
資源顯示的寬度,單位是 CSS 畫素。
HTML5中新增:
form:
物件元素關聯的 form 元素(屬於的 form)。 取值必須是同一文件下的一個 <form> 元素的 ID。
說明:
(1)、由屬性解釋可知,如果object引入的是物件,則classid即是物件的url,若是媒體檔案,則classid也是檔案的url,故可將媒體檔案視為物件,此時classid即與data屬性的作用相同。經實踐,下面的用法也是可以的:(僅在IE 中測試可行,Opera中會導致出錯)
<object WIDTH="550" HEIGHT="400" id="myMovieId" classid="樂秀視訊第2部.mp4" >
<param name="filename" value="樂秀視訊第2部.mp4">
</object>
(2)、還有一條,需要為data和type中至少一個設定值。上面的例子中相當於為data設定了值(僅IE),所以不用再寫。通常設定data。
(3)、經實踐,用object播放媒體時,無論設定data還是classid,在IE中播放都必須新增name="filename"的param元素,否則無法播放。
綜合考慮,用object播放媒體時,設定object元素的data屬性與param元素的name="filename"的value屬性。
2、object與param標籤
大家都說param標籤可設定object的執行時狀態,但具體param的name有哪些取值,估計與object引用的播放器有關,自己硬是沒找到相關文件。列幾個常用的值吧:
<param name="url" value=""/>
<param name="src" value=""/>
<param name="filename" value=""/>IE中 必須設定
<param name="autostart" value="true|false"/>
<param name="allowfullscreen" value="true|false"/>
<param name="wmode" value="transparent"/>
3、使用objec的示例:
最簡單的示例:
<object id="" width="" height="" style="" type="data所引用檔案的MIME 型別名" data="引用檔案的url">
<param name="filename" value="帶字尾的檔名"/>
</object>
說明:
1、object標籤的classid屬性值即所引用元件(此處即播放器)在系統中註冊的CLSID,瀏覽器通過此clsid找到元件並執行。此CLSID也可以是伺服器上註冊的元件的CLSID。CLSID需要在系統登錄檔中查詢。
2、對於播放媒體,若使用object,則其data屬性是必須的。此外,IE瀏覽器還必須新增name="filename"的param元素才能正確播放媒體。
此外,感覺name為src與url及controller的param元素沒起什麼作用,能否正常播放只取決於object的data屬性是否正確設定。
看了愛奇藝的視訊播放的html,發現也是用的object元素,但不知它是如何實現自定義控制介面與各種事件的。
4、控制object播放媒體的暫停與播放
object元素對應物件的屬性與方法:
屬性:
playState:播放狀態,0:未開始播放,1:暫停中,2:正在播放
方法:
play():播放;
pause():暫停,再次點播放時從當前位置繼續播放;
stop():停止,再次點播放時重新開始。
示例:
<object WIDTH="550" HEIGHT="400" id="myMovieId" data="樂秀視訊第2部.mp4" type="video/mp4">
<param name="filename" value="樂秀視訊第2部.mp4">
</object>
<button onclick="pauseVideo()">暫停視訊</button>
<script type="text/javascript">
function pauseVideo() {
var player=document.getElementById("myMovieId");
alert(player.playState);
if(player.playState==2)
player.pause();
else
player.play();
}
</script>
說明:
(1)、應該還有更多方法與屬性,但自己未找到相關文件,後面再補全;
(2)、所列的幾個屬性與方法在Opera中提示未定義,可能是Opera對object支援較弱,也可能是自己的Opera中未安裝flash外掛的原因。
二、embed元素
embed標籤是html5中新標籤,幾乎所有瀏覽器都支援。擁有width、height、src、type(src引用檔案的MIME 型別)四個屬性。
使用:
<embed src="movie.swf" height="200" width="200"/>
對於不支援object的瀏覽器,可以使用如下方式,瀏覽器將跳過object,識別embed元素:
<object width="400" height="40" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0">
<param name="SRC" value="bookmark.swf">
<embed src="bookmark.swf" width="400" height="40"></embed>
</object>
三、video元素
也是html5中新標籤。
autoplay | 如果出現該屬性,則視訊在就緒後馬上播放。 | |
controls | 如果出現該屬性,則向用戶顯示控制元件,比如播放按鈕。 | |
pixels | 設定視訊播放器的高度。 | |
loop | loop | 如果出現該屬性,則當媒介檔案完成播放後再次開始播放。 |
muted | muted | 規定視訊的音訊輸出應該被靜音。 |
URL | 規定視訊下載時顯示的影象,或者在使用者點選播放按鈕前顯示的影象。 | |
preload |
如果出現該屬性,則視訊在頁面載入時進行載入,並預備播放。 如果使用 "autoplay",則忽略該屬性。 |
|
src | url | 要播放的視訊的 URL。 |
width | pixels | 設定視訊播放器的寬度。 |
注意:區別video的autoplay屬性與object中param的name="autostart"。
對應的Video物件的事件檢視MDN 網站。
為相容所有裝置所有瀏覽器,常用播放視訊方法示例:
<video width="320" height="240" controls="controls">
<source src="movie.mp4" type="video/mp4" />
<source src="movie.ogg" type="video/ogg" />
<source src="movie.webm" type="video/webm" />
<object data="movie.mp4" width="320" height="240">
<embed src="movie.swf" width="320" height="240" />
</object>
</video>
注:
video與embed為html5元素,所以必須宣告文件型別為html。
四、播放音訊
同樣可使用object、embed,此外html5也有audio標籤與video相對應,且用法相同。
參考:MDN、W3School
上面都只是實現最基礎的模仿功能,實際上預設的元件外觀比較難看,後面有空再細細整理各元素物件的所有屬性,並實現一個類似愛奇藝播放器的介面。