首页 > 其他分享 >js-audio-recorder 插件实现web端录音

js-audio-recorder 插件实现web端录音

时间:2023-06-19 18:22:32浏览次数:59  
标签:返回 web 插件 void 录音 js error recorder

介绍

js-audio-recorder是一个纯js实现的浏览器端录音插件。
目前支持以下功能:

  • 录音,暂停,恢复,和录音播放。
  • 音频数据的压缩,支持单双通道录音。
  • 录音时长、录音大小的显示。
  • 导出录音文件,格式为pcm或wav。
  • 录音波形显示,可自己定制。

相关链接

GitHub地址
官网主页地址
项目在线演示地址

前提条件

需要使用127.0.0.1或localhost尝试,因为getUserMedia在高版本的chrome下需要使用https。

安装

npm安装

npm i js-audio-recorder

引入使用

import Recorder from 'js-audio-recorder';

let recorder = new Recorder({
    sampleBits: 16,                 // 采样位数,支持 8 或 16,默认是16
    sampleRate: 16000,              // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000
    numChannels: 1,                 // 声道,支持 1 或 2, 默认是1
    // compiling: false,(0.x版本中生效,1.x增加中)  // 是否边录边转换,默认是false
});

更多详细属性见官方文档 点击查看更多属性

常用方法

getPermission()

未给予录音权限的页面在开始录音时需要再次点击允许录音,才能真正地录音,存在丢失开始这一段录音的情况,增加方法以便用户提前获取麦克风权限。

Recorder.getPermission().then(() => {
    console.log('给权限了');
}, (error) => {
    console.log(`${error.name} : ${error.message}`);
});

start()

开始录音,返回Promise

recorder.start().then(() => {
    // 开始录音
}, (error) => {
    // 出错了
    console.log(`${error.name} : ${error.message}`);
});

pause()

暂停录音,返回void

recorder.pause();

resume()

继续录音,返回void

recorder.resume();

stop()

结束录音,返回void

recorder.stop();

play()

播放录音,返回void

recorder.play();

pausePlay()

暂停播放录音,返回void

recorder.pausePlay();

resumePlay()

恢复播放录音,返回void

recorder.resumePlay();

stopPlay()

停止播放录音,返回void

recorder.stopPlay();

destroy()

销毁实例,返回Promise

// 销毁录音实例,置为null释放资源,fn为回调函数,
recorder.destroy().then(function() {
    recorder = null;
});

getPCMBlob()

获取 PCM 数据,在录音结束后使用,返回Blob
注:使用该方法会默认调用 stop() 方法。

recorder.getPCMBlob();

getWAVBlob()

获取 WAV 数据,在录音结束后使用,返回Blob
注:使用该方法会默认调用 stop() 方法。

recorder.getWAVBlob();

更多api详见文档 点击查看更多api

标签:返回,web,插件,void,录音,js,error,recorder
From: https://www.cnblogs.com/lpkshuai/p/17491846.html

相关文章

  • js WebUploader 分块上传
    ​ 由于项目需要上传文件到服务器,于是便在文件上传的基础上增加了拖拽上传。拖拽上传当然属于文件上传的一部分,只不过在文件上传的基础上增加了拖拽的界面,主要在于前台的交互, 拖拽上传区域-->class="dropBox_wrap"><div id="dropbox" class="drop"><h4>请将文件拖拽到此......
  • SpringMVC WebUploader 分块上传
    ​ 4GB以上超大文件上传和断点续传服务器的实现随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。但是在很多情况下,平台运营方并没有大文件上传和断点续传的开发经验,往往在网上找一些简单的PHP或者Java程序来实现基......
  • Turndown 源码分析:五、节点相关`root-node.js`和`node.js`
    importcollapseWhitespacefrom'./collapse-whitespace'importHTMLParserfrom'./html-parser'import{isBlock,isVoid}from'./utilities'//单独构造的根节点,防止输入字符串含有多个根元素exportdefaultfunctionRootNode(input,options){var......
  • 【uniapp框架错误】[ERROR] reportJSException >>>> exception function:createInstance,
    【uniapp框架错误】[ERROR]reportJSException>>>>exceptionfunction:createInstance,exception h5端运行正常,一用基座连接手机端就会报这个错误reportJSException>>>>exceptionfunction:createInstanceContext,exception:whitescreencausecreateinstanceContextfaile......
  • js substr方法截取截断emoji图标问题
    functionsafeSubstring(str,start,length){varend=start+length;varresult="";varemojiFlag=false;for(vari=start;i<end;i++){varcharCode=str.charCodeAt(i);if(charCode>=0xd800&&charCode<=......
  • node.js安装与卸载
    一、安装:官网安装 Node.js(nodejs.org)Node安装C盘与其他盘区别,安装哪个最好!-主要区别在于权限 区别是C盘属于管理员权限,其他盘属于用户权限Node安装C盘时npminstall包cmd以管理员身份运行,必须需要管理员Node安装其他盘时,不是C盘npminstall包需要普通用户权限就可......
  • 前端WebSocket 封装
    前言实际工作中可能会遇到需要封装WebSocket的场景,以下基于ts做了WebSocket的封装,包括心跳机制和重连1、封装逻辑如下,新建ws文件://websocket封装enumConnectionState{//websocket连接状态'CONNECTING','CONNECTED','DISCONNECTED','RECONNECTING','REC......
  • 利用react-json-view最JSON数据进行渲染
    1.安装npminstall--savereact-json-view2.使用importReactJsonfrom"react-json-view";constA=()=>{letsrc={"content-length":"675","x-b3-parentspanid":"06c634eea567252a",&quo......
  • StencilJs学习之组件装饰器
    stenciljs可以方便的构建交互式组件支持以下装饰器componentstatepropwatchmethodelementeventlistenComponent装饰器@Component是一个装饰器,它将TypeScript类指定为Stencil组件。每个模板组件在构建时都会转换为Webcomponent。import{Component}from......
  • SpringCloud WebUploader 分块上传
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{    InputStreamstream=file.getInputStream();// 把文件读入    StringfilePath=request.......