打造屬于自己的音樂播放器 HTML5之a(chǎn)udio標簽

最近學習了HTML5中的Audio標簽陵叽,學習他的最好方式當然是實踐狞尔,于是就自己寫了一個。那就直接上演示鏈接吧
http://htmlpreview.github.io/?https://github.com/djlxiaoshi/Audio/blob/master/music.html巩掺。模仿了QQ音樂網(wǎng)頁版的部分樣式偏序。誰叫自己不會UI呢!

我的音樂播放器

HTML5中增加了Audio和Video標簽胖替,這兩個標簽的用法非常相似研儒。功能卻是相當強大豫缨,我們先來看一下Audio標簽各個瀏覽器的支持情況。這里用的依然是Can I Use這個在線網(wǎng)站端朵,相信學習前端的同學應該都不陌生好芭。

Can I Use

我們可以看到,各大瀏覽器對這個元素的支持是非常給力的冲呢,除了IE8以前的和Opera Mini舍败,所以just do it。
相關(guān)文檔:Audio MDN Audio 菜鳥教程
對于這個元素怎么使用敬拓,個人感覺沒有什么好講解的邻薯,都是一目了然。我就講解一下Audio的一些屬性乘凸,方法厕诡,事件會在什么時候用到。

1 方法

play() 播放這就不用說了 會設(shè)置puased屬性為false
pause(), 暫停這也不用說了 會設(shè)置puased屬性為true
load() 重新加載
fastSeek 設(shè)置播放時間 fastSeek(30) 設(shè)置從30s處播放营勤,可以用來快進灵嫌,但是這個方法谷歌不支持,狐火下可以冀偶,所以最好還是通過設(shè)置currentTime來實現(xiàn)醒第。
canPlayType() 檢查瀏覽器是否可以播放指定的音頻類型 如果想做的完美一點是可以的,但是一般常見的音樂類型进鸠,瀏覽器都會支持稠曼。

2 屬性

屬性(上)

屬性(下)

常用的屬性及其方法我已經(jīng)在上面進行了標注。在播放音樂之前一定要先加載音樂客年,也就是設(shè)置audio.src屬性霞幅。paused屬性在播放是會設(shè)置為false 暫停時設(shè)置為true。
由于屬性事件太多量瓜,于是采用了這種截圖標注的方式司恳,還望大家見諒。

3 事件:

事件(上)

事件(下)

注意:
當音頻/視頻處于加載過程中時绍傲,會依次發(fā)生以下事件:
loadstart
durationchange
loadedmetadata
loadeddata
progress
canplay
canplaythrough

這個標簽的用法其實很簡單扔傅,完成播放器的難點就是邏輯控制,思路的清晰烫饼,所以在寫代碼之前一定要畫流程圖猎塞。在這里我推薦一款在線的框圖設(shè)計網(wǎng)站,不加評論杠纵,因為目前自己只用過這一個:https://www.processon.com 當然還可以畫思維腦圖等等其他的荠耽。
可能你在寫播放器的圖中會用到下面的一些問題:

問題1
問題2

我碰到問題2的原因是,音樂沒有加載(沒有設(shè)置audio.src)就直接 audio.play() 此時不會報錯 比藻,但是點擊關(guān)閉按鈕即執(zhí)行 audio.pause()時铝量,就會報這個錯倘屹。底下為產(chǎn)生相同錯誤的測試代碼(當然這只是一個例子,可能出現(xiàn)的情況有多種)

<!DOCTYPE html>
  <html> 
    <head> 
      <meta charset="UTF-8"> 
      <title>我的音樂播放器</title> 
    </head> 
    <body> 
      <audio id="audioDom"></audio> 
      <button onclick="test()">關(guān)閉</button> 
    </body> 
    <script type="text/javascript"> 
      var dom=document.getElementById("audioDom"); 
      dom.play(); 
        function test(){ 
           dom.pause(); 
        } 
    </script> 
  </html>

總結(jié)一點 就是如果產(chǎn)生類似問題慢叨,一定是你的播放邏輯產(chǎn)生了問題纽匙。

這是我個人播放器的github地址:音樂播放器 目前還沒有怎么整理優(yōu)化,只是功能有了插爹,金玉其外哄辣,敗絮其中了。

最后告誡大家一點赠尾,寫代碼一定要備份力穗,一定要學會用git來管理自己的項目。這次本來有一個小bug气嫁,我想小bug改起來應該容易当窗,不用備份,結(jié)果越改坑越大最后改的面目全非寸宵,一片混亂崖面,一氣之下又來一遍,每一次改動都會commit梯影。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巫员,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甲棍,更是在濱河造成了極大的恐慌简识,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件感猛,死亡現(xiàn)場離奇詭異七扰,居然都是意外死亡,警方通過查閱死者的電腦和手機陪白,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門颈走,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咱士,你說我怎么就攤上這事立由。” “怎么了序厉?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵锐膜,是天一觀的道長。 經(jīng)常有香客問我脂矫,道長,這世上最難降的妖魔是什么霉晕? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任庭再,我火速辦了婚禮捞奕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拄轻。我一直安慰自己颅围,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布恨搓。 她就那樣靜靜地躺著院促,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斧抱。 梳的紋絲不亂的頭發(fā)上常拓,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機與錄音辉浦,去河邊找鬼弄抬。 笑死,一個胖子當著我的面吹牛宪郊,可吹牛的內(nèi)容都是我干的掂恕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼弛槐,長吁一口氣:“原來是場噩夢啊……” “哼懊亡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乎串,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤店枣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后灌闺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艰争,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年桂对,在試婚紗的時候發(fā)現(xiàn)自己被綠了甩卓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡蕉斜,死狀恐怖逾柿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宅此,我是刑警寧澤机错,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站父腕,受9級特大地震影響弱匪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜璧亮,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一萧诫、第九天 我趴在偏房一處隱蔽的房頂上張望斥难。 院中可真熱鬧,春花似錦帘饶、人聲如沸哑诊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镀裤。三九已至,卻和暖如春缴饭,著一層夾襖步出監(jiān)牢的瞬間暑劝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工茴扁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留铃岔,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓峭火,卻偏偏與公主長得像毁习,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卖丸,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,769評論 25 707
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議纺且。它實...
    香橙柚子閱讀 23,797評論 8 183
  • 技術(shù)點:ES6+Webpack+HTML5 Audio+Sass這里,我們將一步步的學到如何從零去實現(xiàn)一個H5音樂...
    Sco77閱讀 9,826評論 3 28
  • 小時候被奶奶叫起來去田地里稍浆,那是在暑假载碌,大熱的天,早上卻很冷衅枫。迷迷糊糊的走著嫁艇,看天上的云,卷卷酥酥像我一樣弦撩,沒有睡...
    冰雅閱讀 549評論 0 1
  • 最近一直惡補的我步咪,終于將《人民的名義》給告一段落了∫媛ィ看著政府的大肆整頓腐敗之風猾漫,確實令無數(shù)同胞大快人心。隨著劇情的...
    大漠郡主閱讀 1,970評論 2 4