篇文章主要介紹了HTML5實(shí)現(xiàn)音頻和視頻嵌入的方法的相關(guān)資料,原生的支持音頻和視頻,為HTML5注入了巨大的發(fā)展?jié)摿Γ【幱X(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
簡(jiǎn)介
HTML5未出來(lái)之前,在線(xiàn)的音頻和視頻都是借助Flash或者第三方工具實(shí)現(xiàn)的,現(xiàn)在HTML5也支持了這方面的功能。在一個(gè)支持HTML5的瀏覽器中,不需要安裝任何插件就能播放音頻和視頻。原生的支持音頻和視頻,為HTML5注入了巨大的發(fā)展?jié)摿Α?/p>
html實(shí)現(xiàn)音頻嵌入(傳統(tǒng)方式):這種方式雖然可以實(shí)現(xiàn),但是要瀏覽器支持Flash而且并不能實(shí)現(xiàn)控制,所以要實(shí)現(xiàn)起來(lái)很麻煩。
<object height="200" width="200" data="2_1.swf" >
</object>
<embed src="2_1.mp4" type="">
那么也就是說(shuō)HTML5存在一個(gè)很大的問(wèn)題就是兼容性。音頻
HTML5支持的音頻格式:
視頻
視頻格式:
由上可知,HTML5貌似支持的格式有點(diǎn)少哈,所以當(dāng)你發(fā)現(xiàn)用HTML5放置音頻和視頻不顯示時(shí),應(yīng)該就是格式不支持的問(wèn)題。注: MP4有3種編碼,mpg4(xdiv),,mpg4(xvid),avc(h264), 只有h264才是公認(rèn)的MP4標(biāo)準(zhǔn)編碼(在這也是被坑了,其他格式的只有聲音沒(méi)有圖像。)遇到這種問(wèn)題,就用視頻格式轉(zhuǎn)換器,轉(zhuǎn)換一下格式就OK啦。
音頻實(shí)現(xiàn)起來(lái)很簡(jiǎn)單:這里工具條使用了瀏覽器默認(rèn)的工具條。
?
1
2
3
<audio src="htmls/1.mp3" controls="controls" loop="loop" preload="auto" >
你的瀏覽器不支持video元素
</audio>
視頻雖然也可以使用瀏覽器默認(rèn)的,但無(wú)法實(shí)現(xiàn)私人訂制,所以從學(xué)技術(shù)的角度講,還是要學(xué)習(xí)一下自己做工具實(shí)現(xiàn)功能(audio也可參照此方法)。
audioVideo.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>網(wǎng)頁(yè)放置視頻</title>
<style type="text/css">
</style>
<script type="text/javascript" src="js/ControlBar.js"></script>
</head>
<body>
<audio src="htmls/1.mp3" controls="controls" loop="loop" preload="auto" >
你的瀏覽器不支持video元素
</audio>
<video id="myPlayer" width="600" height="400" src="htmls/2_1.mp4" controls="controls" loop="loop" poster="3.jpg">
你的瀏覽器不支持audio元素
<!-- MP4有3種編碼,mpg4(xdiv),,mpg4(xvid),avc(h264),
只有h264才是公認(rèn)的MP4標(biāo)準(zhǔn)編碼 -->
</video>
<div id="progress"></div>
<!-- 音量控制 -->
<input id="volume" type="range" min="0" max="1" step="0.1" onchange="Volume(this)">
<!-- 速率和時(shí)間進(jìn)度的信息 -->
<span id="rate">1</span>fps <span id="info"></span>
<button onclick="Play(this)" id="btn1">播放</button>
<button onclick="Fast()">快進(jìn)</button>
<button onclick="Slow()">慢進(jìn)</button>
<button onclick="Prev()">后退</button>
<button onclick="Next()">前進(jìn)</button>
<button onclick="Muted(this)">靜音</button>
</body>
</html>
顯示(html)與功能實(shí)現(xiàn)(js)分離,由外部導(dǎo)入
ControlBar.js
//使用腳本檢測(cè)瀏覽器的標(biāo)簽支持情況
var support = !!document.createElement("audio").canPlayType;
if (!support) {
alert("你的瀏覽器不支持本視頻播放");
}
// 定義全局的視頻對(duì)象
var e1 = null;
window.addEventListener("load", function() {
e1 = document.getElementById("myPlayer");
});
/*前進(jìn):一分鐘 */
function Next() {
e1.currentTime+=10; //設(shè)置屬性currentTime,快進(jìn)10s
}
/*后退:一分鐘 */
function Prev() {
e1.currentTime-=10; //設(shè)置屬性currentTime,后退10s
}
/*播放/暫停*/
function Play(e) {
if(e1.paused){
e1.play();
document.getElementById("btn1").innerHTML="暫停"
}else{
e1.pause();
document.getElementById("btn1").innerHTML="播放"
}
}
/*慢進(jìn):小于等于1時(shí),每次都只減慢0.2的速率;大于1時(shí),每次減1 */
function Slow(){
if(e1.playbackRate<=1){
e1.playbackRate-=0.2;
}else{
e1.playbackRate-=1;
}
document.getElementById("rate").innerHTML=fps2fps(e1.playbackRate);
}
/*慢進(jìn):小于等于1時(shí),每次都只減慢0.2的速率;大于1時(shí),每次減1 */
function Fast(){
if(e1.playbackRate<1){
e1.playbackRate+=0.2;
}else{
e1.playbackRate+=1;
}
document.getElementById("rate").innerHTML=fps2fps(e1.playbackRate);
}
function fps2fps(fps){
if(fps<1){
return fps.toFixed(1);
}else{
return fps;
}
}
/*靜音*/
function Muted(e){
if(e1.muted){
e1.muted=false;
e.innerHRML="X";
document.getElementById("volume").value=e1.volume;
}else{
e1.muted=true;
e.innerHRML="x";
document.getElementById("volume").value=0;
}
}
/*調(diào)整音量*/
function Volume(e){
if(e1.muted==true){
e1.muted=false;
}
e1.volume=e.value;
}
/* 進(jìn)度信息:控制進(jìn)度條,并顯示進(jìn)度時(shí)間*/
function Progress(){
var p1=document.getElementById("progress");
p1.style.width=(e1.currentTime/e1.duration)*720+"px";
document.getElementById("info").innerHTML=s2time(e1.currentTime)+"/"+s2time(e1.duration);
}
function s2time(s){
var m=parseFloat(s/60).toFixed(0);
s=parseFloat(s%60).toFixed(0);
return (m<10? "0"+m:m)+":"+(s<10?"0"+s:s);
}
/* 網(wǎng)頁(yè)加載完畢后,把進(jìn)度處理函數(shù)添加至視頻對(duì)象的timeupdate事件中*/
window.addEventListener("load",function(){
e1.addEventListener("timeupdate",Progress);
});
/*給window.onload事件添加進(jìn)度處理函數(shù)*/
window.addEventListener("load",Progress);
實(shí)現(xiàn)的功能:播放,暫停,快進(jìn),慢進(jìn),前進(jìn),后退,音量控制,進(jìn)度條和時(shí)間顯示。由此可見(jiàn)通過(guò)Audio或Video的屬性和方法可以實(shí)現(xiàn)更復(fù)雜的功能。
天小編將分享前端開(kāi)發(fā)中必學(xué)的知識(shí)點(diǎn),HTML5中關(guān)于音視頻處理
基本內(nèi)容:目前國(guó)內(nèi)的視頻網(wǎng)站 - Flash技術(shù),HTML5的視頻處理首先替換Flash技術(shù),支持的視頻格式有:
1.MP4 - .mp4 目前比較主流的視頻格式。
2.OGG - .ogv 手機(jī)端的視頻格式。
3.WebM - 目前唯一一個(gè)支持超高清視頻格式,該視頻格式出自Goggle公司。
問(wèn): 如何處理視頻?
答:<video>元素 - 引入單個(gè)格式視頻文件,它由自己的屬性組成。 src屬性 - 指定視頻文件的地址, width屬性 - 設(shè)置視頻寬度, height屬性 - 設(shè)置視頻高度。語(yǔ)法規(guī)范:<video src="視頻文件路徑" width=“100px”>
!!需要注意的是:視頻的寬高比不會(huì)改變, 在video元素內(nèi)定義不支持的提示內(nèi)容。
如果要想在<video>元素引入多個(gè)格式視頻文件,那么就使用<source/>,使用這種方式能夠?qū)崿F(xiàn)各個(gè)瀏覽器的兼容性,語(yǔ)法規(guī)范:
<video>
<source src="視頻文件路徑1"/>
<source src="視頻文件路徑2"/>
<source src="視頻文件路徑3"/>
</video>
<video>元素的屬性
autoplay屬性 - 自動(dòng)播放
controls屬性 - 提供控制面板
loop屬性 - 循環(huán)播放
poster屬性 - 播放之前顯示一張圖片
preload屬性 - 預(yù)加載(視頻)
none - 不加載
auto - (默認(rèn)值)自動(dòng)(盡快加載完畢)
metadata - 只加載除視頻之外的信息(寬和高)
video的高級(jí)用法 方法
play() - 播放視頻
pause() - 暫停視頻
load() - 加載視頻
canPlayType() - 判斷是否支持該格式
事件
play - 播放視頻時(shí)觸發(fā)
pause - 暫停視頻時(shí)觸發(fā)
ended - 結(jié)束播放時(shí)觸發(fā)
error - 播放錯(cuò)誤時(shí)觸發(fā)
canplay - 可播放時(shí)觸發(fā)(不考慮整體)
canplaythrough - 整體播放順利時(shí)觸發(fā)
progress - 下載進(jìn)度
屬性
paused - 判斷視頻當(dāng)前是否暫停,如果暫停狀態(tài),返回true
ended - 判斷視頻當(dāng)前是否結(jié)束播放,如果結(jié)束播放,返回true
duration - 當(dāng)前視頻的總時(shí)長(zhǎng)
currentTime - 獲取或設(shè)置當(dāng)前視頻播放的位置
基本內(nèi)容:目前HTML頁(yè)面實(shí)現(xiàn)音頻處理,將Windows Media Player播放器,內(nèi)置頁(yè)面中,使用Flash技術(shù)實(shí)現(xiàn)音頻處理,HTML5實(shí)現(xiàn)音頻處理支持的音頻格式有:
1.mp3 - 感謝百度(MP3)
2.ogg
3.wav
問(wèn): 如何使用音頻?
答: audio元素 - 引入一種音頻格式。
<audio>元素的屬性
src屬性 - 引入音頻文件,作用 - 實(shí)現(xiàn)頁(yè)面背景音樂(lè)播放
audio元素 - 引入多種音頻格式
source元素
autoplay - 自動(dòng)播放
controls - 提供控制面板
loop - 循環(huán)播放
preload - 預(yù)加載
audio的高級(jí)用法
事件
play - 播放音頻時(shí)觸發(fā)
方法
play() - 播放音頻
pause() - 暫停音頻
屬性
paused - true,表示暫停狀態(tài)
!! 需要特別注意,IE 8及之前的版本都不支持
emo:
```html
<!DOCTYPE html>
<html>
<head>
<title>HTML5 Audio(音頻):在網(wǎng)頁(yè)中播放音頻的簡(jiǎn)單方法</title>
</head>
<body>
<h1>HTML5 Audio(音頻):在網(wǎng)頁(yè)中播放音頻的簡(jiǎn)單方法</h1>
<p>下面是一個(gè)使用HTML5 Audio標(biāo)簽在網(wǎng)頁(yè)中播放音頻的示例:</p>
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
<p>上述代碼將呈現(xiàn)出一個(gè)帶有控制條的音頻播放器,并在其中播放指定的音頻文件。音頻文件可以是MP3格式(<code>.mp3</code>)。</p>
<p>在上述代碼中,我們使用了HTML5的Audio標(biāo)簽來(lái)嵌入音頻。通過(guò)設(shè)置<code>controls</code>屬性,我們可以啟用控制條,讓用戶(hù)可以控制音頻的播放和暫停。</p>
<p>在<code>audio</code>標(biāo)簽內(nèi)部,我們使用了<code>source</code>標(biāo)簽來(lái)指定音頻文件的URL和類(lèi)型。在示例中,我們提供了一個(gè)MP3格式的音頻文件。</p>
<p>如果用戶(hù)的瀏覽器不支持HTML5 Audio標(biāo)簽或指定的音頻文件格式,則會(huì)顯示<code>Your browser does not support the audio element.</code>的提示信息。</p>
<p>通過(guò)使用HTML5 Audio功能,我們可以在網(wǎng)頁(yè)中方便地播放音頻,為用戶(hù)提供更加豐富和多樣化的聲音效果。音頻可以應(yīng)用于各種場(chǎng)景,如音樂(lè)、語(yǔ)音提示、背景音樂(lè)等。</p>
</body>
</html>
```
以上是一篇使用HTML5 Audio標(biāo)簽在網(wǎng)頁(yè)中播放音頻的文章,其中包含了示例代碼和一些相關(guān)說(shuō)明。通過(guò)使用HTML5的Audio標(biāo)簽,我們可以在網(wǎng)頁(yè)中方便地嵌入和播放音頻。在示例中,我們使用了MP3格式的音頻文件。通過(guò)設(shè)置Audio標(biāo)簽的屬性,如控制條,我們可以定制音頻播放器的外觀和功能。通過(guò)使用HTML5 Audio功能,我們可以為用戶(hù)提供更加豐富和多樣化的聲音效果,如音樂(lè)、語(yǔ)音提示、背景音樂(lè)等。請(qǐng)注意,在使用音頻功能時(shí),需要確保音頻文件的合法性和版權(quán)問(wèn)題。
我是永不低頭的熊,喜歡美食、健身,當(dāng)然也喜歡寫(xiě)代碼,每天不定時(shí)更新各類(lèi)編程相關(guān)的文章,希望你在碼農(nóng)這條路上不再孤單!
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。