vue3实现H5网页录音并上传(mp3、wav)兼容Android、iOS和PC端

这篇具有很好参考价值的文章主要介绍了vue3实现H5网页录音并上传(mp3、wav)兼容Android、iOS和PC端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用 Recorder插件 可以在HTML5网页中进行录音,录音完成后得到blob文件对象,然后将blob上传到服务器;项目使用的vue3.0版本(这个插件同时支持vue2.0、也支持uniapp,很强!!),录音过程中会显示可视化波形,同时能够做到兼容PC端、Android、和iOS,一次编码 到处运行,哈哈~省了不少事

步骤1:
npm安装recorder-core插件包(Recorder插件的GitHub文档 | Gitee文档)

npm install recorder-core

步骤2:
在需要录音的组件中引入插件,和对应录音格式的编码器、可视化插件

//必须引入的核心
import Recorder from 'recorder-core'

//引入mp3格式支持文件;如果需要多个格式支持,把这些格式的编码引擎js文件放到后面统统引入进来即可
import 'recorder-core/src/engine/mp3'
import 'recorder-core/src/engine/mp3-engine'
//录制wav格式的用这一句就行
//import 'recorder-core/src/engine/wav'

//可选的插件支持项,这个是波形可视化插件
import 'recorder-core/src/extensions/waveview'

//ts import 提示:npm包内已自带了.d.ts声明文件(不过是any类型)

步骤3:
先编写部分界面,3个按钮,1个可视化波形显示区域

<template>
<div>
	<div> <!-- 按钮 -->
		<button @click="recOpen">打开录音,请求权限</button>
		| <button @click="recStart">开始录音</button>
		  <button @click="recStop">结束录音</button>
		| <button @click="recPlay">本地试听</button>
	</div>
	<div style="padding-top:5px"> <!-- 波形绘制区域 -->
		<div style="border:1px solid #ccc;display:inline-block;vertical-align:bottom">
			<div style="height:100px;width:300px;" ref="recwave"></div>
		</div>
	</div>
</div>
</template>

步骤4:
打开录音,申请录音权限(这些方法都是放到methods里面,下同)

,recOpen(){
	//创建录音对象
	this.rec=Recorder({
		type:"mp3" //录音格式,可以换成wav等其他格式
		,sampleRate:16000 //录音的采样率,越大细节越丰富越细腻
		,bitRate:16 //录音的比特率,越大音质越好
		,onProcess:(buffers,powerLevel,bufferDuration,bufferSampleRate,newBufferIdx,asyncEnd)=>{
			//录音实时回调,大约1秒调用12次本回调
			//可实时绘制波形,实时上传(发送)数据
			if(this.wave) this.wave.input(buffers[buffers.length-1],powerLevel,bufferSampleRate);
		}
	});
	
	//打开录音,获得权限
	this.rec.open(()=>{
		console.log("录音已打开");
		if(this.$refs.recwave){//创建音频可视化图形绘制对象
			this.wave=Recorder.WaveView({elem:this.$refs.recwave});
		}
	},(msg,isUserNotAllow)=>{
		//用户拒绝了录音权限,或者浏览器不支持录音
		console.log((isUserNotAllow?"UserNotAllow,":"")+"无法录音:"+msg);
	});
}

步骤5:
开始录音,和结束录音

,recStart(){
	if(!this.rec){ console.error("未打开录音");return }
	this.rec.start();
	console.log("已开始录音");
}

,recStop(){
	if(!this.rec){ console.error("未打开录音");return }
	this.rec.stop((blob,duration)=>{
		//blob就是我们要的录音文件对象,可以上传,或者本地播放
		this.recBlob=blob;
		//简单利用URL生成本地文件地址,此地址只能本地使用,比如赋值给audio.src进行播放,赋值给a.href然后a.click()进行下载(a需提供download="xxx.mp3"属性)
		var localUrl=(window.URL||webkitURL).createObjectURL(blob);
		console.log("录音成功",blob,localUrl,"时长:"+duration+"ms");
		
		this.upload(blob);//把blob文件上传到服务器
		
		this.rec.close();//关闭录音,释放录音资源,当然可以不释放,后面可以连续调用start
		this.rec=null;
	},(err)=>{
		console.error("结束录音出错:"+err);
		this.rec.close();//关闭录音,释放录音资源,当然可以不释放,后面可以连续调用start
		this.rec=null;
	});
}

