目錄
微信jssdk錄音功能開發記錄
#0.需求描述
1.開發流程
使用微信jssdk:微信JS-SDK說明文件
本次需求核心功能:錄音並且儲存
2.小麻煩
首頁 微信小程式 小程式開發 微信開發之錄音功能

微信開發之錄音功能

May 09, 2017 am 10:04 AM

微信jssdk錄音功能開發記錄

標籤(空格分隔): 前端


#0.需求描述

在微信瀏覽器內開啟的頁面,製作一個按鈕,使用者按住按鈕後開始錄音,放開後停止錄音並將錄音上傳並長期儲存。


1.開發流程

如果開發的是普通的展示頁面,就和開發普通的頁面沒有差別,不過這裡要用到裝置(手機)的錄音功能,就需要呼叫微信app的錄音接口,需要使用微信jssdk。

使用微信jssdk:微信JS-SDK說明文件

  • #先登入微信公眾平台進入「公眾號設定」的「功能設定」裡填寫“JS介面安全域名”。 [需要有微信公眾號]

  • 引入JS檔案

  • #透過config介面注入權限驗證設定

  • 透過ready介面處理成功驗證

  • 透過error介面處理失敗驗證

#
//假设已引入微信jssdk。【支持使用 AMD/CMD 标准模块加载方法加载】
wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名,见附录1
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});

