亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信開發之微信jssdk錄音功能開發示例

2020-03-21 16:08:59
字體:
來源:轉載
供稿:網友

項目需求簡單描述

用戶長按錄音,松手后直接結束錄音,結束錄音后,用戶可以選擇重新錄音、播放剛才的錄音,上傳錄音(這里的上傳錄音指上傳到自己服務器,上傳步驟是,前端調用wx.uploadVoice,后臺再到微信服務器下載音頻文件,上傳到自己的服務器)。注意,音頻文件自上傳時間算起在微信服務器的有效期為3天。由于后臺從微信服務器下載的音頻文件是amr格式的,需要后臺先把amr文件轉換成MP3,前端用audio播放。我們公司是購買阿里云的媒體處理服務進行文件轉碼的。

調用到的微信接口

// 開始錄音接口wx.startRecord();// 停止錄音接口wx.stopRecord({success: function (res) {  var localId = res.localId; }});// 監聽錄音自動停止接口wx.onVoiceRecordEnd({ // 錄音時間超過一分鐘沒有停止的時候會執行 complete 回調 complete: function (res) {  var localId = res.localId; }});// 播放語音接口wx.playVoice({ localId: '' // 需要播放的音頻的本地ID,由stopRecord接口獲得});// 暫停播放接口wx.pauseVoice({ localId: '' // 需要暫停的音頻的本地ID,由stopRecord接口獲得});// 監聽語音播放完畢接口wx.onVoicePlayEnd({wx.onVoice success: function (res) {  var localId = res.localId; // 返回音頻的本地ID }});// 上傳語音接口wx.uploadVoice({ localId: '', // 需要上傳的音頻的本地ID,由stopRecord接口獲得 isShowProgressTips: 1, // 默認為1,顯示進度提示 success: function (res) {  var serverId = res.serverId; // 返回音頻的服務器端ID }});

主要涉及的知識點

//項目用到的框架:vue.js@touchstart // 手指觸碰屏幕,開始長按@touchend //手指離開屏幕,結束長按@touchmove //手指在屏幕上滑動

開發流程

說明:項目用到的框架:Vue

1.引入微信jssdk,做好微信配置

2.HTML結構:

<div @touchstart="gtouchstart()" @touchend="gtouchend()" @touchmove="gtouchmove()"></div>

touchstart事件:MDN的定義是:當觸點與觸控設備表面接觸時觸發touchstart 事件,換句話來說,就是手指觸碰屏幕時觸發,所以這里監聽開始長按。

@touchend事件:當手指從屏幕上離開的時候觸發,這里今天長按結束。

@touchmove事件:當手指在屏幕上滑動的時候連續地觸發。在這個長按錄音的場景中,當手指在屏幕上移動了,也視為錄音結束,所以要監聽手指在屏幕上滑動。

3.js代碼