步骤6:
上传录音文件到服务器,和本地直接试听

,upload(blob){
	//使用FormData用multipart/form-data表单上传文件
	//或者将blob文件用FileReader转成base64纯文本编码,使用普通application/x-www-form-urlencoded表单上传
	var form=new FormData();
	form.append("upfile",blob,"recorder.mp3"); //和普通form表单并无二致,后端接收到upfile参数的文件,文件名为recorder.mp3
	form.append("key","value"); //其他参数
	
	var xhr=new XMLHttpRequest();
	xhr.open("POST", "/upload/xxxx");
	xhr.onreadystatechange=()=>{
		if(xhr.readyState==4){
			if(xhr.status==200){
				console.log("上传成功");
			}else{
				console.error("上传失败"+xhr.status);
			};
		};
	};
	xhr.send(form);
}

,recPlay(){
	//本地播放录音试听,可以直接用URL把blob转换成本地播放地址,用audio进行播放
	var localUrl=URL.createObjectURL(this.recBlob);
	var audio=document.createElement("audio");
	audio.controls=true;
	document.body.appendChild(audio);
	audio.src=localUrl;
	audio.play(); //这样就能播放了
	
	//注意不用了时需要revokeObjectURL,否则霸占内存
	setTimeout(function(){ URL.revokeObjectURL(audio.src) },5000);
}

附:Recorder的更多方法

rec.open(success,fail) //打开录音,请求录音权限
rec.close() //关闭录音,释放麦克风资源

rec.start() //开始录音
rec.stop(success,fail) //结束录音

rec.pause() //暂停录音
rec.resume() //恢复继续录音

//可视化插件:WaveView插件
import 'recorder-core/src/extensions/waveview'

//可视化插件:WaveSurferView插件
import 'recorder-core/src/extensions/wavesurfer.view'

//可视化插件:FrequencyHistogramView插件
import 'recorder-core/src/extensions/frequency.histogram.view'
import 'recorder-core/src/extensions/lib.fft'

//BufferStreamPlayer插件:实时播放录音片段文件,把片段文件转换成MediaStream流
import 'recorder-core/src/extensions/buffer_stream.player'

//ASR_Aliyun_Short插件:阿里云语音识别(语音转文字),支持实时语音识别、单个音频文件转文字
import 'recorder-core/src/extensions/asr.aliyun.short'

//Sonic插件:变速变调插件
import 'recorder-core/src/extensions/sonic'

附这个插件的在线测试地址:https://xiangyuecn.gitee.io/recorder/

vue3项目打包后,放服务器里面,同时开启https访问(必须https才能录音,本地localhost没有这个限制),然后电脑、Android、iOS上打开这个网页就都能录音了(但有些浏览器不能录音,比如UC、夸克,不过好在手机系统自带浏览器、微信里面都能录音,效果还是很不错的)。

【完】文章来源地址https://www.toymoban.com/news/detail-478974.html

