HTML5如何嵌入音頻和視頻的方法

這篇文章將為大家詳細講解有關(guān)HTML5如何嵌入音頻和視頻的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)自2013年起,先為道縣等服務(wù)建站,道縣等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為道縣企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

HTML5使用audio和video元素來嵌入音頻和視頻內(nèi)容??梢宰屩С諬TML5的瀏覽器不需要安裝任何插件就可以播放視頻和音頻。

另外還提供了與這兩個標簽相關(guān)的 JavaScript API,這樣就可以創(chuàng)建我們自己的音視頻控件咯:

<!-- 嵌入視頻 -->
<video id="player"
       src="xxx.ogg"
       poster="mymovie.jpg"
       width="300" height="200">
    Video player not available.
</video>

<!-- 嵌入音頻 -->
<audio src="xxx.mp3" id="myAudio">Audio player not available.</audio>

這兩個標簽,都必須包含 src 屬性,即要加載的媒體文件地址。width 和 height 屬性是指定視頻播放器的大小。poster 屬性是在加載視頻期間會顯示的圖像。位于開始和結(jié)束標簽之間的內(nèi)容是后備內(nèi)容,即當瀏覽器不支持這兩個標簽時會顯示這些內(nèi)容。 因為不是所有的瀏覽器都支持所有的媒體格式,所以可以指定不同的媒體來源。這時會用到 `` 標簽:

<!-- 嵌入視頻 -->
<video id="player">
    <source src="xx.webm" type="video/webm; codecs='vp8, vorbis'">
    <source src="xx.ogv" type="video/ogg; codecs='theora, vorbis'">
    Video player not available.
</video>

<!-- 嵌入音頻 -->
<audio id="myAudio">
     <source src="xx.ogg" type="audio/ogg">
     <source src="xx.mp3" type="audio/mpeg">
Audio player not available.</audio>

支持這兩個標簽的瀏覽器有這些:IE9+、Firefox 3.5+、Safari 4+、Opera 10.5+、Chrome、iOS 版的 Safari 和 Android 版的 Webkit。

1 屬性

audio 和 video 元素有這些共有的屬性:

屬性數(shù)據(jù)類型說明
autoplay布爾值獲取或設(shè)置 autoplay 標志。
buffered時間范圍已下載的緩沖的時間范圍對象。
bufferedBytes字節(jié)范圍已下載的緩沖的字節(jié)范圍對象。
bufferingRate整數(shù)下載速率,每秒平均接收到的位數(shù)。
bufferingThrottled布爾值是否對緩沖進行節(jié)流。
controls布爾值獲取或設(shè)置 controls 屬性,控制瀏覽器內(nèi)置控件的顯示與隱藏。
currentLoop整數(shù)媒體文件已循環(huán)的次數(shù)。
currentSrc字符串當前播放的媒體文件的 URL。
currentTime浮點數(shù)已經(jīng)播放的秒數(shù)。
defaultPlaybackRate浮點數(shù)獲取或設(shè)置播放速度,默認為 1 秒。
duration浮點數(shù)總播放時間,單位是秒。
ended布爾值是否已播放結(jié)束。
loop布爾值獲取或設(shè)置【播放完成后是否再從頭開始播放】。
muted布爾值獲取或設(shè)置【是否鏡音】。
networkState整數(shù)網(wǎng)絡(luò)連接狀態(tài);0:空;1:正在加載;2:正在加載原數(shù)據(jù);3:已經(jīng)加載了第一幀;4:加載完成。
paused布爾值是否暫停。
playbackRate浮點數(shù)獲取或設(shè)置【當前的播放速度】。
played時間范圍當前已經(jīng)播放的時間。
readyState整數(shù)是否已就緒。1:數(shù)據(jù)不可用;1:可以顯示當前幀;2:可以開始播放;3:可以從頭到尾播放。
seekable時間范圍可以搜索的時間范圍。
seeking布爾值播放器是否正移動到媒體文件的新位置。
src字符串媒體文件的來源,可以在任何時候重寫這個來源。
start浮點數(shù)獲取或設(shè)置【開始播放的位置】,單位是秒。
totalBytes整數(shù)當前資源所需的總字節(jié)數(shù)。
videoHeight整數(shù)視頻的高度,只適用于 video。
videoWidth整數(shù)視頻的寬度,只適用于 video。
volume浮點數(shù)獲取或設(shè)置【當前音量】從 0.0 到 1.0。

2 事件

audio 和 video 元素有這些共有的事件:

