小程序音頻開發(fā)

因?yàn)橐_發(fā)小程序音頻播放,最近折騰了一段時(shí)間,總結(jié)下一些問題,便于后面回顧,也方便大家開發(fā)的時(shí)候避免踩坑。

直接進(jìn)入正題,小程序音頻有好幾種,這里我們要根據(jù)實(shí)際情況去選擇,這里大概列一下。

音頻類型 InnerAudioContext(內(nèi)置音頻) BackgroundAudioManager(背景音頻)
播放場(chǎng)景 只支持在小程序中播放,回到微信或者鎖屏等會(huì)停止 可以微信中繼續(xù)播放,ios可以鎖屏在播放控制器中切換播放,安卓根據(jù)場(chǎng)景也會(huì)出現(xiàn)音樂播放控制器
適用場(chǎng)景 交互的提示音、特效音樂等只在小程序中使用的場(chǎng)景 音樂、課程等內(nèi)容,需要支持用戶鎖屏后繼續(xù)收聽
是否需要資質(zhì) 符合官方要求即可 符合官方要求同時(shí)需要在配置文件中添加 "requiredBackgroundModes": ["audio"], // 申明需要后臺(tái)運(yùn)行的能力 audio=后臺(tái)音樂播放

這里主要考慮了這兩種音頻播放功能,因?yàn)槲⑿乓呀?jīng)停止對(duì)audio組件的維護(hù),現(xiàn)在都是使用api創(chuàng)建上下文,這兩種除了使用場(chǎng)景不太一致,其他功能大體相同,后面就不單獨(dú)列舉這兩個(gè)的差異了。

接下來應(yīng)該算是開發(fā)中的重頭戲,也是最頭疼的問題,ios和安卓兼容問題,這個(gè)問題在音頻中屬實(shí)是一個(gè)大坑,很多交互完全不同,如果只是做簡單音頻播放可能沒啥感覺,但是如果做課程、音樂類的需要很多細(xì)致操作的話這些坑不得不面對(duì),不得不填。
大致描述下我們的需求,類似音頻播放器,支持上一首下一首、快退快進(jìn)、單曲順序隨機(jī)等基礎(chǔ)功能,當(dāng)然也支持鎖屏和回到微信繼續(xù)收聽,下面就直接列坑點(diǎn)了

功能 Ios Android
stop事件 會(huì)清除播放器實(shí)例的src 不會(huì)清除src
ended事件 播放結(jié)束會(huì)先清除src,切換源時(shí)會(huì)觸發(fā)多次事件 不會(huì)清除src,且只觸發(fā)一次事件
切歌 不觸發(fā)stop監(jiān)聽 觸發(fā)stop監(jiān)聽事件
切到微信后臺(tái) 播放器stop,觸發(fā)監(jiān)聽,重新進(jìn)入src丟失,進(jìn)度為0 播放器暫停,再次進(jìn)入不丟失播放進(jìn)度

具體開發(fā)處理兼容問題我就不列代碼了,找到問題原因再去根據(jù)情況優(yōu)化處理就好,最后再提一個(gè)坑點(diǎn)

就是seek這個(gè)方法,這個(gè)是我們用來設(shè)置播放時(shí)間的,但是時(shí)靈時(shí)不靈就很坑,參考其他大佬解決問題的方案,這里建議放在onTimeUpdate回調(diào)事件中去設(shè)置,相當(dāng)于做個(gè)彌補(bǔ)方案。

整理的主要是按照我碰到的問題整理的,大家知道坑點(diǎn)再根據(jù)實(shí)際情況處理即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容