methods:{ gtouchstart(){  // 當用戶長按500ms以上再真正開始錄音  setTimeout(() => {   this.longPress()  }, 500)} }, longPress(){  wx.startRecord() // 微信開始錄音接口 }, gtouchmove(){  wx.stopRecord({ // 微信結束錄音接口   success: res => {    this.localId = res.localId;    console.log('中斷結束錄音')   }  }) }, gtouchend(){   wx.stopRecord({ // 微信結束錄音接口    success: res => {     this.localId = res.localId;     console.log('正常結束錄音成功了')    }  }) }, wxUpload() { // 上傳到微信服務器  wx.uploadVoice({   localId: this.localId, // 需要上傳的音頻的本地ID,由stopRecord接口獲得   isShowProgressTips: 1, // 默認為1,顯示進度提示   success: res => {    this.serverId = res.serverId; // 返回音頻的服務器端ID   }  }); },}

大致過程如上面代碼所示:

  • 在某個html元素監聽開始長按事件、結束長按事件、在屏幕上移動事件;
  • 長按事件開始,這時調用微信接口wx.startRecord開始錄音;
  • 長按事件結束,這時調用微信接口wx.stopRecord結束錄音,得到音頻的localId;
  • 當用戶在長按過程中手指移動了,也調用wx.stopRecord結束錄音;
  • 錄音結束后,調用微信接口wx.uploadVoice把音頻上傳到微信服務器。

開發過程遇到的問題

1.調用微信錄音超過60秒時,微信會自動結束錄音并且返回一個localId,并且這個localId是無效的

解決方案:

在 wx.startRecord() 開始之前添加定時器,如果錄音時間到達59秒,執行wx.stopRecord主動停止錄音,避免用戶錄音時間過長導致錄音無效。

2.微信錄音功能授權引發的交互問題

使用微信jssdk接口錄音,在同一個域只需要授權一次,即第一次使用錄音的時候,微信自己會彈出對話框詢問是否允許錄音,用戶點擊允許后,之后再使用錄音時,便不會再咨詢用戶是否允許。

在第一次按住錄音后,由于用戶未曾允許錄音,微信會提示用戶授權允許在本頁面使用微信錄音功能,這時用戶會放開錄音按鈕轉而去點擊允許,在用戶允許后,才真正會開始錄音,而此時用戶早已放開錄音按鈕,那么錄音按鈕上便不會再有touchend事件,錄音便會一直進行。

解決策略:使用localStorage記錄用戶是否曾授權,并以此來判斷是否需要在剛進入頁面是自動錄一段錄音來觸發用戶授權

if(!localStorage.rainAllowRecord || localStorage.rainAllowRecord !== 'true'){  wx.startRecord({    success: function(){      localStorage.rainAllowRecord = 'true';      wx.stopRecord();    },    cancel: function () {      alert('用戶拒絕授權錄音');    }  });}

3.在ios下不能自動播放audio的問題

關于音頻的播放,為了頁面美觀,處理方式是隱藏audio的播放控件,然后給一個按鈕添加時間,通過audio.play()來控制音頻的播放的。但是在ios下有個問題,audio.play()是不能直接播放音頻的,只能顯式地通過操作音頻的播放控件來。這是因為iOS Safari 不允許自動播放 audio,只能通過用戶交互觸發。這大概是蘋果公司出于用戶體驗而做的限制。

解決方案:

// 在頁面初始化成功后,在wx.ready的回調函數內,收到執行下面的方法,這樣ios用戶在點擊播放按鈕時就能正常播放音頻wx.ready(() => { this.$nextTick(() => {  this.$refs.audio.load()  this.$refs.audio.play()  this.$refs.audio.pause(); })})

4.終極問題:某些手機屏幕不靈敏導致長按錄音出現各種各樣的問題

描述:在初次完成長按錄音的功能后,我在公司多臺貼了膜或者屏幕摔爛的手機測試發現,這些手機長按、和取消長按的事件相當不靈敏,誤差很大,有時莫名其秒地結束錄音,體驗非常差。

解決方案:我們和產品經過商量,擺出這個避免不了的問題,最終把長按錄音的交互模式改成了點擊錄音。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕不卡在线视频极品| 久久成人综合视频| 欧美做受高潮1| 97超碰色婷婷| 欧美成人国产va精品日本一级| 国产精品成人一区| 97国产一区二区精品久久呦| 国产精品狼人色视频一区| 亚洲人成啪啪网站| 亚洲黄色在线观看| 亚洲欧美综合另类中字| 国产一区视频在线播放| 久久久久久中文字幕| 成人欧美一区二区三区在线湿哒哒| 亚洲性线免费观看视频成熟| 热99在线视频| 91九色国产社区在线观看| 欧美日本在线视频中文字字幕| 在线亚洲午夜片av大片| 欧美大尺度激情区在线播放| 精品欧美一区二区三区| 国产精品扒开腿做爽爽爽视频| 国产视频丨精品|在线观看| 国内精品视频久久| 日韩欧美国产一区二区| 日韩中文在线视频| 亲爱的老师9免费观看全集电视剧| 欧美性生交xxxxxdddd| 欧美日韩加勒比精品一区| 在线午夜精品自拍| 欧美性xxxxxxx| 久久久久成人网| 国产日韩欧美91| 精品久久久999| 在线日韩日本国产亚洲| xxxxx成人.com| 国产精品白丝jk喷水视频一区| 色www亚洲国产张柏芝| 亚洲自拍偷拍福利| 国内自拍欧美激情| 亚洲肉体裸体xxxx137| 久久免费国产视频| y97精品国产97久久久久久| 中文字幕免费精品一区| 中文字幕亚洲一区二区三区| 主播福利视频一区| 亚洲第一页在线| 在线亚洲男人天堂| 欧美午夜宅男影院在线观看| 欧洲亚洲在线视频| 红桃视频成人在线观看| 欧美大尺度在线观看| 久久精品91久久久久久再现| 国产精品久久av| 92版电视剧仙鹤神针在线观看| 国产精品 欧美在线| 欧美视频免费在线| 91久久久久久久久久久| 45www国产精品网站| 久久中文字幕视频| 性色av一区二区三区在线观看| 国产成人免费av电影| 日韩精品在线视频美女| 久国内精品在线| 97在线精品视频| 日本久久久久久久| 久久亚洲国产精品成人av秋霞| 欧美性猛交xxxx黑人| 久久99精品久久久久久噜噜| 日韩欧美中文字幕在线观看| 18久久久久久| 欧美国产精品va在线观看| 国产精欧美一区二区三区| 久久精品视频在线| 日韩在线视频二区| 国产黑人绿帽在线第一区| 最近2019免费中文字幕视频三| 91色中文字幕| 日韩欧美精品网站| 国产精品久久久久久久电影| 国产一区二区三区视频免费| 日韩成人av一区| 久久视频中文字幕| 亚洲深夜福利在线| 国产亚洲一级高清| 一夜七次郎国产精品亚洲| 日韩精品日韩在线观看| 国内成人精品一区| 国产小视频91| 欧美高清视频在线播放| 韩国三级日本三级少妇99| 日韩欧中文字幕| 久久精品中文字幕| 日韩精品在线视频观看| 久久国产精品久久久久| 久久69精品久久久久久国产越南| 久久精品一区中文字幕| 日韩在线观看免费全集电视剧网站| 亚洲性线免费观看视频成熟| 国产日韩精品电影| 久久久久久久久91| 亚洲精品一区二三区不卡| 91精品国产综合久久久久久蜜臀| 久久av红桃一区二区小说| 亚洲白拍色综合图区| 91久久国产婷婷一区二区| 成人免费视频在线观看超级碰| 国产精品第三页| 国模私拍视频一区| 国产手机视频精品| 欧美日韩一区二区免费在线观看| 午夜精品福利视频| 91久久国产精品| 热久久这里只有精品| 久久99精品视频一区97| 国产成人精品视频在线| 成人a视频在线观看| 精品性高朝久久久久久久| 国产成人精品一区二区在线| 国产欧美久久一区二区| 国产精品男女猛烈高潮激情| 欧美整片在线观看| 日韩欧美国产高清91| 国产视频久久久久久久| 久久久久久美女| 伊人久久五月天| 亚洲一区二区免费| 日韩在线视频观看正片免费网站| 91精品国产色综合| 亚洲欧美另类人妖| 久久久在线观看| 欧美巨乳在线观看| 久久久精品久久久久| 日韩精品免费在线观看| 成人妇女淫片aaaa视频| 第一福利永久视频精品| 永久免费看mv网站入口亚洲| 欧美日韩亚洲一区二区三区| 黄色成人av在线| 成人亚洲综合色就1024| 亚洲天堂网在线观看| 亚洲国产精品成人精品| 一区二区亚洲精品国产| 亚洲国产成人久久综合| 国产精品视频自拍| 亚洲人成网站色ww在线| 色综合久久久久久中文网| 91亚洲午夜在线| 亚洲视频在线观看| 国产精品三级美女白浆呻吟| 亚洲va欧美va在线观看| 少妇高潮 亚洲精品| 亚洲午夜精品久久久久久久久久久久| 亚洲成人av片| 尤物yw午夜国产精品视频明星| 亚洲黄页视频免费观看| 亚洲欧美变态国产另类| 亚洲人成啪啪网站| 国产精品成人品| 亚洲少妇激情视频| 亚洲精品美女在线观看播放| 欧美激情2020午夜免费观看| 国产精品久久久久免费a∨大胸| 成人黄色片网站|