benz-amr-recorder

benz-amr-recorder

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

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

特性

  • 方便的API实现解码、播放、录音、编码AMR文件
  • 支持url和blob(即)方式获取AMR
  • 支持将浏览器
  • 编码后的AMR文件可下载,无须服务器

安装

方法一:引入js文件


方法二:使用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('播放完毕')
})

播放本地文件:


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() {
    window.location.href = window.URL.createObjectURL(amrFromMp3.getBlob())
})

API

初始化对象

// 是否已经初始化
amr.isInit()
// 使用浮点数初始化
amr.initWithArrayBuffer(array)
// 使用Blob对象初始化
amr.initWithBlob(blob)
// 使用url初始化
amr.initWithUrl(url)
// 初始化录音
amr.initWithRecord()

事件

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

// 播放
amr.onPlay(function() {
    console.log('开始播放')
})
// 停止(包括播放结束)
amr.onStop(function() {
    console.log('停止播放')
})
// 播放结束
amr.onEnded(function() {
    console.log('播放结束')
})
// 播放到结尾自动结束
amr.onAutoEnded(function() {
    console.log('播放自动结束')
})
// 开始录音
amr.onStartRecord(function() {
    console.log('开始录音')
})
// 结束录音
amr.onFinishRecord(function() {
    console.log('结束录音')
})

播放控制

// 播放
amr.play()
// 停止
amr.stop()
// 是否正在播放
amr.isPlaying()

录音控制

// 开始录音
amr.startRecord()
// 结束录音,并把录音的音频转换成AMR
amr.finishRecord()
// 放弃录音
amr.cancelRecord()
// 是否正在录音
amr.isRecording()

其他

// 获取音频的时间长度
amr.getDuration()
// 获取AMR文件的Blob对象(用于下载文件)
amr.getBlob()

你可能感兴趣的:(benz-amr-recorder)