Html5音頻和視頻播放示例

b573 9年前發布 | 9K 次閱讀 HTML HTML5

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>html5中的音頻和視頻</title>

</head> <body>

<!--html4中的音頻視頻播放方式 代碼冗雜,加載失敗無法播放,一片空白..需要flash支持 --> <object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="500" height="400" codebase="swflash.cab#version=6,0,10,0">

   <param name="allowFullScreen" value="true" />

   <embed src="1117786.mp4"  autostart="0" type="application/x-shockwave-flash" width="500" height="400">
   </embed>

</object>

<!--html5音視頻播放 autoplay:自動播放, controls;顯示控制條, loop:是否循環播放, preload:{預加載處理 auto:自動全部加載音視頻 none:不加載 metadata:預加載元數據(媒體字節數,第一幀,播放列表,持續時間等) }, poster:(video元素獨有)當預加載的視頻不存在時,顯示一張默認的圖片, error:正常情況下為null,出現錯誤返回一個MediaError對象,有四種狀態:

       MEDIA_ERR_ABORTED (數字為1):媒體下載過程中由于用戶操作原因終止;
       MEDIA_ERR_NETWORK (數字為2):網絡錯誤媒體下載終止
        MEDIA_ERR_DECODE (數字為3):媒體解碼錯誤
         MEDIA_ERR_SRC_NOT_SUPPORTED (數字為4):媒體格式不支持,

net

--> <!--http://v.youku.com/v_show/id_XMjE4MDU1MDE2.html--&gt; <video id="video" src="1117786.mp4" preload="a" loop="loop" autoplay="autoplay" controls="controls" width="500px" height="450px">

   您的瀏覽器不支持video!
   <!--source :為媒體文件指定多個播放格式和編碼方式-->

