微信 JS-SDK 錄音功能開發(fā)

云娜

今天分享一下我第一次接觸微信開發(fā),微信JS-SDK錄音功能開發(fā)的經(jīng)歷.

在開發(fā)微信JS-SDK錄音功之前我是沒有接觸過微信開發(fā)的,第一反應(yīng)就是去百度.建議第一次接觸微信開發(fā)的同學去微信JSSDK說明文檔 - 微信公眾平臺開發(fā)者文檔上看看,重點是要仔細看微信網(wǎng)頁開發(fā)這一欄,先在頭腦里有個基本了解.別忘了下載微信web開發(fā)者工具,使用方法和介紹也仔細看看.

如果還是感覺一頭霧水的同學可以去看看微信JS-SDK Demo.仔細去看看源碼,和JSSDK說明文檔 - 微信公眾平臺開發(fā)者文檔,微信網(wǎng)頁開發(fā)聯(lián)系起來看,效果更好!

有了以上的了解后就可以動手開發(fā)了,我這里主要講微信JS-SDK錄音功能開發(fā).需要實現(xiàn) : 開始錄音,停止錄音,試聽錄音,刪除錄音重新錄制,確認上傳語音到微信服務(wù)器(語音只能在微信服務(wù)器上保留三天,我還要實現(xiàn)與后臺配合,從微信服務(wù)器上把語音保存到自己的服務(wù)器上).

下面我就直接貼代碼了,只要你有仔細看上面的文檔和Demo,這些代碼對你來說都不是問題.

<html>
<head>
  <meta charset="utf-8">
  <title>音頻接口</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
  <script src="js/jquery.js"></script>
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="format-detection" content="telephone=no">
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="wxapi_container">
    <div class="lbox_close wxapi_form">
      <button class="btn btn_primary" id="startRecord">開始</button>
      <button class="btn btn_primary" id="deleteVoice">刪除</button>
      <button class="btn btn_primary" id="uploadVoice">確認</button>
    </div>
</div>
<!--引入微信JS-SDK-->
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
    //文檔加載完后立即執(zhí)行
    window.onload=function(){
        wx.config({
            
                debug: true,//開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來翩伪,若要查看傳入的參數(shù)恶阴,可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印犁享。
                
                appId: '',// 必填搞隐,公眾號的唯一標識
                
                timestamp: '',// 必填讼庇,生成簽名的時間戳
                
                nonceStr: '',// 必填姻采,生成簽名的隨機串
                
                signature: '',// 必填,簽名
                
                jsApiList: ['startRecord','stopRecord','playVoice','uploadVoice']// 必填型诚,需要使用的JS接口列表
        });
            
        wx.ready(function () {
                var voice = {
                    localId: '',
                    serverId: ''
                };
            var startRecord = document.querySelector('#startRecord');
            var stopClearTimeout;
            startRecord.onclick = function () {
            //開始錄音
            if(startRecord.innerHTML == '開始'){
                wx.startRecord({
                    success: function(){
                        startRecord.innerHTML = '停止';
                        //30秒后自動停止;
                        stopClearTimeout = setTimeout(function(){
                            wx.stopRecord({
                                success: function (res) {
                                    voice.localId = res.localId;
                                    startRecord.innerHTML = '試聽';
                                }
                            });
                        },30000);
                    },
                });
            }
            
                //結(jié)束錄音
            if(startRecord.innerHTML =='停止'){
                wx.stopRecord({
                    success: function (res) {
                        clearTimeout(stopClearTimeout);
                        startRecord.innerHTML = '試聽';
                        voice.localId = res.localId;
                    },
                    fail: function (res) {
                        alert(JSON.stringify(res));
                    }
                });
            }
    
            //試聽音頻
            if(startRecord.innerHTML =='試聽'){
                if (voice.localId == '') {
                    alert('請先錄制一段聲音');
                    return;
                }
                wx.playVoice({
                    localId: voice.localId
                });
            }
    
            };
            
                //刪除語音,重新錄音;
            document.querySelector('#deleteVoice').onclick = function(){
                voice.localId = '';
                startRecord.innerHTML = '開始';
            }
            
                    //確認上傳語音
            document.querySelector('#uploadVoice').onclick = function () {
                if (voice.localId == '') {
                  alert('請先錄制一段聲音');
                  return;
                }
                wx.uploadVoice({
                  localId: voice.localId,
                    success: function (res) {
                        voice.serverId = res.serverId;
                        //把微信服務(wù)器上的serverId傳給后臺,后臺再通過serverId到微信服務(wù)器上把語音保存到自己服務(wù)器上
                        $.ajax({
                            url: '',//后臺接收數(shù)據(jù)地址
                            dataType: "json",
                            type: 'get',
                            data: {'id': voice.serverId},
                            success: function (msg) {
                                alert('上傳成功!');
                            },
                        });
                    }
                });
            };
    
        });
    }
</script>
</body>
</html>
  • 網(wǎng)上還有個非常不錯的例子可以提供大家參考微信jssdk錄音功能開發(fā)記錄.

  • 寫好后就可以交給后臺上傳服務(wù)器,再用微信web開發(fā)者工具進行調(diào)試.

  • 最后開發(fā)完成如圖:

微信語音接口
微信語音接口
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末客燕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狰贯,更是在濱河造成了極大的恐慌也搓,老刑警劉巖赏廓,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異还绘,居然都是意外死亡楚昭,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門拍顷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人塘幅,你說我怎么就攤上這事昔案。” “怎么了电媳?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵踏揣,是天一觀的道長。 經(jīng)常有香客問我匾乓,道長捞稿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任拼缝,我火速辦了婚禮娱局,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咧七。我一直安慰自己衰齐,他們只是感情好,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布继阻。 她就那樣靜靜地躺著耻涛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瘟檩。 梳的紋絲不亂的頭發(fā)上抹缕,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天,我揣著相機與錄音墨辛,去河邊找鬼卓研。 笑死,一個胖子當著我的面吹牛背蟆,可吹牛的內(nèi)容都是我干的鉴分。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼带膀,長吁一口氣:“原來是場噩夢啊……” “哼志珍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起垛叨,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤伦糯,失蹤者是張志新(化名)和其女友劉穎柜某,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敛纲,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡喂击,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了淤翔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翰绊。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旁壮,靈堂內(nèi)的尸體忽然破棺而出监嗜,到底是詐尸還是另有隱情,我是刑警寧澤抡谐,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布裁奇,位于F島的核電站,受9級特大地震影響麦撵,放射性物質(zhì)發(fā)生泄漏刽肠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一免胃、第九天 我趴在偏房一處隱蔽的房頂上張望音五。 院中可真熱鬧,春花似錦杜秸、人聲如沸放仗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诞挨。三九已至,卻和暖如春呢蛤,著一層夾襖步出監(jiān)牢的瞬間惶傻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工其障, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留银室,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓励翼,卻偏偏與公主長得像蜈敢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子汽抚,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

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