美文网首页
benz-amr-recorder

benz-amr-recorder

作者: 金桔柠檬加冰 | 来源:发表于2019-06-18 17:20 被阅读0次

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

    相关文章

      网友评论

          本文标题:benz-amr-recorder

          本文链接:https://www.haomeiwen.com/subject/tucqqctx.html