wx.ready(function(){

    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

wx.error(function(res){

    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。

});
登入後複製

本次需求核心功能:錄音並且儲存

//假设全局变量已经在外部定义
//按下开始录音
$('#talk_btn').on('touchstart', function(event){
    event.preventDefault();
    START = new Date().getTime();

    recordTimer = setTimeout(function(){
        wx.startRecord({
            success: function(){
                localStorage.rainAllowRecord = 'true';
            },
            cancel: function () {
                alert('用户拒绝授权录音');
            }
        });
    },300);
});
//松手结束录音
$('#talk_btn').on('touchend', function(event){
    event.preventDefault();
    END = new Date().getTime();
    
    if((END - START) < 300){
        END = 0;
        START = 0;
        //小于300ms,不录音
        clearTimeout(recordTimer);
    }else{
        wx.stopRecord({
          success: function (res) {
            voice.localId = res.localId;
            uploadVoice();
          },
          fail: function (res) {
            alert(JSON.stringify(res));
          }
        });
    }
});

//上传录音
function uploadVoice(){
    //调用微信的上传录音接口把本地录音先上传到微信的服务器
    //不过,微信只保留3天,而我们需要长期保存,我们需要把资源从微信服务器下载到自己的服务器
    wx.uploadVoice({
        localId: voice.localId, // 需要上传的音频的本地ID,由stopRecord接口获得
        isShowProgressTips: 1, // 默认为1,显示进度提示
        success: function (res) {
            //把录音在微信服务器上的id(res.serverId)发送到自己的服务器供下载。
            $.ajax({
                url: &#39;后端处理上传录音的接口&#39;,
                type: &#39;post&#39;,
                data: JSON.stringify(res),
                dataType: "json",
                success: function (data) {
                    alert(&#39;文件已经保存到七牛的服务器&#39;);//这回,我使用七牛存储
                },
                error: function (xhr, errorType, error) {
                    console.log(error);
                }
            });
        }
    });
}

//注册微信播放录音结束事件【一定要放在wx.ready函数内】
wx.onVoicePlayEnd({
    success: function (res) {
        stopWave();
    }
});
登入後複製

2.小麻煩

要防止使用者誤操作(如:重複點擊、誤觸摸)導致的無效錄音。

小於300ms不錄音

防止使用者長按導致的瀏覽器預設彈出微信瀏覽器預設的「複製對話方塊」。

使用css設定按鈕user-select:none;

#微信播放錄音介面事件回呼函數無效




# #微信註冊事件一定要放在wx.ready中。

阻止預設事件


touch 事件記得加event.preventDefault(); 防火防爆


微信儲存

靜態

資源時間為3天,如何長期保存

要么存到自己伺服器,要么利用其它

資源,比如七牛,還可以幫我們自由轉換amr格式到mp3等格式呢!

微信伺服器預設資源格式為amr,這個格式在android機器可以使用audio標籤播放,在ios機器使用audio標籤無法播放。

###微信錄音功能授權引發的互動問題################使用微信jssdk介面錄音,在同一個領域只需要授權一次,即第一次使用錄音的時候,微信自己會跳出對話框詢問是否允許錄音,用戶點擊允許後,之後再使用錄音時,便不會再諮詢用戶是否允許。 #########在第一次按住錄音後,由於使用者未曾允許錄音,微信會提示使用者授權允許在本頁面使用微信錄音功能,這時使用者會放開錄音按鈕轉而去點擊允許,在使用者允許後,才真正會開始錄音,而此時使用者早已放開錄音按鈕,那麼錄音按鈕上便不會再有touchend事件,錄音便會一直進行。 ###解決策略:使用localStorage記錄使用者是否曾授權,並以此來判斷是否需要在剛進入頁面是自動錄一段錄音來觸發使用者授權######
if(!localStorage.rainAllowRecord || localStorage.rainAllowRecord !== &#39;true&#39;){
    wx.startRecord({
        success: function(){
            localStorage.rainAllowRecord = &#39;true&#39;;
            wx.stopRecord();
        },
        cancel: function () {
            alert(&#39;用户拒绝授权录音&#39;);
        }
    });
}
登入後複製
######3.難題######音量bug:在ios裝置上,使用微信錄音功能後,再播放audio標籤的音頻,音量極低。 ###但是使用微信介面(wx.playVoice)播放錄音的音量是正常的,而且之後,audio標籤的音量會有所增大(但依然音量很低)。 #########該問題正在溝通微信相關技術人員。 ###暫時的解決策略為:對於剛錄音的音頻,使用wx.playVoice來播放,否則使用audio播放伺服器資源。原因是不確定該音訊本地是否存在,剛錄音的音訊肯定是存在的。 ######【相關推薦】######1. ###微信公眾號平台原始碼下載#########2. ###阿狸子訂單系統原始碼免費下載# ########

以上是微信開發之錄音功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

蘋果錄音功能在哪裡找 蘋果手機的錄音功能在哪裡打開 蘋果錄音功能在哪裡找 蘋果手機的錄音功能在哪裡打開 Feb 22, 2024 pm 02:52 PM

進入語音備忘錄後即可透過紅色圓形圖示進行錄音。教學適用型號:iPhone13系統:iOS15.3解析1先打開手機,找到並點選語音備忘錄。 2進入錄製頁面後,點選紅色圓形圖標,即開始錄音。 3再次點選紅色圓形圖示可暫停錄音。 4最後點選完成即可儲存。補充:蘋果手機的錄音檔案在哪1先打開手機,滑動螢幕進入負一螢幕。 2在頂部搜尋欄輸入語音備忘錄後,點選搜尋結果。 3進入錄音頁面後,即可查看所有錄音檔案。總結/注意事項暫停錄音時可以播放已錄製部分。

蘋果手機錄音功能在哪 蘋果手機錄音功能在哪 Mar 08, 2024 pm 02:00 PM

使用者使用蘋果手機想要進行錄音功能,但不知道該怎麼開啟錄音,其實很簡單,進入控制中心就可以找到語音備忘錄按鈕,點選就進入了手機錄音功能。蘋果手機錄音功能在哪答:在控制中心可以開啟手機錄音1、用戶使用蘋果手機想要進行手機錄音,需要開啟手機內的語音備忘錄功能。 2.語音備忘錄最快的開啟方法就是在控制中心打開,點選直接就可以使用。 3.也可以在桌面的系統自帶的軟體庫中找到語音備忘錄直接點選使用。 4.語音備忘錄功能是可以解除安裝的,如果使用者不小心解除安裝了相關的軟體,可以在appstore重新下載。 5、如果

蘋果手機錄音功能怎麼開啟_蘋果手機錄音功能開啟方法 蘋果手機錄音功能怎麼開啟_蘋果手機錄音功能開啟方法 Mar 23, 2024 pm 07:10 PM

1.首先,在蘋果手機桌面找到並開啟語音備忘錄,選擇所有錄音。 2、然後,點選紅色按鍵可開始錄製語音備忘錄,再次點選紅色按鍵可暫停錄音。

PHP微信開發:如何實作訊息加密解密 PHP微信開發:如何實作訊息加密解密 May 13, 2023 am 11:40 AM

PHP是一種開源的腳本語言,廣泛應用於網頁開發和伺服器端編程,尤其在微信開發中得到了廣泛的應用。如今,越來越多的企業和開發者開始使用PHP進行微信開發,因為它成為了真正的易學易用的開發語言。在微信開發中,訊息的加密和解密是一個非常重要的問題,因為它們涉及資料的安全性。對於沒有加密和解密方式的消息,駭客可以輕鬆取得其中的數據,對用戶造成威脅

用PHP開發微信群發工具 用PHP開發微信群發工具 May 13, 2023 pm 05:00 PM

隨著微信的普及,越來越多的企業開始將其作為行銷工具。而微信群發功能,則是企業進行微信行銷的重要手段之一。但是,如果只依靠手動發送,對於行銷人員來說是一件極為費時費力的工作。所以,開發一款微信群發工具就顯得格外重要。本文將介紹如何使用PHP開發微信群發工具。一、準備工作開發微信群發工具,我們需要掌握以下幾個技術點:PHP基礎知識微信公眾平台開發開發工具:Sub

PHP微信開發:如何實現使用者標籤管理 PHP微信開發:如何實現使用者標籤管理 May 13, 2023 pm 04:31 PM

在微信公眾號開發中,使用者標籤管理是一個非常重要的功能,可以讓開發者更了解和管理自己的使用者。本篇文章將介紹如何使用PHP實作微信使用者標籤管理功能。一、取得微信用戶openid在使用微信用戶標籤管理功能之前,我們首先需要取得用戶的openid。在微信公眾號開發中,透過使用者授權的方式取得openid是比較常見的做法。在使用者授權完成後,我們可以透過以下程式碼取得用

PHP微信開發:如何實作群發訊息傳送記錄 PHP微信開發:如何實作群發訊息傳送記錄 May 13, 2023 pm 04:31 PM

隨著微信成為了人們生活中越來越重要的通訊工具,其敏捷的訊息傳遞功能迅速受到廣大企業和個人的青睞。對企業而言,將微信發展為一個行銷平台已經成為趨勢,而微信開發的重要性也逐漸凸顯。在其中,群發功能更是被廣泛使用,那麼,作為PHP程式設計師,如何實現群發訊息發送記錄呢?以下將為大家簡單介紹一下。 1.了解微信公眾號相關開發知識在了解如何實現群發訊息發送記錄之前,我

PHP微信開發:如何實現客服聊天視窗管理 PHP微信開發:如何實現客服聊天視窗管理 May 13, 2023 pm 05:51 PM

微信是目前全球用戶規模最大的社群平台之一,隨著行動網路的普及,越來越多的企業開始意識到微信行銷的重要性。在進行微信行銷時,客服服務是至關重要的一環。為了更好地管理客服聊天窗口,我們可以藉助PHP語言進行微信開發。一、PHP微信開發簡介PHP是一種開源的伺服器端腳本語言,廣泛用於Web開發領域。結合微信公眾平台提供的開發接口,我們可以使用PHP語言進行微信

See all articles