無論是否認可,flash早已不像過往那樣如日中天了。亞馬遜全面放棄flash、蘋果放棄flash、安卓也放棄了移動端的flash支持。事實上flash已經不太適合web開發了,由於HTML5中的video和audio這兩個API爲web開發提供了更高效的音頻視頻控制。或許你能夠看看這篇文章。javascript
在HTML5頁面中,咱們可使用video標籤來實現對視頻文件的控制。可是在瀏覽器中打開視頻並沒那麼簡單,不只瀏覽器要支持標籤,並且還要有編碼譯碼器來播放視頻。顯然最好的解決方式是HTML5規範規定一個統一的編碼譯碼器,而後讓瀏覽器製造商去執行。
可是,那些這些製造商的尿性你們都是知道的,HTML5規範到最後也沒有制定一個統一的視頻編碼譯碼器標準。
最後的狀況是,若是要考慮視頻在不一樣瀏覽器下的兼容性,開發者就要考慮好些狀況了:html
而.MP4後綴的視頻文件是帶有 H.264 視頻編碼和 AAC 音頻編碼的 MPEG 4 文件; WebM是 帶有 VP8 視頻編碼和 Vorbis 音頻編碼的 WebM 文件;Ogg是帶有 Theora 視頻編碼和 Vorbis 音頻編碼的 Ogg 文件。
因此通常只須要Ogg、MP4和flv/swf格式的視頻文件,也就是須要三個視頻文件,就能完美地在各個瀏覽器間顯示視頻了。html5
固然,各瀏覽器支持一直在變更,全部脫離時間來談支持的都是在耍流氓。能夠在caniuse上查看下各瀏覽器對video的支持。
java
<video width="400px" height="400px" src="video/ video.mp4" type="video/mp4" controls> 視頻不支持時顯示的文字 </video>
<video width="400px" height="400px" controls> <source src="video/ video.ogg" type="video/ogg" /> <source src="video/ video.mp4" type="video/mp4" /> 還用渣渣瀏覽器??? </video>
<video width="400px" height="400px" controls> <source src="video/ video.ogg" type="video/ogg" /> <source src="video/ video.mp4" type="video/mp4" /> <embed src="video/ movie.swf" type="application/x-shockwave-flash" width="400" height="400px" allowscriptaccess="always" allowfullscreen="true"></embed> 抱歉,本站不歡迎你... </video>
規定要檢測的音頻/視頻類型(和可選的編解碼器)。
經常使用值:web
經常使用值,包括編解碼器:api
Video標籤含有src、poster、preload、autoplay、loop、controls、width、height等幾個屬性,以及一個內部使用的標籤<source>。瀏覽器
src屬性和poster屬性
你能想象src屬性是用來幹啥的。跟<img>標籤的同樣,這個屬性用於指定視頻的地址。而poster屬性用於指定一張圖片,在當前視頻數據無效時顯示(預覽圖)。視頻數據無效多是視頻正在加載,多是視頻地址錯誤等等。緩存
<video width="658" height="444" src="http://www.youname.com/images/first.mp4" poster="http://www.youname.com/images/first.png" autoplay="autoplay"></video>
preload屬性
此屬性用於定義視頻是否預加載。若是有這個屬性有三個可選擇的值:none(頁面加載後不載入視頻)、meta(頁面加載後只載入元數據)、auto(頁面加載後載入整個視頻)。若是不使用此屬性,默認爲auto。若是<video>標籤有autoplay屬性的話,會忽略preload屬性。服務器
<video width="658" height="444" src="http://www.youname.com/images/first.mp4" poster="http://www.youname.com/images/first.png" autoplay="autoplay" preload="none"></video>
autoplay屬性
autoplay屬性用於設置視頻是否自動播放,是一個布爾屬性。當出現時,表示自動播放,去掉是表示不自動播放。網絡
<video width="658" height="444" src="http://www.youname.com/images/first.mp4" poster="http://www.youname.com/images/first.png" autoplay="autoplay" preload="none"></video>
loop屬性
指定視頻是否循環播放,也是一個布爾屬性
<video width="658" height="444" src="http://www.youname.com/images/first.mp4" poster="http://www.youname.com/images/first.png" autoplay="autoplay" loop="loop"></video>
<source>標籤
用於給video標籤指定多個可選擇的視頻文件地址,標籤最後會選擇一個,並且要在<video>標籤沒有src屬性時使用。
瀏覽器按source標籤的順序檢測指定的視頻是否能播放,沒法播放的緣由多是格式不支持,或者文件不存在等。若是不能播放,則嘗試播放下一下。<source>標籤不能單獨出現,必需要放在媒體標籤裏面。
- src屬性 指定媒體的地址,和video標籤裏的同樣
- Type屬性 說明src屬性指定媒體的類型,幫助瀏覽器在獲取媒體前判斷是否支持此類別的媒體格式。具體的屬性值,請參見w3c的文檔。
- Media屬性 用於說明媒體在何種媒介中使用,不設置時默認值爲all,表示支持全部媒介。 其實就是和<style>標籤的media屬性如出一轍。
注意:XHTML中屬性不容許簡寫,好比controls必須寫做<video src='src/myvideo' controls='controls'>
HTML5中的媒體API給咱們更強大的媒體控制能力。能夠在輕鬆學會HTML5播放器開發這個學習頁面簡單瞭解下媒體API中經常使用的幾個屬性和方法。
HTMLVideoElement和HTMLAudioElement 均繼承自HTMLMediaElement
var myVid=document.getElementById("video1"); alert(myVid.error.code);
javascript //當在視頻進度條點擊當前播放位置的後面時,span1的位置會顯示'Seeking:true',而後過一會變成'Seeking:false' myVid=document.getElementById("video1"); function isSeeking() { document.getElementById("span1").innerHTML=("Seeking: " + myVid.seeking); } myVid.addEventListener('seeking',isSeeking;)
完整的事件列表 w3c
事實上,當媒體加載時,會依次發下以下事件:
更完整的媒體API能夠查看video和audio參考手冊
<audio>用於定義音頻文件,好比音樂或者其餘的音頻流。
目前<audio>支持3種文件格式:MP三、Wav、Ogg。也能夠在caniuse上查看目前的支持狀況。
以前說過,HTMLVideoElement和HTMLAudioElement 均繼承自HTMLMediaElement,因此<audio>和<video>的API基本是通用的,並且兩個標籤能使用的屬性也相同。
<audio>
標籤,使用插件:<object>
標籤 或者 <embed>
標籤添加在頁面上.<embed height="50" width="100" src="horse.mp3"> <object height="50" width="100" data="horse.mp3"></object>
`<embed> `標籤訂義外部(非 HTML)內容的容器。(這是一個 HTML5 標籤,在 HTML4 中是非法的,可是全部瀏覽器中都有效)。
audio
標籤,而後若是失敗代碼回退至<embed>
。缺點是要把音頻轉換爲不一樣的格式,且<embed>
沒法回退來顯示錯誤消息。<a>
標籤。<a href="horse.mp3">Play the sound</a>
可是考慮到這種方式會顯示成一個超連接,而後就須要對`<a>`元素進行處理了,所以不太推薦。
<a href="horse.mp3">Play Sound</a> <script src="http://mediaplayer.yahoo.com/latest"></script>
而後只需簡單地把 MP3 文件連接到您的 HTML 中,JavaScript 會自動地爲每首歌建立播放按鈕。雅虎媒體播放器爲您的用戶提供的是一個小型的播放按鈕,而不是完整的播放器。不過,當您點擊該按鈕,會彈出完整的播放器。
當您在網頁中包含聲音,或者做爲網頁的組成部分時,它被稱爲內聯聲音。
若是您打算在 web 應用程序中使用內聯聲音,您須要意識到不少人都以爲內聯聲音使人惱火。同時請注意,用戶可能已經關閉了瀏覽器中的內聯聲音選項。
咱們最好的建議是隻在用戶但願聽到內聯聲音的地方包含它們。一個正面的例子是,在用戶須要聽到錄音並點擊某個連接時,會打開頁面而後播放錄音。
<audio src="song.ogg" controls="controls"></audio>
<audio src="song.ogg" controls="controls"> Your browser does not support the audio tag. </audio>
<audio controls="controls"> <source src="song.ogg" type="audio/ogg"> <source src="song.mp3" type="audio/mpeg"> Your browser does not support the audio tag. </audio>
<track>
標籤爲媒體元素(好比 <audio>
and <video>
)規定外部文本軌道。它也是HTML5中的新標籤。
用於規定字幕文件或其餘包含文本的文件,當媒體播放時,這些文件是可見的。
屬性:
這一節提到的另外還有VideoTrackList對象和VideoTrack對象,略微瞭解一下。具體說明以下:
VideoTrackList 對象
VideoTrack對象
表示一個視頻軌道,可用屬性有:
能夠看看這個連接(msdn)。這甚至能作到用JS提取每一時刻的顯示字幕,用的是TextTrackCue的API,前面未講到過,也能夠在這個頁面上看看。
使用字幕的代碼以下:
<video id="mainvideo" controls autoplay loop> <track src="en_track.vtt" srclang="en" label="English" kind="caption" default> <track src="cn_track.vtt" srclang="zh-cn" label="簡體中文" kind="caption"> </video>
視頻給了兩字幕文件,一個是中文的,一個是英文的,默認英文字幕。
經常使用字幕格式爲vtt模式,是以UTF-8編碼的文本文件,MIME類型約定爲'text/vtt',須要在服務器端進行配置。內容格式以下:
WEBVTT 00:00:01.878 --> 00:00:05.334 曾經有一份真誠的愛情放在我面前, 00:00:08.608 --> 00:00:15.296 我沒有珍惜,等我失去的時候我才後悔莫及, 人世間最痛苦的事莫過於此。