[HTML]HTML5 New Feature - video tag

  • 10820
  • 0
  • 2012-02-12

[HTML]HTML5 New Feature - video tag

HTML5新增Video標籤,目前支援的瀏覽器有

Internet ExplorerFirefoxOperaGoogle ChromeSafari

 

該標籤主要是能讓以往必須使用Activex或是Plug-In才能播放的影片可以直接交由瀏覽器去撥放,使用上就像下面這樣:


<video src="movie.webm" poster="movie.jpg" controls>
        This is fallback content to display if the browser
        does not support the video element.
</video>

 

簡單的使用只要透過video標籤的src attribute去指定撥放的影片就可以了。這邊要注意的是每個瀏覽器在實作上有些差異,並不是每個瀏覽器都能吃所有的影片格式,目前支援的狀況大概如下圖所示(圖片來自HTML5 video  - wiki):

image

 

若要能兼容於不同的瀏覽器,我們可以找出兼容的影片格式,使用較為兼容的影片格式來播放,也可以同時提供不同影片格式的影片來源讓瀏覽器選取適合的播放,或是加入當影片不支援時的處理動作(可以顯示錯誤訊息,或是採用舊有的embed方式去撥放)。


<video>  
    <source src="video.ogg">  
    <source src="video.m4v">  
    Sorry~no support video or browser
</video> 

image

 

接著讓我們更進一步的了解Video標籤,Video標籤具備下列Attribute,在編寫HTML時可視各自的需求使用。

Attribute Description
autoplay 自動撥放
controls 顯示播放控制列
height 撥放器高度
loop 重複播放
muted 靜音
poster Specifies an image to be shown while the video is downloading, or until the user hits the play button
preload Specifies if and how the author thinks the video should be loaded when the page loads
src 影片位置
width 撥放器寬度

 

像是src attribute是用來指定要播放的影片。

 

image

 

controls attribute是用來指定影片播放器必須要提供播放控制列。

image

 

autoplay attribute是用來指定在播放器載入後立即自動撥放影片。

image

 

muted attribute是用來指定將影片播放器設為靜音。

image

 

而poster attribute則是設定撥放器在播放前要顯示的圖片。

image

 

有興趣的也可以直接至w3schools提供的Editor或是HTML5 Video element maker去嚐試語法並觀察其變化

image

image

 

除了video標籤的attribute之外,也可以透過程式去做些控制,像是播放/暫停影片,或是取得目前播放位置...等。

play() 播放影片
pause() 暫停播放
currentTime 目前影片播放位置
readyState

影片讀取狀態

  • HAVE_NOTHING = 0
  • HAVE_METADATA = 1
  • HAVE_CURRENT_DATA
  • HAVE_FUTURE_DATA = 2
  • HAVE_ENOUGH_DATA = 3
paused 影片是否為暫停狀態
muted 是否為靜音。
volume 取得或設定音量值。
ended 播放指標是否已經到最後。

 

這邊實際實作個簡單的範例,HTML中放入video標籤並指定撥放的影片位置,並加個按鈕來控制影片的播放或是暫停,而在JavaScript中則是取得video與button的element,透過video element去呼叫play或是pause,以達到我們期望的效果。


<html>
<body>
<video id="video">
    <source src="video.mp4" type="video/mp4"/>
</video>
<input type="button" id="play" value="Play">

<script>
var addEvent = (function () {
  if (document.addEventListener) {
    return function (el, type, fn) {
      if (el && el.nodeName || el === window) {
        el.addEventListener(type, fn, false);
      } else if (el && el.length) {
        for (var i = 0; i < el.length; i++) {
          addEvent(el[i], type, fn);
        }
      }
    };
  } else {
    return function (el, type, fn) {
      if (el && el.nodeName || el === window) {
        el.attachEvent('on' + type, function () { return fn.call(el, window.event); });
      } else if (el && el.length) {
        for (var i = 0; i < el.length; i++) {
          addEvent(el[i], type, fn);
        }
      }
    };
  }
})();

var video = document.getElementById('video');
var togglePlay = document.getElementById('play');

addEvent(togglePlay, 'click', function () {
    if (video.paused) {
      video.play();
      this.value = "pause";
    } else {
      video.pause();
      this.value = "play";
    }
});
</script>

</body>
</html> 

 

image

 

Link