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--> <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>