到了这里,关于vue3实现H5网页录音并上传(mp3、wav)兼容Android、iOS和PC端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 怎么把手机录音转换成mp3?

        录音功能总是广泛而重要,有了录音,在没有特殊的要求下,都不必再手工记录一些内容了。特别是遇到一些内容较为关键,身边又没有笔和纸的情况下,我们只需打开手机录音功能,就可以把所有内容进行留存,方便日后反复听取。但是手机录音不是MP3格式,它上传到

    2024年02月15日
    浏览(33)
  • 音频文件PCM、WAV、MP3的区别以及文件合并

    采样率即采样频率,指的一秒内的采样次数,它反映了采样点之间的间隔大小。常说的 44.1KHz 采样率,也即 1 秒采集了 44100 个样本。间隔越小,丢失的信息越少,数字声音就越逼真细腻,要求的存储量也就越大。由于计算机的工作速度和存储容量有限,而且人耳的听觉上限为

    2024年02月15日
    浏览(27)
  • Java pcm/wav文件转mp3(流的方式)

    pcm与wav文件是无损音质,几分钟的文件就高达20几M,要求将pcm/wav文件转mp3文件,既完成文件的压缩,又不影响使用。 网上找了很多例子,大都是Lame与FFmpeg,但前者的例子总是DOS命令控制lame.exe,后者好些,但是需要使用音频文件的绝对路径,这就需要频繁创建临时文件,不

    2024年02月14日
    浏览(24)
  • 手机录音m4a怎么转换成mp3

        手机录音m4a怎么转换成mp3?手机录音文件的格式种类比较多,有时候不同品牌的手机录音都有自己的音频格式,不过最常见的手机录音格式还是mp3。不过iphone手机的录音格式就比较特殊,是m4a格式,m4a是由苹果公司发布的音频格式,专用于iphone手机等苹果设备上。既然

    2024年02月13日
    浏览(28)
  • mp3怎样才能转换成wav格式?音频互相转换的方法

    一,什么是WAV WAV,全称为波形音频文件(Waveform Audio File Format),是一种由微软公司和IBM公司联合开发的音频文件格式。自1991年问世以来,WAV格式因其无损的音频质量和广泛的兼容性,成为了多媒体应用中不可或缺的一部分。本文将从WAV格式的定义、特点、应用以及与其他音

    2024年04月14日
    浏览(30)
  • 怎么把wav转换成mp3格式,5种方法值得收藏

           怎么把wav转换成mp3格式?wav格式相信很多小伙伴们不是很熟悉,这种文件格式通常用于录音室等一些专业音乐项目上,那么wav格式和mp3格式有什么区别呢?wav全名Waveform Audio File Format,是微软公司开发的一种声音文件格式,符合RIFF文件规范,用于保存Windows平台的音频

    2023年04月10日
    浏览(29)
  • 苹果手机录音m4a格式怎么转成mp3

           苹果手机录音m4a格式怎么转成mp3?想想我们都会遇到这样的问题。因为现在使用苹果手机的人都上亿了,而且用手机录音时常会有。只是用苹果手机录音的格式无法选择都是默认的m4a,所以苹果手机录音后无法在很多其他平台播放。所以苹果手机录音m4a格式怎么转成

    2024年02月07日
    浏览(36)
  • 已解决:H5移动端网页实现录音功能,js实现录音功能,包括安卓webview接口也可以使用

    遇到一个需求,需要做一个手机网页录音的功能,嵌入到webview中去,用安卓原生录音倒是可以,但是想着尽量去安卓化开发,就想着用纯的js前端代码去实现录音功能。 在 Web 应用程序中,JavaScript 是运行在浏览器中的客户端脚本语言,不具有直接访问设备硬件的能力。因此

    2024年02月07日
    浏览(35)
  • 使用ffmpeg将m4a及wav等文件转换为MP3格式

    要使用ffmpeg将m4a及wav等文件转换为MP3格式,您可以按照以下步骤进行操作: 确保您已经安装了ffmpeg软件。如果没有安装,请访问ffmpeg的官方网站https://ffmpeg.org/ 并按照说明进行安装。 Win10 / Win11 可以通过 winget 命令安装 注意前提已经在微软应用商店安装了 应用安装程序 安装

    2024年02月13日
    浏览(22)
  • 【Python】将M4A\AAC录音文件转换为MP3文件

    基础环境: 要将M4A文件转换为MP3文件,你可以使用Python中的第三方库 pydub 。 pydub 使得音频处理变得非常简单。在开始之前,请确保你已经安装了 pydub 库,如果没有,可以通过以下命令安装: 接下来,你可以使用以下代码将M4A文件转换为MP3文件: 将上述代码中的 input_m4a_f

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包