benz-amr-recorder
纯前端解码、播放、录音、编码AMP音频,无需服务器支持,基于amr.js和RecorderJs
注意:由于使用了amr.js做编码和解码,因此js文件(压缩后,未gzip)接近500KB
特性
- 方便的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() {
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()
网友评论