HTML5中視頻音頻的使用詳解

一、video
1.1 video支持視頻格式
常見(jiàn)的視頻格式
- 視頻的組成部分:畫面、音頻、編碼格式
- 視頻編碼:H.264、Theora、VP8(google開(kāi)源)
HTML5支持的視頻格式:
1、Ogg
帶有Theora視頻編碼+Vorbis音頻編碼的Ogg文件
支持的瀏覽器:F、C、O
2、MEPG4
帶有H.264視頻編碼+AAC音頻編碼的MPEG4文件
支持的瀏覽器: S、C
3、WebM
帶有VP8視頻編碼+Vorbis音頻編碼的WebM格式
支持的瀏覽器: I、F、C、O
劣勢(shì):視頻少、轉(zhuǎn)碼器幾乎沒(méi)有,不好轉(zhuǎn)碼
想要video能自動(dòng)填充慢父div的大小,只要給video標(biāo)簽加上style="width= 100%; height=100%; object-fit: fill"即可
1.2 標(biāo)簽原型
指定一種視頻格式,不能播就提示
<video id="media" src="examp.mp4" width="500" poster="examp1.jpg" >您的瀏覽器不支持video</video>
給定多種視頻格式,瀏覽器根據(jù)自身支持程度選擇播放哪一種
注意:多個(gè)source標(biāo)簽,瀏覽器會(huì)從第一個(gè)開(kāi)始識(shí)別,如果第一個(gè)不被識(shí)別,則會(huì)繼續(xù)識(shí)別第二個(gè);如果第一個(gè)識(shí)別成功,則會(huì)直接播放第一種格式視頻
<video controls = “controls”> <source src=”1.mp4” type=”video/mp4” /> //src屬性寫到source標(biāo)簽中,要指定視頻的type類型,例如MP4的即為type=“video/mp4” <source src = “2.ogg” type=”video/ogg” /> //ogg格式 <source src=”3.webm” type=”video/webm” /> //webm格式 </video>
1.3 重要的video標(biāo)簽屬性
屬性(常用) | 值 | 功能描述 |
---|---|---|
controls | controls | 是否顯示播放控件 |
autoplay | autoplay | 設(shè)置是否打開(kāi)瀏覽器后自動(dòng)播放 |
width | Pilex(像素) | 設(shè)置播放器的寬度 |
height | Pilex(像素) | 設(shè)置播放器的高度 |
loop | loop | 設(shè)置視頻是否循環(huán)播放(即播放完后繼續(xù)重新播放) |
preload | preload | 設(shè)置是否等加載完再播放 |
src | url | 設(shè)置要播放視頻的url地址 |
poster | imgurl | 設(shè)置播放器初始默認(rèn)顯示圖片 |
autobuffer | autobuffer | 設(shè)置為瀏覽器緩沖方式,不設(shè)置autoply才有效 |
API 屬性
屬性 | 描述 |
---|---|
audioTracks | 返回表示可用音軌的 AudioTrackList 對(duì)象 |
buffered | 返回表示音頻/視頻已緩沖部分的 TimeRanges 對(duì)象 |
controller | 返回表示音頻/視頻當(dāng)前媒體控制器的 MediaController 對(duì)象 |
crossOrigin | 設(shè)置或返回音頻/視頻的 CORS 設(shè)置 |
currentSrc | 返回當(dāng)前音頻/視頻的 URL |
currentTime | 設(shè)置或返回音頻/視頻中的當(dāng)前播放位置(以秒計(jì)) |
defaultMuted | 設(shè)置或返回音頻/視頻默認(rèn)是否靜音 |
defaultPlaybackRate | 設(shè)置或返回音頻/視頻的默認(rèn)播放速度 |
duration | 返回當(dāng)前音頻/視頻的長(zhǎng)度(以秒計(jì)) |
ended | 返回音頻/視頻的播放是否已結(jié)束 |
error | 返回表示音頻/視頻錯(cuò)誤狀態(tài)的 MediaError 對(duì)象 |
mediaGroup | 設(shè)置或返回音頻/視頻所屬的組合(用于連接多個(gè)音頻/視頻元素) |
muted | 設(shè)置或返回音頻/視頻是否靜音 |
networkState | 返回音頻/視頻的當(dāng)前網(wǎng)絡(luò)狀態(tài) |
paused | 設(shè)置或返回音頻/視頻是否暫停 |
playbackRate | 設(shè)置或返回音頻/視頻播放的速度 |
played | 返回表示音頻/視頻已播放部分的 TimeRanges 對(duì)象 |
readyState | 返回音頻/視頻當(dāng)前的就緒狀態(tài) |
seekable | 返回表示音頻/視頻可尋址部分的 TimeRanges 對(duì)象 |
seeking | 返回用戶是否正在音頻/視頻中進(jìn)行查找 |
startDate | 返回表示當(dāng)前時(shí)間偏移的 Date 對(duì)象 |
textTracks | 返回表示可用文本軌道的 TextTrackList 對(duì)象 |
videoTracks | 返回表示可用視頻軌道的 VideoTrackList 對(duì)象 |
volume | 設(shè)置或返回音頻/視頻的音量 |
- duration:返回當(dāng)前音頻/視頻的長(zhǎng)度(以秒計(jì))
- paused:設(shè)置或返回音頻/視頻是否暫停
- currentTime:設(shè)置或返回音頻/視頻中的當(dāng)前播放位置(以秒計(jì))
- ended:返回音頻/視頻的播放是否已結(jié)束
1.4 Video API
1.4.1 Video 方法
API | 事件說(shuō)明 |
---|---|
play | video.play(); 播放視頻 |
pause | video.pause(); 暫停播放視頻 |
load | video.load(); 將全部屬性回復(fù)默認(rèn)值,視頻恢復(fù)重新開(kāi)始狀態(tài) |
canPlayType | var support = videoid.canPlayType(‘video/mp4′); 判斷瀏覽器是否支持當(dāng)前類型的視頻格式 返回值: 空字符串:不支持Maybe:可能支持Probably:完全支持 |
常用方法
- play():開(kāi)始播放音頻/視頻
- pause():暫停當(dāng)前播放的音頻/視頻
1.4.2網(wǎng)絡(luò)狀態(tài)
獲取video對(duì)象
Media = document.getElementById("media");
1.Media.currentSrc;
返回當(dāng)前資源的URL
2.Media.src = value;
返回或設(shè)置當(dāng)前資源的URL
3.Media.canPlayType(type);
是否能播放某種格式的資源
4.Media.networkState;
0.此元素未初始化
1.正常但沒(méi)有使用網(wǎng)絡(luò)
2.正在下載數(shù)據(jù)
3.沒(méi)有找到資源
5.Media.load();
重新加載src指定的資源
6.Media.buffered;
返回已緩沖區(qū)域,TimeRanges
7.Media.preload;
none:不預(yù)載
metadata:預(yù)載資源信息
auto:
1.4.3 準(zhǔn)備狀態(tài)
1.Media.readyState
2.Media.seeking;
是否正在seeking
1.4.4 回放狀態(tài)
1.Media.currentTime = value;
當(dāng)前播放的位置,賦值可改變位置
2.Media.startTime;
一般為0,如果為流媒體或者不從0開(kāi)始的資源,則不為0
3.Media.duration;
當(dāng)前資源長(zhǎng)度 流返回?zé)o限
4.Media.paused;
是否暫停
5.Media.defaultPlaybackRate = value;
默認(rèn)的回放速度,可以設(shè)置
6.Media.playbackRate = value;
當(dāng)前播放速度,設(shè)置后馬上改變
7.Media.played;
返回已經(jīng)播放的區(qū)域,TimeRanges,關(guān)于此對(duì)象見(jiàn)下文
8.Media.seekable;
返回可以seek的區(qū)域 TimeRanges
9.Media.ended;
是否結(jié)束
10.Media.autoPlay;
是否自動(dòng)播放
11.Media.loop;
是否循環(huán)播放
12.Media.play();
播放
13.Media.pause();
暫停
1.4.5 視頻控制
- Media.controls;//是否有默認(rèn)控制條
- Media.volume = value; //音量
- Media.muted = value; //靜音
- TimeRanges(區(qū)域)對(duì)象
- TimeRanges.length; //區(qū)域段數(shù)
- TimeRanges.start(index) //第index段區(qū)域的開(kāi)始位置
- TimeRanges.end(index) //第index段區(qū)域的結(jié)束位置
1.4.6 相關(guān)事件
1.首先綁定事件的話可以通過(guò)js中的addEventListener方法來(lái)綁定事件
事件 | 說(shuō)明 |
---|---|
loadstart | 客戶端開(kāi)始請(qǐng)求數(shù)據(jù) |
progress | 客戶端正在請(qǐng)求數(shù)據(jù) |
suspend | 延遲下載 |
abort | 客戶端主動(dòng)終止下載(不是因?yàn)殄e(cuò)誤引起) |
loadstart | 客戶端開(kāi)始請(qǐng)求數(shù)據(jù) |
progress | 客戶端正在請(qǐng)求數(shù)據(jù) |
error | 請(qǐng)求數(shù)據(jù)時(shí)遇到錯(cuò)誤 |
stalled | 網(wǎng)速失速 |
play | play()和autoplay開(kāi)始播放時(shí)觸發(fā) |
pause | pause()觸發(fā) |
loadedmetadata | 成功獲取資源長(zhǎng)度 |
loadeddata | - |
waiting | 等待數(shù)據(jù),并非錯(cuò)誤 |
playing | 開(kāi)始回放 |
canplay | 可以播放,但中途可能因?yàn)榧虞d而暫停 |
canplaythrough | 可以播放,歌曲全部加載完畢 |
seeking | 尋找中 |
seeked | 尋找完畢 |
timeupdate | 播放時(shí)間改變 |
ended | 播放結(jié)束 |
ratechange | 播放速率改變 |
durationchange | 資源長(zhǎng)度改變 |
volumechange | 音量改變 |
2.常用事件
- oncanplay:當(dāng)文件就緒可以開(kāi)始播放時(shí)運(yùn)行的腳本(緩沖已足夠開(kāi)始時(shí))。
- ontimeupdate: 當(dāng)播放位置改變時(shí)(比如當(dāng)用戶快進(jìn)到媒介中一個(gè)不同的位置時(shí))運(yùn)行的腳本。
- onended:當(dāng)媒介已到達(dá)結(jié)尾時(shí)運(yùn)行的腳本(可發(fā)送類似“感謝觀看”之類的消息)。
1.4.7 其他
1.全屏:
- element.webkitRequestFullScreen();( webkit)
- element.mozRequestFullScreen(); (Firefox )
- element.requestFullscreen(); (W3C )
2.退出全屏:
- document.webkitCancelFullScreen(); (webkit )
- document.mozCancelFullScreen(); (Firefox)
- document.exitFullscreen(); (W3C)
二、audio
2.1 audio格式
1.常見(jiàn)的音頻格式
音頻編碼:ACC、MP3、Vorbis
2.HTML5支持的音頻格式:
- Ogg 免費(fèi) 支持的瀏覽器:C、F、O
- MP3 收費(fèi) 支持的瀏覽器: I、C、S
- Wav 收費(fèi) 支持的瀏覽器: F、O、S
2.2 audio標(biāo)簽中的一些常用屬性
屬性 | 屬性值 | 注釋 |
---|---|---|
src | url | 播放的音樂(lè)的url地址(火狐只支持ogg的音樂(lè),而IE9只支持MP3格式的音樂(lè)。chrome貌似全支持) |
preload | preload | 預(yù)加載(在頁(yè)面被加載時(shí)進(jìn)行加載或者說(shuō)緩沖音頻),如果使用了autoplay的話那么該屬性失效。 |
loop | loop | 循環(huán)播放 |
controls | controls | 是否顯示默認(rèn)控制條(控制按鈕) |
autoplay | autoplay | 自動(dòng)播放 |
對(duì)于音樂(lè)格式的支持
音頻格式 | Chrome | Firefox | IE9 | Opera | Safari |
---|---|---|---|---|---|
OGG | 支持 | 支持 | 支持 | 不支持 | 不支持 |
MP3 | 支持 | 不支持 | 支持 | 不支持 | 支持 |
WAV | 不支持 | 支持 | 不支持 | 支持 | 不支持 |
audio可通過(guò)new來(lái)創(chuàng)建。也可以通過(guò)用document來(lái)獲取
//通過(guò)new關(guān)鍵字來(lái)創(chuàng)建Audio對(duì)象 var Music = new Audio("test.mp3"); //通過(guò)document來(lái)獲取已經(jīng)存在的Audio對(duì)象 var Music = document.getElementById("audio"); //當(dāng)然這里也可以使用document.getElementsByClassName('className')等其他的方法來(lái)獲取。
2.3 api所提供的對(duì)audio標(biāo)簽操作的一些屬性和方法
屬性 | 注釋 |
---|---|
duration | 獲取媒體文件的總時(shí)長(zhǎng),以s為單位,如果無(wú)法獲取,返回NaN |
paused | 如果媒體文件被暫停,那么paused屬性返回true,反之則返回false |
ended | 如果媒體文件播放完畢返回true |
muted | 用來(lái)獲取或設(shè)置靜音狀態(tài)。值為boolean |
volume | 控制音量的屬性值為0-1;0為音量最小,1為音量最大 |
startTime | 返回起始播放時(shí)間 |
error | 返回錯(cuò)誤代碼,為uull的時(shí)候?yàn)檎!7駝t可以通過(guò)Music.error.code來(lái)獲取 |
currentTime | 用來(lái)獲取或控制當(dāng)前播放的時(shí)間,單位為s。 |
currentSrc | 以字符串形式返回正在播放或已加載的文件 |
2.4 常用的控制用的函數(shù)
函數(shù) | 作用 |
---|---|
load() | 加載音頻、視頻軟件 |
play() | 加載并播放音頻、視頻文件或重新播放暫停的的音頻、視頻 |
pause() | 暫停出于播放狀態(tài)的音頻、視頻文件 |
canPlayType(obj) | 測(cè)試是否支持給定的Mini類型的文件 |
2.5 audio標(biāo)簽API中的常用事件
首先綁定事件的話可以通過(guò)js中的addEventListener方法來(lái)綁定事件
事件名稱 | 事件作用 |
---|---|
loadstart | 客戶端開(kāi)始請(qǐng)求數(shù)據(jù) |
progress | 客戶端正在請(qǐng)求數(shù)據(jù)(或者說(shuō)正在緩沖) |
play | play()和autoplay播放時(shí) |
pause | pause()方法促發(fā)時(shí) |
ended | 當(dāng)前播放結(jié)束 |
timeupdate | 當(dāng)前播放時(shí)間發(fā)生改變的時(shí)候。播放中常用的時(shí)間處理 |
canplaythrough | 歌曲已經(jīng)載入完全完成 |
canplay | 緩沖至目前可播放狀態(tài)。 |
其實(shí)video的api和audio幾乎一致。稍稍有點(diǎn)不同。所以基本上會(huì)了一個(gè)其他的也就都會(huì)了
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
- HTML5 Audio標(biāo)簽?zāi)軌蛑С謜av, mp3, ogg, acc, webm等格式,但有個(gè)很重要的音樂(lè)文件格式midi(擴(kuò)展名mid)卻在各大瀏覽器中都沒(méi)有內(nèi)置的支持。這篇文章給大家介紹html5中audio2018-08-24
- 這篇文章主要介紹了HTML5實(shí)現(xiàn)音頻和視頻嵌入的方法的相關(guān)資料,原生的支持音頻和視頻,為HTML5注入了巨大的發(fā)展?jié)摿Γ【幱X(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2018-08-22
詳解移動(dòng)端HTML5音頻與視頻問(wèn)題及解決方案
這篇文章主要介紹了詳解移動(dòng)端HTML5音頻與視頻問(wèn)題及解決方案的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-22- 本期的教程主要是為了展示Html5新增的2014-12-30
- 這篇文章主要介紹了HTML5自定義mp3播放器源碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-06