1. 程式人生 > >html —— 媒體播放object、embed、vedio等元素

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

上面都只是實現最基礎的模仿功能,實際上預設的元件外觀比較難看,後面有空再細細整理各元素物件的所有屬性,並實現一個類似愛奇藝播放器的介面。