BenzAMRRecorder---benz-amr-recorder ╰+攻爆jí腚メ 2022-11-28 10:34 304阅读 0赞 最近在写一个微信公众号的后台管理系统,管理**消息互发,模板消息,自动回复,菜单设置**等等这些接口,其中接收用户发给公众号的语音消息,格式是`.amr`的,无法播放,于是用到了今天要说的这个插件:`benz-amr-recorder` -------------------- 这是官方npm:https://www.npmjs.com/package/benz-amr-recorder,他的特性: > 方便的 API 实现解码、播放、录音、编码 AMR 文件。 > 支持 url 和 blob (即)方式获取 AMR。 > 支持将浏览器 所支持的音频格式(例如 MP3 或 OGG 音频)转换成 AMR 音频。 > 编码后的 AMR 文件可下载,无须服务器。 下载引入: npm install benz-amr-recorder var BenzAMRRecorder = require('benz-amr-recorder'); 官方示例的播放本地文件: <input type="file" id="amr-file" accept=".amr"> var amr = new BenzAMRRecorder(); // 初始化 var amrFileObj = document.getElementById('amr-file'); amrFileObj.onchange = function() { amr.initWithBlob(this.files[0]).then(function() { amr.play(); }); } 他这个可以解码很多来源格式的文件: /** * 使用浮点数据初始化 * @param {Float32Array} array * @return {Promise} */ amr.initWithArrayBuffer(array); /** * 使用 Blob 对象初始化( <input type="file">) * @param {Blob} blob * @return {Promise} */ amr.initWithBlob(blob); /** * 使用 url 初始化 * @param {string} url * @return {Promise} */ amr.initWithUrl(url); 这里我用到的是第三种,使用url来请求的,后端返给我的播放地址是:`/voice/fhgudg374578g7f7f8dfds6767fdcxvf87.amr`,然后我使用: // 点击播放按钮 playVoice(){ var amr = new BenzAMRRecorder(); this.iconFlag = !this.iconFlag // 这个变量是控制播放与否的 amr.initWithUrl(this.$base + val.localName).then(function() { if (this.iconFlag) { // play amr.play(); } else { // stop amr.stop(); // console.log(amr.isPlaying()) // console.log(amr.isPaused()) } }); // 监听播放完成 amr.onEnded(function() { this.iconFlag = false }) },
还没有评论,来说两句吧...