html 苹果微信录音js,微信js-sdk 录音功能的示例代码

article/2025/10/15 6:49:38

需求描述

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

a10ef4f2becfa862b2c6e7a43ea5c357.png

945e1faf25618f26665ad021282ee6e0.png

cc89b09e04e85c55264ccbbb4959b5d3.png

29956f06a73418009eb81143b9c93ea0.png

c963335750506bf0e1f4a6e21043a281.png

微信录音最长时长为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)至自己服务器存储

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


http://chatgpt.dhexx.cn/article/Tp5sIE27.shtml

相关文章

已解决:H5移动端网页实现录音功能,js实现录音功能,包括安卓webview接口也可以使用

遇到一个需求&#xff0c;需要做一个手机网页录音的功能&#xff0c;嵌入到webview中去&#xff0c;用安卓原生录音倒是可以&#xff0c;但是想着尽量去安卓化开发&#xff0c;就想着用纯的js前端代码去实现录音功能。 在 Web 应用程序中&#xff0c;JavaScript 是运行在浏览器…

网页录音时的麦克风权限问题解决

来源 | https://www.html.cn/web/html/19184.html 在我们进行网页制作时可能会遇到需要录音的情况&#xff0c;而在进行网页录音时又有可能会遇到麦克风权限问题导致无法录音&#xff0c;本文就来为大家介绍一下如何解决麦克风权限问题。 在本地中打开的时候&#xff0c;谷歌、…

获取摄像头和麦克风权限_js获取浏览器摄像头和麦克风权限

前言 项目中会使用到摄像头或麦克风设备&#xff0c;这就需要我们获取浏览器的摄像头和麦克风权限&#xff0c;权限是无法通过js操控的&#xff0c;必须由浏览器用户设置。 下面我来告诉大家如何获取浏览器的摄像头或麦克风的权限&#xff0c;使浏览器弹出询问窗口。 一、我们想…

(前端)录音功能实现 js-audio-recorder

