HTML5頁面音頻自動(dòng)播放的實(shí)現(xiàn)方式

最近有這么一個(gè)需求,需要在手機(jī)加載一個(gè)頁面的時(shí)候,自動(dòng)播放音樂資源。一般情況下,這個(gè)問題也就解決了,但是要保證各種手機(jī)上表現(xiàn)一致,那就相當(dāng)困難了,至少要費(fèi)點(diǎn)兒周折。 下面有三種常規(guī)的方式,可以創(chuàng)建自動(dòng)播放的audio對(duì)象:
第一種:頁面上創(chuàng)建一個(gè)audio標(biāo)簽,寫好相關(guān)的屬性,如:autoplay='autoplay',正常情況下,這里寫上資源地址之后,訪問頁面之后就可以自動(dòng)播放了。但是如果音樂資源地址不確定,需要js改變的話,就需要使用JS來實(shí)現(xiàn)了。
(function() { var audio = document.getElementById('myAudio1'); audio1 = audio; audio.src = source; audio.loop = true; audio.autoplay = true; audio.play(); audio.addEventListener('canplay', canPlay, false); })();
第二種:和第一種比較相似,只不過所有的標(biāo)簽都是JS創(chuàng)建之后,插入到頁面上的。
(function() { var audio = document.createElement("AUDIO"); audio2 = audio; audio.setAttribute("src", source); audio.setAttribute("loop", 'true'); audio.setAttribute("controls", 'controls'); audio.setAttribute("autoplay", 'true'); audio.setAttribute("id", 'myAudio2'); audio.addEventListener('canplay', canPlay, false); document.getElementById('example2').appendChild(audio); audio.play(); })();
第三種:沒有任何dom標(biāo)簽,使用JS創(chuàng)建一個(gè)audio對(duì)象,然后通過JS控制audio對(duì)象的各種api實(shí)現(xiàn)資源更換和自動(dòng)播放。
(function() { var audio = new Audio(); audio3 = audio; audio.src = source; audio.loop = true; audio.id = 'myAudio3'; audio.autoplay = true; audio.addEventListener('canplay', canPlay, false); audio.play(); })();
附:上述三個(gè)方法的demo
另外增加一種第三方庫實(shí)現(xiàn),音頻資源的播放以及控制?!?整理了一些第三方庫,功能不只是播放音樂,還有一些其他功能,這個(gè)自己研究。
howler.js: http://goldfirestudios.com/blog/104/howler.js-Modern-Web-Audio-Javascript-Library buzz.js: http://buzz.jaysalvat.com/ audio.js: http://kolber.github.io/audiojs/ jPlayer.js: http://jplayer.org/
使用了上述方法之后,發(fā)現(xiàn)在Iphone手機(jī)(詳細(xì)說明)和部分android手機(jī)仍然不能,自動(dòng)播放。
他的播放條件是:必須有用戶行為操作,才能進(jìn)行播放。
所以就需要考慮,通過什么樣的方式可以模擬用戶的操作呢?網(wǎng)絡(luò)上提供了一些方式,可以實(shí)現(xiàn)自動(dòng)播放,如:
- 創(chuàng)建一個(gè)Image對(duì)象,然后監(jiān)聽I(yíng)mage是否加載完畢,如果加載完畢,執(zhí)行audio的播放,達(dá)到自動(dòng)播放效果
- 一個(gè)類似的方法, 創(chuàng)建一個(gè)iframe,資源直接就是音頻資源的地址,iframe加載完畢就能自動(dòng)播放
- 給document或者body綁定一個(gè)touchstart事件,這樣用戶只要觸碰到頁面就可以觸發(fā)播放
上述提到的前兩條,我測(cè)試發(fā)現(xiàn)基本上沒有效果。至于第三條,這個(gè)肯定是沒有問題的,但是這種方式確實(shí)不完全算是自動(dòng)播放,因?yàn)橥耆锌赡苡脩艟褪遣挥|碰頁面,那么就是不會(huì)播放。但是在有些場(chǎng)景下,確實(shí)可以使用,這個(gè)要區(qū)分場(chǎng)景。
進(jìn)而我想到了,能不能監(jiān)聽手機(jī)是否運(yùn)動(dòng)或者是移動(dòng),來進(jìn)行播放音頻呢?我監(jiān)聽了devicemotion(詳細(xì)說明)事件,發(fā)現(xiàn)還是不行,此時(shí)我已經(jīng)凌亂了,死的心都有了。
最后的最后,我使用了在頁面上創(chuàng)建audio標(biāo)簽,使用JS調(diào)整audio相關(guān)屬性和值,然后控制音頻播放。
這種方式基本上,可以在不同的手機(jī)上表現(xiàn)出相同的效果,但是就是我測(cè)試的一個(gè)5S手機(jī)就是不行。。。同樣別的5S卻沒有問題,具體原因到現(xiàn)在都沒有查出來我就默默的把他忽略了。
為了能讓哪些不能自動(dòng)播放的提升一些體驗(yàn),又綁定了一個(gè)touchstart事件,這樣就算是不能自動(dòng)播放,至少可以在觸摸頁面的可以進(jìn)行播放,算是一種體驗(yàn)改進(jìn)吧。
補(bǔ)充: 2015年05月31日iOS 微信 音頻 視頻自動(dòng)播放
以上就是HTML5頁面音頻自動(dòng)播放問題的詳細(xì)內(nèi)容,更多關(guān)于html5音頻自動(dòng)播放的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
html5 video全屏播放/自動(dòng)播放的實(shí)現(xiàn)示例
這篇文章主要介紹了html5 video全屏播放/自動(dòng)播放的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來2020-08-06- 這篇文章主要介紹了html5中嵌入視頻自動(dòng)播放的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起2020-05-25
html5自動(dòng)播放mov格式視頻的實(shí)例代碼
這篇文章主要介紹了html5自動(dòng)播放mov格式視頻的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-14HTML5 解決蘋果手機(jī)不能自動(dòng)播放音樂問題
這篇文章主要介紹了HTML5 解決蘋果手機(jī)不能自動(dòng)播放音樂問題的相關(guān)資料,需要的朋友可以參考下2017-12-27HTML5頁面音視頻在微信和app下自動(dòng)播放的實(shí)現(xiàn)方法
現(xiàn)在大部分的H5頁面都有實(shí)現(xiàn)播放背景音樂,播放視頻功能。那怎么實(shí)現(xiàn)自動(dòng)播放呢?下面小編給大家?guī)砹薍TML5頁面音視頻在微信和app下自動(dòng)播放的實(shí)現(xiàn)方法2016-10-20HTML中實(shí)現(xiàn)音樂或視頻自動(dòng)播放案例詳解
由于期末大作業(yè)我想插入一個(gè)背景音樂,實(shí)現(xiàn)點(diǎn)開網(wǎng)頁就會(huì)自動(dòng)播放音頻的效果,今天通過本文給大家分享下我基于HTML實(shí)現(xiàn)音樂或視頻自動(dòng)播放功能,代碼簡(jiǎn)單易懂,需要的朋友參2022-05-27