BenzAMRRecorder---benz-amr-recorder

最近在写一个微信公众号的后台管理系统,管理消息互发,模板消息,自动回复,菜单设置等等这些接口,其中接收用户发给公众号的语音消息,格式是.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');

官方示例的播放本地文件:




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 对象初始化( )
 * @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
        })
      },

你可能感兴趣的:(vue,其他)