1. 创建 import Recorder from js-audio-recorder const parameter {sampleBits: 16, // 采样位数&#xff0c;支持 8 或 16&#xff0c;默认是16sampleRate: 8000, // 采样率&#xff0c;支持 11025、16000、22050、24000、44100、48000&#xff0c;根据浏览器默认值&#x…

Android webview录音权限和音频自动播放

项目背景&#xff1a;我们通过layabox&#xff0c;制作了H5页面&#xff0c;可以在微信中&#xff0c;手机浏览器中使用&#xff0c;现在需要将H5页面集成到Android的APP中。 遇到的问题&#xff1a; 1.遇到的第一个问题&#xff0c;是获取录音权限的问题&#xff0c;我已经给…

html 苹果微信录音js,基于JS开发微信网页录音功能的实例代码

具体代码如下所示&#xff1a; wx.ready(function () { var startRecordflag false var startTime null //btnRecord 为录音按钮dom对象 btnRecord.addEventListener(touchstart, function (event) { event.preventDefault(); startTime newDate().getTime(); // 延时后录音…

std::string 与 std::wstring 互转

前言: 最近接触了一些 win32 方便的编程,由于不熟 可能会写一写这方便的基础东西 相当于 写日记了 提升一下 他们的声明 string 是 char wstring 是wchar_t 什么是wchar_t ? string 转 wstring inline std::wstring StringToWString(const std::string& str) {int len…

C++ 字符串string、字符char、宽字符数组wstring、宽字符wchar_t互相转换(2021.4.20)

C单字符串和宽字符串学习 2021.4.20 1、char 和 string1.1 单字符 char1.2 单字符数组 char[] 和 char*1.2.1 char[]1.2.2 char* 1.3 单字符串 string1.4 char[] 转 string1.5 cha[] 转char*1.6 string 转 char*1.7 string 转 char[] 2、wchar_t 和 wstring2.1 宽字符 wchar_t2…

string和wstring相互转换以及wstring显示中文问题

如果你只是使用C来处理字符串&#xff0c;会用到string。不过string是窄字符串ASCII&#xff0c;而很多Windows API函数用的是宽字符Unicode。这样让string难以应对。作为中国的程序员&#xff0c;我们第一个想到的字符串就是中文&#xff0c;而不是英文。所以经常会遇到中文字…

C++里面,什么时候使用std::wstring

看你要使用什么字符编码了&#xff0c; std::wstring主要用于 UTF-16编码的字符,而std::string主要用于存储单字节的字符( ASCII字符集 )&#xff0c;但是也可以用来保存UTF-8编码的字符。&#xff08;UTF-8和UTF-16是UNICODE字符集的两种不同的字符编码&#xff09; 如果你的…

String类与wstring类的区别

String类与wstring类的区别 本质区别 存储字符的区别 #include <iostream> #include <string> using namespace std; int main() { wstring wstr1 L"你好世界"; // L普通字符串 宽字符串 const wchar_t *ch1 wstr1.c_str(); // 转化为宽字符…

从新建工程开始使用C++开发单片机(以STM32为例):七、移植Arduino的WString(附代码)

在上一篇文章中&#xff0c;介绍了outputString和inputString&#xff0c;其中所运用到的字符串类型String也是C驱动层中功能强大且重要的一个类。这个类移植自Arduino的WString。这篇文章将会展示WString的易用性&#xff0c;并且从编译输出后程序大小的角度比较WSting和C std…

0005:Qt常用类 - QDateTime

Qt常用类 - QDateTime 1 开发环境 在介绍内容之前&#xff0c;先说明一下开发环境&#xff0c;如下图&#xff1a; Qt版本&#xff1a;Qt5.3.2&#xff1b; Qt开发工具&#xff1a;Qt Creater 3.2.1&#xff1b; Qt构建工具&#xff1a;Desktop Qt 5.3 MinGW 32bit&#xff…

QDateTime的11种显示方式

QDateTime datetime QDateTime::currentDateTime(); datetime.toString(“hh:mm:ss\nyyyy/MM/dd”); datetime.toString(“hh:mm:ss ap\nyyyy/MM/dd”); datetime.toString(“hh:mm:ss\nyyyy-MM-dd”); datetime.toString(“hh:mm:ss ap\nyyyy-MM-dd”); datetime.to…

70 QDateTime时间戳转换有误

1 前言 在开发工具中需要用时间戳转换成格式化时间来显示&#xff0c;但引用QT中自带的时间类QDateTime转换时&#xff0c;发现转换时间有误问题&#xff0c;转换的结果时分秒是正确的&#xff0c;但月份确实错误的。因此在未深入研究qt实现情况下&#xff0c;需要得到正确的格…

QDateTime类的部分函数使用解析

QDateTime类提供了日期和时间功能。 QDateTime对象包含一个日历日期和一个时钟时间&#xff08;一个“日期时间”&#xff09;。它是QDate和QTime两个类的组合。它可以从系统时钟中读取当前日期时间。它提供比较日期时间和操作日期时间的函数&#xff0c;比如加上一定数量的秒…

QDateTime时间相减

qDebug()<<"span"<<QDateTime::fromMSecsSinceEpoch(QDateTime::currentDateTime().toMSecsSinceEpoch() - time.toMSecsSinceEpoch()).toUTC().toString("hh:mm:ss"); 1、使用 QDateTime::toMSecsSinceEpoch 计算时间差&#xff1b; 2、使用…

小心 QDateTime

QDateTime 时间跳变问题接收服务端时间问题 时间跳变问题 QDateTime的具体用法可以在Qt creator 鼠标双击选中&#xff0c;按 F1 查看它的文档, Qt 的文档还是不错的. 我们有时会用下面的代码来做等待, 在笔者使用过程中发现 //等待QDateTime n QDateTime::currentDateTime(…

QDateTime

一、描述 QDateTime 对象对日历日期和时钟时间进行编码。它结合了 QDate 和 QTime 类的特性。它可以从系统时钟中读取当前日期时间。它提供了用于比较日期时间和通过添加秒数、天数、月数或年数来操作日期时间的函数。 二、成员函数 1、QString toString(const QString &…

QDateTime、QTime获取当前时间

1、引用头文件 #include #include 2、显示当前时间 ui->label->setText(“QDateTime:\nCurrent Time is:” QDateTime::currentDateTime().toString(“yyyy-MM-dd hh:mm:ss ddd”)); ui->label->setText(ui->label->text() "\n\nQTime:\nHour mi…