需求描述

制作一个H5页面,打开之后可以录音,并将录音文件提交至后台

微信录音最长时长为1min

代码如下

// isVoice: 0-未录音 1-录音中 2-录完音

// 点击录音/录音中 按钮展示

点击录音

// isListen // 0-未试听/试听结束 1-试听中 2-暂停试听

// 录完音 按钮展示

重录

提交

试听

| |

data() {

return {

id: '',

startTime: 0,

recordTimer: null,

localId: '', // 录音本地id

serverId: '', // 录音微信服务id

showMask: false,

tip: 1, //提交 0- 重录

isVoice: 0, // 0-未录音 1-录音中 2-录完音

isListen: 0, // 0-未试听/试听结束 1-试听中 2-暂停试听

data1: 0,

work: {},

isPlay: false, // 是否播放

isSubmit: false, // 是否已提交

}

}

// 微信配置

getConfig() {

let _url = encodeURIComponent(window.location.href)

// 后台提供接口,传入当前url(返回基础配置信息)

voiceApi.wechatConfig(_url)

.then(res => {

if (res.data.code == 200) {

wx.config({

debug: false,

appId: res.data.content.appid,

timestamp: res.data.content.timestamp, // 必填,生成签名的时间戳

nonceStr: res.data.content.nonceStr, // 必填,生成签名的随机串

signature: res.data.content.signature, // 必填,签名

// 需要授权的api接口

jsApiList: [

'startRecord', 'stopRecord', 'onVoiceRecordEnd', 'uploadVoice', 'downloadVoice', 'playVoice', 'pauseVoice', 'onVoicePlayEnd'

]

})

wx.ready( () => {

wx.onVoiceRecordEnd({

// 录音时间超过一分钟没有停止的时候会执行 complete 回调

complete: function (res) {

_this.isVoice = 2

_this.localId = res.localId;

}

})

})

}

})

},

// 开始录音

voiceStart(event) {

let _this = this

event.preventDefault()

// 延时后录音,避免误操作

this.recordTimer = setTimeout(function() {

wx.startRecord({

success: function() {

_this.startTime = new Date().getTime()

_this.isVoice = 1

},

cancel: function() {

_this.isVoice = 0

}

})

}, 300)

},

// 停止录音

voiceEnd(event) {

this.isVoice = 2

let _this = this

event.preventDefault()

// 间隔太短

if (new Date().getTime() - this.startTime < 300) {

this.startTime = 0

// 不录音

clearTimeout(this.recordTimer)

} else {

wx.stopRecord({

success: function(res) {

// 微信生成的localId,此时语音还未上传至微信服务器

_this.localId = res.localId

},

fail: function(res) {

console.log(JSON.stringify(res))

}

})

}

},

// 试听

tryListen() {

let _this = this

wx.playVoice({

localId: _this.localId // 需要播放的音频的本地ID,由stopRecord接口获得

})

console.log('试听。。。')

wx.onVoicePlayEnd({ // 监听播放结束

success: function (res) {

console.log('试听监听结束')

_this.isListen = 0

}

});

},

// 试听停止

tryStop() {

let _this = this

wx.pauseVoice({

localId: _this.localId // 需要停止的音频的本地ID,由stopRecord接口获得

})

},

// 处理录音数据

voiceHandle() {

let _this = this

wx.uploadVoice({

localId: this.localId, // 需要上传的音频的本地ID,由stopRecord接口获得

isShowProgressTips: 1, // 默认为1,显示进度提示

success: function (res) {

// 微信语音已上传至 微信服务器并返回一个服务器id

_this.serverId = res.serverId; // 返回音频的服务器端ID

_this.upVoice()

}

})

},

// 自己后台上传接口

upVoice() {

let data = {

id: this.id,

serviceId: this.serverId

}

voiceApi.upVoice(data)

.then(res => {

if(res.data.code == 200) {

// !! todo 隐藏loading

this.isSubmit = true

this.$Message.message('提交成功')

this.closeMask()

} else {

this.$Message.message(res.data.message)

}

})

.catch(err => {

console.log(err)

})

},

1. 微信jsdk配置

2. 调取微信录音开始方法  wx.startRecord

3. 调取微信录音结束方法  wx.stopRecord

成功后返回一个本地音频id  localId

⚠️ 如果不调用录音结束方法,待录音1min后自动结束,需要wx.onVoiceRecordEnd 监听录音结束

4. 上传录音至微信服务器  wx.uploadVoice

返回serverId

⚠️ 微信存储时间有限,有效期3天

⚠️ 目前多媒体文件下载接口的频率限制为10000次/天,如需要调高频率,请登录微信公众平台,在开发 - 接口权限的列表中,申请提高临时上限。

5. 调取自己后台上传至自己服务器

