小程序实现录音功能


Posted in Javascript onSeptember 22, 2020

本文实例为大家分享了小程序实现录音功能的具体代码,供大家参考,具体内容如下

首先判断权限

getPermission: function() {
  var that = this;
    wx.getSetting({
     success(res) {
      console.log(res.authSetting)
      if (res.authSetting["scope.record"] === false) {
       wx.showModal({
        title: '是否录音',
        content: '是否录音',
        success: function (tip) {
         if (tip.confirm) {
          wx.openSetting({
           success: function (data) {
            if (data.authSetting["scope.record"] === true) {
             wx.showToast({
              title: '授权成功',
              icon: 'success',
              duration: 1000
             })
             that.startLuYin()
             //授权成功之后,再调用chooseLocation选择地方
            } else {
             wx.showToast({
              title: '授权失败',
              icon: 'success',
              duration: 1000
             })
            }
           }
          })
         }
        }
       })
      }else{
       that.startLuYin()
      }
     }
    })
 },

授权成功后开始录音

startLuYin(){
  const options = {
   duration: 10000 * 6 * 10, //指定录音的时长,单位 ms
   sampleRate: 16000, //采样率
   numberOfChannels: 1, //录音通道数
   encodeBitRate: 96000, //编码码率
   format: 'mp3', //音频格式,有效值 aac/mp3
   frameSize: 50, //指定帧大小,单位 KB
  }
  //开始录音
  recorderManager.start(options);
  recorderManager.onStart(() => {
   console.log('recorder start');
   Countdown(this); //开始计时
  });
  //错误回调
  recorderManager.onError((res) => {
   console.log('recorder出错:' + res);
   console.log(res);
   clearTimeout(timer); //出错时停止计时
  })
 },

暂停录音

// 暂停录音
 pause: function() {
  var that = this;
  recorderManager.pause()
  recorderManager.onPause((res) => {
   console.log(res)
   console.log('暂停录音')
   clearTimeout(timer);
  })
 },

继续录音

//继续录音
 jixu: function() {
  var that = this;
  recorderManager.resume()
  Countdown(that); //开始计时
  recorderManager.onResume((res) => {
  })
 },

停止录音

//停止录音
 stop: function() {
  recorderManager.stop();
  recorderManager.onStop((res) => {
   this.tempFilePath = res.tempFilePath;
   console.log('停止录音', res.tempFilePath)
   clearTimeout(timer);
  })
 },

播放声音

//播放声音
 play: function() {
  innerAudioContext.autoplay = true
  innerAudioContext.src = this.tempFilePath,
   innerAudioContext.onPlay(() => {
    console.log('开始播放')
   })
  innerAudioContext.onError((res) => {
   console.log(res.errMsg)
   console.log(res.errCode)
  })
 },
// 倒计时
function Countdown(that) {
 timer = setTimeout(function() {
  console.log("----secondes----" + formatSeconds(secondes));
  secondes++;
  if (secondes >= 600) {
   recorderManager.stop();
   clearTimeout(timer);
  }
  that.setData({
   times: formatSeconds(secondes)
  });
  Countdown(that);
 }, 1000);
};
// 时间展示
function formatSeconds(value) {
 var secondTime = parseInt(value); // 秒
 var minuteTime = 0; // 分
 var hourTime = 0; // 小时
 if (secondTime > 60) { //如果秒数大于60,将秒数转换成整数
  //获取分钟,除以60取整数,得到整数分钟
  minuteTime = parseInt(secondTime / 60);
  //获取秒数,秒数取佘,得到整数秒数
  secondTime = parseInt(secondTime % 60);
  //如果分钟大于60,将分钟转换成小时
  if (minuteTime > 60) {
   //获取小时,获取分钟除以60,得到整数小时
   hourTime = parseInt(minuteTime / 60);
   //获取小时后取佘的分,获取分钟除以60取佘的分
   minuteTime = parseInt(minuteTime % 60);
  }
 }
 var result;
 //时间的展示方式为00:00
 if (secondTime < 10) {
  result = "0" + parseInt(secondTime);
 } else {
  result = "" + parseInt(secondTime);
 }
 if (minuteTime > 0) {
  if (minuteTime < 10) {
   result = "0" + parseInt(minuteTime) + ":" + result;
  } else {
   result = "" + parseInt(minuteTime) + ":" + result;
  }
 } else {
  result = "00:" + result;
 }
 //由于限制时长最多为三分钟,小时用不到
 if (hourTime > 0) {
  result = "" + parseInt(hourTime) + ":" + result;
 }
 return result;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery css函数用法(判断标签是否拥有某属性)
May 28 Javascript
jQuery数组处理方法汇总
Jun 20 Javascript
JS去除数组重复值的五种不同方法
Sep 06 Javascript
Json序列化和反序列化方法解析
Dec 19 Javascript
javascript实现一个简单的弹出窗
Feb 22 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
js+css3制作时钟特效
Oct 16 Javascript
node.js缺少mysql模块运行报错的解决方法
Nov 13 Javascript
jquery实现input框获取焦点的简单实例
Jan 26 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
JSON 入门教程基础篇 json入门学习笔记
Sep 22 Javascript
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
Sep 22 #Javascript
JavaScript实现多层颜色选项卡嵌套
Sep 21 #Javascript
JS实现无限轮播无倒退效果
Sep 21 #Javascript
js+canvas绘制图形验证码
Sep 21 #Javascript
vue中路由跳转不计入history的操作
Sep 21 #Javascript
JS实现放大镜效果
Sep 21 #Javascript
vue element ui validate 主动触发错误提示操作
Sep 21 #Javascript
You might like
PHP中对数据库操作的封装
2006/10/09 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
Python 爬虫多线程详解及实例代码
2016/10/08 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
基于python指定包的安装路径方法
2018/10/27 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
Python: 传递列表副本方式
2019/12/19 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
德国网上花店:Valentins
2018/08/15 全球购物
美发活动策划书
2014/01/14 职场文书
质量标语大全
2014/06/12 职场文书
企业领导对照检查材料
2014/08/20 职场文书
学校四风对照检查材料
2014/08/28 职场文书
活动总结新闻稿
2014/08/30 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
电影雷锋观后感
2015/06/10 职场文书
工作年限证明范本
2015/06/15 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python