天天看點

05. Web大前端時代之:HTML5+CSS3入門系列~H5 多媒體系

1.引入

概述

音頻檔案或視訊檔案都可以看做是一個容器檔案(類似于壓縮的zip)

編解碼器就是讀取特定的容器格式,對其中的音頻與視訊軌進行解碼,然後實作播放

解碼器

解碼器(decoder),是一種輸入模拟視訊信号并将它轉換為數字信号格式,以進一步壓縮和傳輸的硬體/軟體裝置

視訊格式

Ogg = 帶有 Theora 視訊編碼和 Vorbis 音頻編碼的 Ogg 檔案

MPEG4 = 帶有 H.264 視訊編碼和 AAC 音頻編碼的 MPEG 4 檔案

WebM = 帶有 VP8 視訊編碼和 Vorbis 音頻編碼的 WebM 檔案

支援狀況

audio的canPlayType可以檢測浏覽器支援的檔案格式

線上檢測(右擊檢視源碼)

http://dnt.dkill.net/DNT/HTML5/demo/check.html

2.video

逆天測試僅供參考

測試浏覽器:谷歌,360,火狐,Edge,IE :mp4格式的基本上都支援了,wmv格式的基本上都不支援,avi格式的火狐不支援

案例

1.簡單案例:

<video src="images/big.mp4" controls loop>你的浏覽器不支援</video>

<video src="images/big.mp4" poster="http://dnt.dkill.net/Images/banner.jpg" controls loop></video>

說明:

loop循環播放

controls顯示工具欄

<video src="images/big.mp4" controls>你的浏覽器不支援</video>

05. Web大前端時代之:HTML5+CSS3入門系列~H5 多媒體系

poster 視訊預覽圖

autoplay自動播放

<video src="images/big.mp4" controls autoplay loop>你的浏覽器不支援</video>

preload是否在頁面加載後載入視訊如果設定了 autoplay 屬性,則忽略該屬性

屬性值:

auto - 當頁面加載後載入整個視訊

meta - 當頁面加載後隻載入中繼資料 (有些是浏覽器是metadata)

none - 當頁面加載後不載入視訊

<video src="images/big.mp4" controls preload="auto">你的浏覽器不支援</video>

2.多源案例

浏覽器自動選擇第一個可識别的檔案來播放

<video controls>

<source src="http://www.w3school.com.cn/i/movie.mp4" type="video/mp4" />

<source src="http://www.w3school.com.cn/i/movie.ogg" type="video/ogg"/>

</video>

05. Web大前端時代之:HTML5+CSS3入門系列~H5 多媒體系

3.小播放器

<video id="myvideo" src="../images/big.mp4"poster="http://dnt.dkill.net/Images/banner.jpg" controls loop>回家休息休息。。。</video>

<script type="text/javascript">

var musicObj = $("#myvideo");

//單擊控制播放與否

musicObj.click(function () {

if (this.paused) {

this.play();

} else {

this.pause();

}

});

</script>

05. Web大前端時代之:HTML5+CSS3入門系列~H5 多媒體系

3.audio

學過video之後這個就小兒科了,簡單介紹一下

基本用法

<audio src="http://dnt.dkill.net/DNT/music/棋子.mp3" controls></audio>

<audio controls>

<source src="http://www.dkill.net/DNT/music/棋子.ogg" type="audio/ogg" />

<source src="http://dnt.dkill.net/DNT/music/棋子.mp3" type="audio/mp3" />

</audio>

4. 擴充内容

大綱

在所有屬性中,隻有 videoWidth 和 videoHeight 屬性是立即可用的。在視訊的中繼資料已加載後,其他屬性才可用。

浏覽器測試

代碼和測試結果看備注(基本上都是滿足的)

屬性

隻讀

ended

傳回true代表播放結束

paused

ture代表暫停播放,false代表正在播放

seeking

傳回使用者是否正在音頻/視訊中進行查找

true代表查找

duration

擷取視訊總時間(機關秒)

currentSrc

傳回媒體url

readyState

傳回音頻/視訊目前的就緒狀态

0 = HAVE_NOTHING - 沒有關于音頻/視訊是否就緒的資訊

1 = HAVE_METADATA - 關于音頻/視訊就緒的中繼資料

2 = HAVE_CURRENT_DATA - 關于目前播放位置的數

據是可用的,但沒有足夠的資料來播放下一幀/毫秒

3 = HAVE_FUTURE_DATA - 目前及至少下一幀的資料是可用的

4 = HAVE_ENOUGH_DATA - 可用資料足以開始播放

networkState

傳回音頻/視訊的目前網絡狀态

0 = NETWORK_EMPTY - 音頻/視訊尚未初始化

1 = NETWORK_IDLE - 音頻/視訊是活動的且已選取資源,但并未使用網絡

2 = NETWORK_LOADING - 浏覽器正在下載下傳資料

3 = NETWORK_NO_SOURCE - 未找到音頻/視訊來源

傳回對象

error

this.error.code

1 = MEDIA_ERR_ABORTED - 取回過程被使用者中止

2 = MEDIA_ERR_NETWORK - 當下載下傳時發生錯誤

3 = MEDIA_ERR_DECODE - 當解碼時發生錯誤

4 = MEDIA_ERR_SRC_NOT_SUPPORTED - 不支援音頻/視訊

console.log(this.error.code);

played

獲得視訊中以秒計的首段已播放的範圍(部分)

屬性值

length - 獲得音頻/視訊中已播範圍的數量

start(index) - 獲得某個已播範圍的開始位置

end(index) - 獲得某個已播範圍的結束位置

擷取目前播放時間:this.played.end(0)

seekable

表示音頻/視訊中的可尋址部分

length - 獲得音頻/視訊中可尋址範圍的數量

本文轉自毒逆天部落格園部落格,原文連結:http://www.cnblogs.com/dunitian/p/5141492.html,如需轉載請自行聯系原作者

繼續閱讀