<source src="1117786.mp4" type="video/ogg">

   <script type="text/javascript">
       var video = document.getElementById("video");
       //監聽錯誤信息
       video.addEventListener("error",function(){

           var error = video.error;
           var code = error.code;
           switch (code){
               case 1 :
                   console.info("視頻加載被終止");
                   break;
               case 2 :
                   console.info("網絡原因,視頻加載被終止");
                   break;
               case 3 :
                   console.info("解碼失敗");
                   break;
               case 4 :
                   console.info("視頻格式不支持");
                   break;

           }
       },false);
         /*
         * networkState:網絡狀態屬性,
         * 在加載過程中讀取當前網絡的狀態,
         * NETWORK_EMPTY(數字為 0):網絡鏈接初始狀態,
         * NETWORK_IDLE(數字為1):已經選擇好媒體播放格式,未建立網絡鏈接,
         * NETWORK_LOADING(數字為2):媒體加載中...,
         * NETWORK_NO_SOURCE(數字為3):沒有支持的編碼格式
         *
         * */

         //獲取networkState屬性
       /**
        * 此處針對網絡媒體而言,播放本地視頻 net===3
        * @type {Number}
        */
        var net = video.networkState;
       if(net==0){
           console.info('網絡鏈接初始狀態..');
       }else if (net==1){
           console.info('已經選擇好媒體播放格式,未建立網絡鏈接');
       }else if (net==2){
           console.info('媒體加載中...');
       }else if(net==3){
           console.info('沒有支持的編碼格式');
       }
          //currentSrc:為只讀屬性,獲取播放文件的src地址,本地文件為空
      var src =  video.currentSrc;
       console.info("對應的src為:"+src);
       //buffered:屬性
       /**
        * 返回一個對象,實現了TimeRanges接口,
        * 以確認瀏覽器是否緩存數據。
        * TimeRanges:表示一段時間范圍,大多數情況下TimeRanges對象表示的時間范圍是一個從0開始的范圍。
        *
        * TimeRanges:有一個length屬性,表示有多少個時間范圍,大多數情況下,存在時間范圍時該值為1,不存在時為0.
        * 有兩個方法,start(index) 和end(index),大多數情況下index設置為0即可;
        *
        *
        * @type {TimeRanges}
        */
       var buf = video.buffered;


       console.info(buf.length);

       /**
        * readyState屬性:返回當前媒體播放位置的就緒狀態,有五個可能值。
        * HAVE_NOTHING:(數字為0)沒有獲取到媒體的任何信息,當前播放位置沒有可播放的數據.
        * HAVE_METADATA:(數字為1)已經獲取到足夠的媒體數據,但是當前位置的媒體數據無效.
        * HAVE_CURRENT_DATA:(數字為2):當前位置已經有數據可以播放,但是沒有獲取到讓播放器前進的數據。(
        *                                   沒有獲取到下一幀的數據或者播放已經完成)
        *  HAVE_FUTURE_DATA:(數字3)表示當前位置已經獲取到數據,可獲取到讓播放器前進的數據。為視頻文件時,表示當前幀和下一幀
        *  數據都獲取到了,當當前位置是最后一幀時表示,readyState不可能為3狀態(HAVE_FUTURE_DATA)。
        *  HAVE_ENOUGH_DATA:(數字4)表示當前位置已經獲取到數據,可獲取到讓播放器前進的數據,
        *     瀏覽器以某一速度加載,保證足夠的數據進行播放。
        * @type {number|Number}
        */
       var state = video.readyState;
       console.info("readyState屬性為:"+state);
       /**
        * seekable 和seeking屬性:表示瀏覽器是否正在請求特定播放位置的數據.
        *
        * seeking屬性返回boolean值,true表示正在請求,false表示停止請求。
        *
        * seekable屬性返回一個TimeRanges對象,表示請求到的時間范圍。
        *
        * 均為只讀屬性。
        * @type {TimeRanges}
        */
       var seekable = video.seekable;
       var seeking = video.seeking;
       console.info("瀏覽器是否正在請求特定播放位置的數據:"+seeking);
       /**
        *
        * @type {Number}
        */
       var cur = video.currentTime;
       var startTime = video.startTime;//開始播放的時間,一般為0
       var duration = video.duration;//媒體文件總的播放時間.
       console.info(cur+","+startTime+","+duration);
       //瀏覽器支持不一致: Firefox:0 ,undefined,NaN  Chrome: 0,0,NaN

      /**
       *played :讀取已經播放的時間段
       * @type {TimeRanges}
       * */

       var play = video.played;

       /**
        * 是否為暫停狀態,
        * true表示暫停播放,
        * false表示正在播放
        * @type {boolean}
        */
       var paused = video.paused;
       /**
        * ended屬性:boolean值
        * true:表示播放完畢
        * false:表示正在播放
        * @type {boolean}
        */
       var ended= video.ended;

       /**
        * defaultPlaybackRate:
        * 修改或者讀取默認的播放速率
        * playbackRate:
        *  修改或者讀取當前的播放速率
        * @type {Number}
        */
       var rate = video.defaultPlaybackRate;

       var playRate =video.playbackRate;

       console.info("當前媒體的播放速率:"+rate);
       /**
        * volume屬性: 讀取或者修改默認音量,從0到1.0為靜音,1為最大音量.
        * @type {Number|CSSStyleDeclaration.volume|*}
        */
       var volume = video.volume;
         volume=0.4;
       /**
        * muted:返回boolean值。
        * true:表示靜音狀態
        * @type {boolean}
        */
       var muted = video.muted;

       console
               .info("當前音量:"+volume+","+muted);// 1 ,false


   </script>

</video>

<input type="button" onclick="pause();" value="暫停">

<input type="button" onclick="play();" value="播放">

<script> var video = document.getElementById("video"); function pause(){ video.pause(); console.warn("視頻已經暫停"); //判斷是否為暫停狀態 console.info(video.paused); }

   function play(){

       video.play();
       console.warn("視頻開始播放...");
   }


</script>

<audio >

<!--
音頻和視頻的屬性和方法,以及事件處理基本一致。
-->

</audio>

</body> </html></pre>

 本文由用戶 b573 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!