web页面播放arm格式音频

web页面播放.arm格式音频,arm-js语音插件

 

AMR 录音机

(README in English)

纯前端解码、播放、录音、编码 AMR 音频,无须服务器支持,基于 amr.js 和 RecorderJs

注意:由于使用了 amr.js 做编码和解码,因此 js 文件(压缩后,未 gzip)接近 500 KB,使用前请考虑。

特性

  • 方便的 API 实现解码、播放、录音、编码 AMR 文件。
  • 支持 url 和 blob (即<input type="file">)方式获取 AMR。
  • 支持将浏览器 <audio> 所支持的音频格式(例如 MP3 或 OGG 音频)转换成 AMR 音频。
  • 编码后的 AMR 文件可下载,无须服务器。

 

安装

 

方法一:引入 js 文件

<script type="text/javascript" src="./BenzAMRRecorder.min.js"></script>

方法二:使用 npm

npm install benz-amr-recorder
var BenzAMRRecorder = require('benz-amr-recorder');

 

用法

 

播放 AMR:

注意事项:跨域问题!!!!

var amr = new BenzAMRRecorder();

amr.initWithUrl('path/to/voice.amr').then(function() {

  amr.play();

});

amr.onEnded(function() {

  alert('播放完毕');

})

 

 

 

播放本地文件:

<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();

  });

}

 

 

 

录制 AMR:

var amrRec = new BenzAMRRecorder();

amrRec.initWithRecord().then(function() {

  amrRec.startRecord();

});

 

 

 

下载 AMR:

window.location.href = window.URL.createObjectURL(amr.getBlob());

 

 

 

把 MP3 转换成 AMR (需要浏览器原生支持 MP3):

var amrFromMp3 = new BenzAMRRecorder();

amrFromMp3.initWithUrl('path/to/file.mp3').then(function() {

  // 下载 amr 文件

  window.location.href = window.URL.createObjectURL(amrFromMp3.getBlob());

})

 

 

 

 

 

 

API

初始化对象

/**

 * 是否已经初始化

 * @return {boolean} 

 */

amr.isInit();

 

/**

 * 使用浮点数据初始化

 * @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);

 

/**

 * 初始化录音

 * @return {Promise} 

 */

amr.initWithRecord();

事件

注意:事件不会叠加,也就是说,新注册的事件将覆盖掉旧的事件。

 

/**

 * 播放

 * @param {Function} fn 

 */

amr.onPlay(function() {

  console.log('开始播放');

});

 

/**

 * 停止(包括播放结束)

 * @param {Function} fn 

 */

amr.onStop(function() {

  console.log('停止播放');

});

 

/**

 * 播放结束

 * @param {Function} fn 

 */

amr.onEnded(function() {

  console.log('播放结束');

});

 

/**

 * 开始录音

 * @param {Function} fn 

 */

amr.onStartRecord(function() {

  console.log('开始录音');

});

 

/**

 * 结束录音

 * @param {Function} fn 

 */

amr.onFinishRecord(function() {

  console.log('结束录音');

});

播放控制

 

/**

 * 播放

 */

amr.play();

 

/**

 * 停止

 */

amr.stop();

 

/**

 * 是否正在播放

 * @return {boolean} 

 */

amr.isPlaying();

录音控制

 

/**

 * 开始录音

 */

amr.startRecord();

 

/**

 * 结束录音,并把录制的音频转换成 AMR

 * @return {Promise} 

 */

amr.finishRecord();

 

/**

 * 放弃录音

 */

amr.cancelRecord();

 

/**

 * 是否正在录音

 * @return {boolean} 

 */

amr.isRecording();

其他

 

/**

 * 获取音频的时间长度(单位:秒)

 * @return {Number} 

 */

amr.getDuration();

 

/**

 * 获取 AMR 文件的 Blob 对象(用于下载文件)

 * @return {Blob} 

 */

amr.getBlob();

 

 

 

尚未完成的特性

  • 使用 Worker 编码解码 AMR。
  • 暂停功能。
  • 播放进度控制。

 

原文地址:https://www.npmjs.com/package/amr-js   

演示地址:https://benzleung.github.io/benz-amr-recorder/demo.html

源码地址:https://github.com/BenzLeung/benz-amr-recorder/tree/757f1d711f321d3f37e049a3b389e2a5410d9fd7

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值