您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關HTML5如何嵌入音頻和視頻的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
HTML5使用audio和video元素來嵌入音頻和視頻內容。可以讓支持HTML5的瀏覽器不需要安裝任何插件就可以播放視頻和音頻。
另外還提供了與這兩個標簽相關的 JavaScript API,這樣就可以創建我們自己的音視頻控件咯:
<!-- 嵌入視頻 --> <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 屬性是在加載視頻期間會顯示的圖像。位于開始和結束標簽之間的內容是后備內容,即當瀏覽器不支持這兩個標簽時會顯示這些內容。 因為不是所有的瀏覽器都支持所有的媒體格式,所以可以指定不同的媒體來源。這時會用到 `` 標簽:
<!-- 嵌入視頻 --> <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。
audio 和 video 元素有這些共有的屬性:
屬性 | 數據類型 | 說明 |
---|---|---|
autoplay | 布爾值 | 獲取或設置 autoplay 標志。 |
buffered | 時間范圍 | 已下載的緩沖的時間范圍對象。 |
bufferedBytes | 字節范圍 | 已下載的緩沖的字節范圍對象。 |
bufferingRate | 整數 | 下載速率,每秒平均接收到的位數。 |
bufferingThrottled | 布爾值 | 是否對緩沖進行節流。 |
controls | 布爾值 | 獲取或設置 controls 屬性,控制瀏覽器內置控件的顯示與隱藏。 |
currentLoop | 整數 | 媒體文件已循環的次數。 |
currentSrc | 字符串 | 當前播放的媒體文件的 URL。 |
currentTime | 浮點數 | 已經播放的秒數。 |
defaultPlaybackRate | 浮點數 | 獲取或設置播放速度,默認為 1 秒。 |
duration | 浮點數 | 總播放時間,單位是秒。 |
ended | 布爾值 | 是否已播放結束。 |
loop | 布爾值 | 獲取或設置【播放完成后是否再從頭開始播放】。 |
muted | 布爾值 | 獲取或設置【是否鏡音】。 |
networkState | 整數 | 網絡連接狀態;0:空;1:正在加載;2:正在加載原數據;3:已經加載了第一幀;4:加載完成。 |
paused | 布爾值 | 是否暫停。 |
playbackRate | 浮點數 | 獲取或設置【當前的播放速度】。 |
played | 時間范圍 | 當前已經播放的時間。 |
readyState | 整數 | 是否已就緒。1:數據不可用;1:可以顯示當前幀;2:可以開始播放;3:可以從頭到尾播放。 |
seekable | 時間范圍 | 可以搜索的時間范圍。 |
seeking | 布爾值 | 播放器是否正移動到媒體文件的新位置。 |
src | 字符串 | 媒體文件的來源,可以在任何時候重寫這個來源。 |
start | 浮點數 | 獲取或設置【開始播放的位置】,單位是秒。 |
totalBytes | 整數 | 當前資源所需的總字節數。 |
videoHeight | 整數 | 視頻的高度,只適用于 video。 |
videoWidth | 整數 | 視頻的寬度,只適用于 video。 |
volume | 浮點數 | 獲取或設置【當前音量】從 0.0 到 1.0。 |
audio 和 video 元素有這些共有的事件:
事件 | 說明 |
---|---|
abort | 下載中斷。 |
canplay | 可以播放;readyState 為 2。 |
canplaythrough | 播放可以繼續,即不會被中斷;readyState 為 3。 |
canshowcurrentframe | 當前幀已下載;readyState 為 1。 |
dataunavailable | 沒有數據導致不能播放;readyState 為 0。 |
durationchange | 改變了 duration 的值。 |
emptied | 網絡連接關閉。 |
empty | 發生錯誤導致下載停止。 |
ended | 已播放到末尾,所以播放停止。 |
error | 下載期發生網絡錯誤。 |
load | 已加載完成。可能會被廢棄,建議使用 canplaythrough。 |
loadeddata | 媒體的第一幀已加載。 |
loadedmetadata | 媒體的元數據已加載。 |
loadstart | 下載已開始。 |
pause | 播放已被暫停。 |
play | 媒體已接受到開始播放的指令。 |
playing | 媒體已開始播放。 |
progress | 正在下載。 |
ratechange | 改變了播放速度。 |
seeked | 搜索結束。 |
stalled | 瀏覽器正嘗試下載,但未接收到數據。 |
timeupdate | currentTime 被非法更新。 |
volumechange | 改變了 volume 或 muted 值。 |
waiting | 播放暫停,等待下載更多的數據。 |
之所以定義了這么多的事件,就是為了開發人員能夠只使用少量的 HTML 和 JavaScript 就可以編寫出自定義的音、視頻播放器!
<p class="mediaplayer"> <p class="video"> <video id="player" src="https://cache.yisu.com/upload/information/20200318/91/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>
現在我們加一些 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);
可以進一步擴展這個視頻播放器,讓它可以使用更多的屬性,監聽更多的事件。同樣的代碼也可以用于 audio 元素。
audio 和 video 元素都有一個 canPlayType() 方法,它接收一個格式/編解碼器的字符串,返回 “probably”、”maybe”、”“,所以這樣這樣使用:
if (audio.canPlayType("audio/mpeg")){ ... }
因為真正決定文件是否能夠播放的是編碼格式,所以建議同時傳入 MIME 類型和編解碼器,這樣檢測會更準確:
if (audio.canPlayType("audio/ogg; codecs=\"vorbis\"")){ ... }
注意,編解碼器必須使用引號!下面列出已得到支持的音/視頻格式和編解碼器:
音頻 | 字符串 | 支持的瀏覽器 |
---|---|---|
AAC | audio/mp4; codecs=”mp4a.40.2” | IE9+、Safari4+、iOS 版的 Safari |
MP3 | audio/mpeg | IE9+、Chrome |
Vorbis | audio/ogg; codecs=”vorbis” | Firefox 3.5+、Chrome、Opera 10.5+ |
WAV | audio/wav; codecs=”1” | Firefox 3.5+、Chrome、Opera 10.5+ |
視頻 | 字符串 | 支持的瀏覽器 |
---|---|---|
H.264 | video/mp4; codecs=”avcl.42E01E, mp4a.40.2” | IE9+、Safari4+、iOS 版的 Safari、Android 版 WebKit |
Theora | video/ogg; codecs=”theora” | Firefox 3.5+、Chrome、Opera 10.5+ |
WebM | video/webm; codecs=”vp8, vorbis” | Firefox 4+、Chrome、Opera 10.6+ |
audio 元素有一個原始的 JavaScript 構造函數 Audio,可以利用它來控制什么時候播放音頻:
var audio = new Audio("xxx.mp3"); EventUtils.addHandler(audio, "canplaythrough", function(event){ audio.play(); });
上面的代碼實現了這樣的功能:當下載完成后自動播放音頻。
在 iOS 中,調用 play() 會彈出一個對話框,得到用戶許可后才可以播放。
如果想要在一個音頻播放完之后在播放另一個音頻,可以在 onfinish 事件中調用 play() 方法。
關于“HTML5如何嵌入音頻和視頻的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。