事件說明
abort下載中斷。
canplay可以播放;readyState 為 2。
canplaythrough播放可以繼續(xù),即不會被中斷;readyState 為 3。
canshowcurrentframe當前幀已下載;readyState 為 1。
dataunavailable沒有數(shù)據(jù)導(dǎo)致不能播放;readyState 為 0。
durationchange改變了 duration 的值。
emptied網(wǎng)絡(luò)連接關(guān)閉。
empty發(fā)生錯誤導(dǎo)致下載停止。
ended已播放到末尾,所以播放停止。
error下載期發(fā)生網(wǎng)絡(luò)錯誤。
load已加載完成??赡軙粡U棄,建議使用 canplaythrough。
loadeddata媒體的第一幀已加載。
loadedmetadata媒體的元數(shù)據(jù)已加載。
loadstart下載已開始。
pause播放已被暫停。
play媒體已接受到開始播放的指令。
playing媒體已開始播放。
progress正在下載。
ratechange改變了播放速度。
seeked搜索結(jié)束。
stalled瀏覽器正嘗試下載,但未接收到數(shù)據(jù)。
timeupdatecurrentTime 被非法更新。
volumechange改變了 volume 或 muted 值。
waiting播放暫停,等待下載更多的數(shù)據(jù)。

之所以定義了這么多的事件,就是為了開發(fā)人員能夠只使用少量的 HTML 和 JavaScript 就可以編寫出自定義的音、視頻播放器!

3 自定義媒體播放器

 <p class="mediaplayer">
    <p class="video">
        <video id="player"
               src="/upload/otherpica42/13916.jpg"
               width="300" height="200">
            Video player not available.
        </video>
    </p>
    <p class="controls">
        <input type="button" value="Play" id="video-btn">
        <span id="curtime">0</span><span id="duration">0</span>
    </p>
</p>

現(xiàn)在我們加一些 JavaScript ,就可以自定義一個簡單的視頻播放器:

//取得元素引用
var player = document.getElementById("player"),
        btn = document.getElementById("video-btn"),
        curtime = document.getElementById("curtime"),
        duration = document.getElementById("duration");//實測,得不到整個視頻的總體播放時間

//更新播放時間
duration.innerHTML = player.duration;

//為按鈕添加事件處理程序
EventUtil.addHandler(btn, "click", function (event) {
    if (player.paused) {
        player.play();
        btn.value = "Pause";
    } else {
        player.pause();
        btn.value = "Play";
    }
});

//定時更新當前時間
setInterval(function () {
    curtime.innerHTML = player.currentTime;
}, 250);

可以進一步擴展這個視頻播放器,讓它可以使用更多的屬性,監(jiān)聽更多的事件。同樣的代碼也可以用于 audio 元素。

4 檢測編解碼器的支持情況

audio 和 video 元素都有一個 canPlayType() 方法,它接收一個格式/編解碼器的字符串,返回 “probably”、”maybe”、”“,所以這樣這樣使用:

if (audio.canPlayType("audio/mpeg")){
      ...
  }

因為真正決定文件是否能夠播放的是編碼格式,所以建議同時傳入 MIME 類型和編解碼器,這樣檢測會更準確:

if (audio.canPlayType("audio/ogg; codecs=\"vorbis\"")){
  ...
}

注意,編解碼器必須使用引號!下面列出已得到支持的音/視頻格式和編解碼器:

音頻字符串支持的瀏覽器
AACaudio/mp4; codecs=”mp4a.40.2”IE9+、Safari4+、iOS 版的 Safari
MP3audio/mpegIE9+、Chrome
Vorbisaudio/ogg; codecs=”vorbis”Firefox 3.5+、Chrome、Opera 10.5+
WAVaudio/wav; codecs=”1”Firefox 3.5+、Chrome、Opera 10.5+

視頻字符串支持的瀏覽器
H.264video/mp4; codecs=”avcl.42E01E, mp4a.40.2”IE9+、Safari4+、iOS 版的 Safari、Android 版 WebKit
Theoravideo/ogg; codecs=”theora”Firefox 3.5+、Chrome、Opera 10.5+
WebMvideo/webm; codecs=”vp8, vorbis”Firefox 4+、Chrome、Opera 10.6+

5 Audio 類型

audio 元素有一個原始的 JavaScript 構(gòu)造函數(shù) Audio,可以利用它來控制什么時候播放音頻:

 var audio = new Audio("xxx.mp3");
 EventUtils.addHandler(audio, "canplaythrough", function(event){
     audio.play();
 });

上面的代碼實現(xiàn)了這樣的功能:當下載完成后自動播放音頻。

在 iOS 中,調(diào)用 play() 會彈出一個對話框,得到用戶許可后才可以播放。

如果想要在一個音頻播放完之后在播放另一個音頻,可以在 onfinish 事件中調(diào)用 play() 方法。

關(guān)于“HTML5如何嵌入音頻和視頻的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

網(wǎng)站標題:HTML5如何嵌入音頻和視頻的方法
文章來源:http://muchs.cn/article18/iehhgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站搜索引擎優(yōu)化、響應(yīng)式網(wǎng)站、網(wǎng)站排名定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司