小程序錄音,上傳,播放,暫停播放

最近在做小程序,需求有上傳錄音,并且上傳多條音頻成功后,可以播放,暫停。剛開始接到時(shí),感覺頭都大了。但是還好小程序文檔的api也很全面

1.上傳功能


image.png
 <view bindtouchstart='sayVideo'  bindtouchend="sayVideoEnd">按住說(shuō)話</view >

2.用觸控事件,來(lái)監(jiān)聽按住說(shuō)話。松開發(fā)送。首先要獲取全局唯一的錄音管理器 RecorderManager。參考文檔
(https://developers.weixin.qq.com/miniprogram/dev/api/RecorderManager.html)

   const recorderManager = wx.getRecorderManager();
  //監(jiān)聽事件 按住說(shuō)話

  sayVideo: function(e) {

    //按住說(shuō)話
    sayVideo: function(e) {

        var that = this;

        const options = {
            duration: 60000,
            sampleRate: 16000,
            numberOfChannels: 1,
            encodeBitRate: 96000,
            format: 'mp3',
            frameSize: 50
        };

        if (this.data.status != 2) {
            //沒(méi)有授權(quán)
            wx.authorize({

                scope: 'scope.record',

                success() {

                    console.log("錄音授權(quán)成功");

                    //第一次成功授權(quán)后 狀態(tài)切換為2
                    that.setData({
                        status: 2,
                    })
                },
                fail() {

                    wx.openSetting({

                        success: (res) => {

                            console.log(res.authSetting);

                            if (!res.authSetting['scope.record']) {
                                //未設(shè)置錄音授權(quán)
                                console.log("未設(shè)置錄音授權(quán)");
                                wx.showModal({
                                    title: '提示',
                                    content: '您未授權(quán)錄音,功能將無(wú)法使用',
                                    showCancel: false,
                                    success: function(res) {},
                                });
                            } else {
                                //第二次才成功授權(quán)
                                console.log("設(shè)置錄音授權(quán)成功");
                                that.setData({
                                    status: 2,
                                })
                                recorderManager.start(options);
                            }
                        },
                        fail: function() {
                            console.log("授權(quán)設(shè)置錄音失敗");
                        }
                    })
                }

            });
        }else{
            recorderManager.start(options);
        }
    }

3.松開上傳

  //松開
    sayVideoEnd: function (e) {
        var that= this;

        recorderManager.stop(); //先停止錄音

        recorderManager.onStop((res) => {  //監(jiān)聽錄音停止的事件

            if (res.duration < 1000) {
                api.showToast('錄音時(shí)間太短');
                return;
            } else {
                wx.showLoading({
                    title: '發(fā)送中...',
                });

                var tempFilePath = res.tempFilePath; // 文件臨時(shí)路徑
                var temp = tempFilePath.replace('.mp3', '') //轉(zhuǎn)換格式 默認(rèn)silk后綴

                wx.uploadFile({

                    url: '*****', //上傳服務(wù)器的地址
                    filePath: tempFilePath, //臨時(shí)路徑
                    name: 'file',
                    header: {
                        contentType: "multipart/form-data", //按需求增加
                    },
                    formData: null,
                    success: function (res) {
                        wx.hideLoading();
                    },
                    fail:function(err){
                        wx.hideLoading();
                        console.log(err.errMsg);//上傳失敗
                    }
                });
            }

        });
    },

4.獲取上傳成功后音頻數(shù)據(jù)進(jìn)行播放,暫停。/需全局 創(chuàng)建內(nèi)部 audio 上下文 [InnerAudioContext],參考文檔

(https://developers.weixin.qq.com/miniprogram/dev/api/InnerAudioContext.html)

const recorderManager = wx.getRecorderManager();

//播放 或是暫停語(yǔ)音
    playAudio: function (e) {

        // 因全局已經(jīng) 注冊(cè)過(guò)上下文 直接用innerAudioContext就可以
       
        // 在wxml中 需要傳 data-item="{{item}}"  循環(huán)出來(lái)的當(dāng)前信息
        let item = e.currentTarget.dataset.item;  

        //音頻地址
        innerAudioContext.src = item.AudioSrc;
       
        //在ios下靜音時(shí)播放沒(méi)有聲音,默認(rèn)為true,改為false就好了。
        innerAudioContext.obeyMuteSwitch = false;  

        if (item.isPlay === false) {

            //點(diǎn)擊播放
            innerAudioContext.play();

        } else {
            //點(diǎn)擊暫停
            innerAudioContext.stop();
        };

        // //播放結(jié)束
        innerAudioContext.onEnded(() => {
            innerAudioContext.stop();
        });

    },

以上就是上傳,播放,暫停功能。還有很多細(xì)節(jié),就要根據(jù)自己的需求來(lái)改寫了。希望可以幫助到你們,也歡迎大家前來(lái)指點(diǎn)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,185評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,446評(píng)論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,951評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,189評(píng)論 0 287
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,718評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,602評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,800評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,045評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,420評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,755評(píng)論 2 371

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