博客列表 >小程序实现录音功能并播放

小程序实现录音功能并播放

手机用户4760106
手机用户4760106原创
2022年11月17日 19:49:111006浏览

你好朋友们,我是你们的Blogger朋友jahanxah。今天我们一起来在小程序里面实现录音并播放语音资源。本节课用了colorui组建库,感谢colorui。

第一步(写wxml部分)

我们先创建一个audio语音播放组建和一个按钮,为了简单一点我不装修了。audio是原声组建,那个按钮是有bindtouchstartbindtouchend两个属性。bindtouchstart是长按事件的开始(长按开始的时候发生的事件)事件,bindtouchend是长按事件的结束(松开手的发生的事件)事件。

<!--index.wxml-->

<cu-custom bgColor="bg-blue" class="uy" isCustom="{{true}}">
  <view slot="content">小程序实现录音</view>
</cu-custom>
<view class="container">
  <view>
    <audio src="{{src}}" controls></audio>
  </view>
  <view class="margin-top">
    <button bindtouchstart="luyin_start" bindtouchend="luyin_end" class="cu-btn  bg-blue uy text-xl" style="margin: auto;width: 400rpx;height: 80rpx;">
      <text class="cuIcon-voice margin-sm"></text>
      请长按说话
    </button>
  </view>
</view>

小程序录音wxml.png

第二步  逻辑部分

现在我们一起来实现一下逻辑部分。首先我们要获取使用麦克风的权限,如果授权成功的话开始录音,授权失败的话提示录音失败。

<!--index.wxml-->

 luyin_start() {
    var that = this
    const options = {
      duration: 600000, //指定录音的时长,单位 ms
      sampleRate: 16000, //采样率
      numberOfChannels: 1, //录音通道数
      encodeBitRate: 96000, //编码码率
      format: 'mp3', //音频格式,有效值 aac/mp3
      frameSize: 50, //指定帧大小,单位 KB
    }
    wx.authorize({
      scope: 'scope.record',
      success() {
        // console.log("录音授权成功");

        //第一次成功授权后 状态切换为2
        that.setData({
          status: 2,
        })
        let luyin_dur = that.data.luyin_dur;
        recorderManager.start(options);
        // setTimeout(luyin1_dur+1, 1000)
        // setInterval(luyin1_dur+1,1000)
        recorderManager.onStart(() => {
          wx.showToast({
            title: '正在录音',
            icon: 'loading',
            duration: luyin_dur
          });
        });
        //错误回调
        recorderManager.onError((res) => {
          console.log(res);
        })
      },
      fail() {
        console.log("第一次录音授权失败");
        wx.showModal({
          title: '提示',
          content: '您未授权录音,功能将无法使用',
          showCancel: true,
          confirmText: "授权",
          confirmColor: "#52a2d8",
          success: function (res) {
            if (res.confirm) {
              //确认则打开设置页面(重点)
              wx.openSetting({
                success: (res) => {
                  console.log(res.authSetting);
                  if (!res.authSetting['scope.record']) {
                    //未设置录音授权
                    console.log("未设置录音授权");
                    wx.showModal({
                      title: '提示',
                      content: '您未授权录音,功能将无法使用',
                      showCancel: false,
                      success: function (res) {

                      },
                    })
                  } else {
                    //第二次才成功授权
                    console.log("设置录音授权成功");
                    that.setData({
                      status: 2,
                    })

                    recorderManager.start(options);
                    recorderManager.onStart(() => {
                      console.log('recorder start')
                    });
                    //错误回调
                    recorderManager.onError((res) => {
                      console.log(res);
                    })
                  }
                },
                fail: function () {
                  console.log("授权设置录音失败");
                }
              })
            } else if (res.cancel) {
              console.log("cancel");
            }
          },
          fail: function () {
            console.log("openfail");
          }
        })
      }
    })
  }


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议