这部可以看做,将 serverId 传给自己的服务器,然后自己服务器调微信提供的接口去下载(serverId)至自己服务器存储

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

微信h5录音上传到自己的服务器,微信js-sdk 录音功能的示例代码相关推荐

  1. 微信公众号开发《四》调用微信JS-SDK实现上传手机图片到服务器

    在这粘贴上三篇博文链接,方便大家查阅互相学习: 微信公众号开发<一>OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆 微信公众号开发<二>发送模板消息实现消息业务实 ...

  2. 通过h5页面上传视频到Linux服务器

    1. 上传视频到本地 https://www.jb51.net/article/132531.htm 2. 上传视频到Linux服务器 建立ftp连接(保证服务器已经安装ftp及对应端口,帐号有权限) ...

  3. 微信sdk上传录音php,PHP端微信JS-SDK录音上传并转mp3和播放

    Thinkphp5.0 的开发环境 微信配置和使用 private function createNonceStr($length = 16) { $chars = "abcdefghijk ...

  4. 微信 开发 图片 上传 阿里云 oss 服务器

    在做微信开发时,我需要将图片上传至阿里云OSS,思路是服务端下载微信图片再转存至OSS. wx.chooseImage({count: 1, // 默认9sizeType: ['original', ...

  5. 微信小程序上传多张图片到服务器,怎么在微信小程序中同时上传多张图片

    怎么在微信小程序中同时上传多张图片 发布时间:2021-04-16 18:05:52 来源:亿速云 阅读:99 作者:Leah 今天就跟大家聊聊有关怎么在微信小程序中同时上传多张图片,可能很多人都不太 ...

  6. js并发上传文件到不同服务器,simple-uploader.js 功能强大的上传组件 - 文章教程

    simple-uploader.js(也称 Uploader)是一个上传库,支持多并发上传,文件夹.拖拽.可暂停继续.秒传.分块上传.出错自动重传.手工重传.进度.剩余时间.上传速度等特性:该上传库依 ...

  7. vue上传zip文件到服务器,vue.js zip文件上传

    vue.js zip文件上传 内容精选 换一换 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助.接口参考文档详细介绍了每个接口的参数和使用方法.在O ...

  8. 微信小程序实现录音上传

    微信小程序实现录音上传 准备 开始 准备 1.微信开发者工具 2.Api文档 开始 打开微信开发者工具 项目->新建项目 选择小程序 appid是在微信公众平台申请的. 链接 新建完成后,项目自 ...

  9. 微信小程序上传阿里云视频文件流程及代码

    为了微信小程序客服端实现自拍视频能够分享给多个好友,我们需要把小程序自拍的视频存储到服务器,而阿里云在性能和速度上比较不错,所以我们选择了阿里云作服务器. 第一步.微信小程序项目创建 1. 到http ...

最新文章

  1. 用欧几里得算法求最大公约数_欧几里得算法:GCD(最大公约数),用C ++和Java示例解释...
  2. 目标检测中的Tricks
  3. 阿里云云市场全新升级 瞄准需求拓生态
  4. iol植入手术过程_Phaco+IOL植入术病人的护理
  5. 【第六期】拿不到offer全额退款 !人工智能工程师培养计划招生
  6. Linux先发送条件变量,浅谈Linux条件变量的使用
  7. nssl1247-A【dp】
  8. 微信小程序-配置请求合法域名的问题以及豆瓣api问题
  9. 用 HTML5 和 Javascript 仿制一个水果忍者网页版! (直接浏览器在线玩+源代码下载)...
  10. Xcode证书错误 Provisioning profile does not support the Associated Domains capability
  11. java国际时间转换为北京时间
  12. gif录制软件 LICEcap
  13. dhtml gantt所有配置_dhtmlx-gantt相关配置
  14. CLIP-对比图文多模态预训练的读后感
  15. python研究背景和意义_课题设计研究的背景和意义
  16. 2022年餐饮连锁行业研究报告
  17. 如何使用 ABAP 代码发送带有 PDF 附件的电子邮件
  18. 对专业学习的期望与目标
  19. 美容美发美甲店做活动效果提升30%的营销方案18个套路
  20. 李炎恢ecshop2.7.2安装教程与PHP5.5x不兼容的处理方法

热门文章

  1. TensorRT与pycuda配置运行yolov3
  2. jsp: 使用application对象实现网站计数器
  3. 南大通用GBase8s 常用SQL语句(280)
  4. 微观经济学(一)经济学十大原理
  5. 深圳富士康应聘者:我们就是想进这打工(组图)
  6. AD19 AD20 AD21 中undo(撤销)无法使用问题。
  7. c++使用CreateMuteX函数创建互斥对象单一运行实例
  8. docker 虚拟机器linux 启动redis
  9. 计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll
  10. ubuntu系统下安装windows双系统及问题处理