<!DOCTYPE html />
<html>
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
        <!-- audio元素與video元素屬性:
             src屬性:指定播放媒體的URL地址
             autoplay屬性:媒體是否在頁面加載后自動播放(裸體屬性)
             preload屬性:指定視頻,音頻數據是否預加載
                          none:不進行預加載
                          metadata:只預加載媒體元數據(媒體字節數,第一幀,播放列表,持續時間)
                          auto(默認):預加載全部視頻音頻
             poster屬性(video元素獨有):視頻不可用,向用戶展示一替代用圖片
             loop屬性:指定是否循環播放音頻,視頻(裸體屬性)
             controls屬性:是否為音頻,視頻添加瀏覽器默認播放控制條(裸體屬性)
             width,height屬性(video元素獨有):指定視頻寬度,高度
             error屬性(只讀):正常情況下,error屬性值為null,只要有錯誤,error屬性返回MediaError對象,錯誤狀態有4個,通過code獲取
                             MEDIA_ERR_ABORTED(1):媒體下載由於用戶操作被終止
                             MEDIA_ERR_NETWORK(2):確認媒體資源可用,下載時出現網絡錯誤,下載被終止
                             MEDIA_ERR_DECODE(3):確認媒體資源可用,解碼時錯誤
                             MEDIA_ERR_SRC_NOT_SUPPORTED(4):媒體格式不支持
             networkState屬性(只讀):在媒體數據加載中,讀取當前網絡狀態
                                    NETWORK_EMPTY(0):處於初始狀態
                                    NETWORK_IDLE(1):瀏覽器已選好編碼格式播放媒體,但尚未建立網絡連接
                                    NETWORK_LOADING(2):媒體數據加載中
                                    NETWORK_NO_SOURCE(3):沒有支持的編碼格式,不加載
             currentSrc屬性(只讀):讀取播放中的媒體數據URL地址
             buffered屬性(只讀):返回一個實現TimeRanges接口的對象,以確認瀏覽器是否已緩存媒體數據
             readyState屬性(只讀):返回媒體當前播放位置就緒狀態
                                  HAVE_NOTHING(0):沒有獲取媒體任何信息,當前位置無可播放數據
                                  HAVE_METADATA(1):獲取到的媒體數據無效,不可播放
                                  HAVE_CURRENT_DATA(2):當前播放位置已有數據可播放,但沒有獲取讓播放器前進的下一數據
                                  HAVE_FUTURE_DATA(3):當前播放位置已經有數據可播放,且獲取到讓播放器前進的數據
                                  HAVE_ENOUGH_DATA(4):當前播放位置已經有數據可以播放,同時獲取讓播放器前進的數據,且瀏覽器已某速度加載,保證後續播放
             seeking,seekable屬性(只讀):seeking屬性返回一布爾值,表示瀏覽器是否正在請求某一特定播放位置數據
                                  seekable屬性返回一TimeRanges對象,表示請求道的數據時間範圍
             currentTime,startTime(只讀),duration(只讀)屬性:currentTime讀取設置當前媒體播放位置
                                                            startTime讀取媒體播放開始時間,通常為0
                                                            duration讀取媒體文件總播放時間
                                                            三者值均為時間,單位秒
             played,paused,ended屬性(只讀):played返回一TimeRanges對象,可讀取媒體已播放部份時間段
                                     paused返回一布爾值,表示是否處於暫定播放狀態
                                     ended返回一布爾值,表示是否播放完畢
             defaultPlaybackRate,playbackRate屬性:defaultPlaybackRate讀取或修改媒體默認播放速率
                                                  playbackRate讀取或修改媒體當前的播放速率
             volume,muted屬性:volume讀取修改媒體的播放音量,範圍0~1
                              muted讀取或修改媒體的靜音狀態,true處於靜音

             audio元素與video元素方法:
             play():播放媒體,將paused屬性值為false
             pause():暫停播放,將paused屬性值為true
             load():重新載入媒體播放,自動修改playbackRate屬性值為defaultPlaybackRate,自動將元素error值null
             canPlayType(type):測試瀏覽器是否支持指定媒體類型,返回值:
                                "":瀏覽器不支持該媒體類型
                                "maybe":瀏覽器可能支持該媒體類型
                                "probably":瀏覽器確定支持該媒體類型

             事件介紹:
             loadstart:瀏覽器開始在尋找媒體數據
             progress:瀏覽器正在獲取媒體數據
             suspend:瀏覽器暫停獲取媒體數據,但下載過程並未結束
             abort:瀏覽器在下載全部媒體數據前終止獲取媒體數據,但並非由錯誤引起
             error:獲取媒體數據過程中出錯
             emptied:所在網絡突然變為未初始化狀態
             stalled:瀏覽器獲取媒體數據失敗
             play:即將開始播放
             pause:暫停播放
             loadedmetadata:瀏覽器獲取完媒體時長和字節數
             loadeddata:瀏覽器加載完畢媒體數據,準備播放
             waiting:播放過程得不到下一幀而暫停播放(下一幀未加載完),但很快會得到下一幀
             playing:正在播放
             canplay:瀏覽器能夠播放媒體,但播放其間需緩衝一會
             canplaythrough:瀏覽器能播放媒體,不需要緩衝
             seeking:seeking屬性變為true,瀏覽器正在請求數據
             seeked:seeking屬性變為false,瀏覽器停止請求數據
             timeupdate:當前播放位置被改變
             ended:播放結束后停止播放
             ratechange:defaultplaybackRate,playbackRate屬性改變
             durationchange:播放時長被改變
             volumechange:volume,muted屬性被改變
         -->
        <audio src="test.mp3">您的瀏覽器不支持audio元素</audio>
        <video width="640" height="360" src="test.mp4" poster="CantUse.jpg">您的瀏覽器不支持video元素</video>
        <video>
            <!-- source元素為同一個媒體數據指定多個播放格式與編碼方式
                 確保瀏覽器可以從中選擇一種自己支持的播放格式進行播放
                 瀏覽器會從上往下判斷對該播放格式是否支持,直到可以支持的播放格式為止
                 source屬性:
                 src屬性:指播放媒體的URL地址
                 type屬性:媒體文件的MIME類型,codes表示所使用的媒體編碼格式
                           該屬性最好不要省略,方便瀏覽器判斷是否支持該格式
             -->
            <source src="sample.ogv" type="video/ogg;codecs='theora,vorbis'" />
            <source src="sample.mov" type="video/quicktime" />
        </video>
        <video id="myVideo" src="sample.mp4" />
        <div id="netState"></div>
        <script type="text/javascript">
            var video = document.getElementById("myVideo");
            //讀取播放錯誤
            video.addEventListener("error", function () {
                var error = video.error;
                switch (error.code) {
                    case 1:
                        alert("視頻下載被終止");
                        break;
                    case 2:
                        alert("網絡錯誤,視頻下載被終止");
                        break;
                    case 3:
                        alert("解碼失敗");
                        break;
                    case 4:
                        alert("不支持播放視頻格式");
                        break;
                }
            }, false);

            //讀取網絡狀態
            video.addEventListener("progress", function (e) {
                var netState = document.getElementById("netState");
                if (video.networkState == 0) {
                    netState.innerHTML = "初始";
                }
                else if (video.networkState == 1) {
                    netState.innerHTML = "網絡錯誤";
                }
                else if (video.networkState == 2) {
                    netState.innerHTML = "加載中...[" + e.loaded + "/" + e.total + " byte]";
                }
                else if (video.networkState == 3) {
                    netState.innerHTML = "加載失敗";
                }
            }, false);
        </script>
    </body>
</html>