关于微信聊天中的语音开发

之前有做过微信开发中的语音聊天的功能,今天觉得写出来。

首先签名这个就不需要多说,

wx.config({
    debug: ‘’, 
    appId: '', // 必填,公众号的唯一标识
    timestamp: '', 
    nonceStr: '', 
    signature: '',
    jsApiList: ['startRecord','stopRecord','uploadVoice','downloadVoice','playVoice','translateVoice' ……] // 必填,需要使用的JS接口列表
});


开始对语音录制开始进行操作:

 wx.startRecord({
            success: function(){
                localStorage.rainAllowRecord = 'true';
                voiceTime = setInterval(function(){
       a++;
      
       if(a >= 60){
       wx.stopRecord({
            success: function (res) {
              voice.localId = res.localId;
              $("#voiceBtn").css("background","#ddd");
              uploadVoice();
            },
            fail: function (res) {
              alert(JSON.stringify(res));
            }
          });
       clearInterval(voiceTime);
      }
      
      },1000);
            },
            cancel: function () {
                alert('用户拒绝授权录音');
            }
        });

其中 wx.startRecord() 是调用微信开始录音的接口。 这里有一个授权问题,第一次进行录制语音时会提示用户授权,成功后才开始录音。

个人觉得虽然是语音聊天,其实就是将语音录制下来,然后再播放,也许有了这种想法可以让一些没有头绪的人有了一些思路。

接下来就是停止录音 wx.stopRecord()接口


wx.stopRecord({
          success: function (res) {
            voice.localId = res.localId;
            uploadVoice();   // 这个位置是上传语音
          },
          fail: function (res) {
            alert(JSON.stringify(res));
          }
        });

当语音录制结束就要进行上传,这里先上传到微信上传语音到微信服务器,

wx.uploadVoice({
    localId: '',
    isShowProgressTips: 1, // 默认为1,显示进度提示
        success: function (res) {
        var serverId = res.serverId; // 返回音频的服务器端ID
    }
});

到这里其实已经完成了语音的录制以及上传到微信服务器,但是上传到微信服务器之后只保存三天,也就是说考虑到聊天记录等业务的时候是达不到需求的

这个时候我选择将微信服务器中的这个语音下载,并转存到如七牛云的方式。


wx.downloadVoice({
    serverId:  voice.serverId ,// 需要下载的音频的服务器端ID,由uploadVoice接口获得
    isShowProgressTips: 0, // 默认为1,显示进度提示
    success: function (res) {
        var  localId2 = res.localId; // 返回音频的本地ID
    }
});

通过这个可以wx.downloadVoice()方法可以下载语音,

微信上下载的语音是一个url,从浏览器打开可以直接下载成一个amr格式的语音文件,(微信语音下载文件只是amr格式)

我把这个URL通过

 InputStream in=new URL(requestUrl).openConnection().getInputStream();  //创建连接、输入流

转成二进制流,传给七牛云存储,同时将url拼下来存入数据库。


可能写的有一点乱,希望对你有帮助。大笑


  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值