vue项目手机录音

手机实现录音功能,安卓和苹果都可。功能,点击开始录制录音后,随时可以停止录音,如果不点击停止最多录制15秒。

在这里插入图片描述
在这里插入图片描述

页面结构

<!--音频-->
<div class="audio-box"><audio id="audioPlayer"controlscontrolslist="noplaybackrate nodownload"preload="auto"></audio><i @click="deleteAudio" class="el-icon-delete"></i>
</div><!--录制按钮-->
<div class="out-ring"><!--未录制状态--><div @click="startRecording" v-show="!isRecording" class="in-ring"><img src="@/assets/img/audio.png" alt="" style="height:48px;"></div><!--录制中--><div v-show="isRecording" @click="stopClick" class="in-ring"><div class="red-square"></div></div>
</div>
<!--录制提示-->
<div v-show="!isRecording" class="tip">点击录制音频</div>

函数

/*** 开始录音*/
async startRecording() {let that = thistry {const stream = await navigator.mediaDevices.getUserMedia({audio: true});that.mediaRecorder = new MediaRecorder(stream);that.mediaRecorder.ondataavailable = e => {that.audioChunks.push(e.data);};that.mediaRecorder.start();that.isRecording = true;that.timer = setTimeout(that.stopRecording, 15000);} catch (err) {that.$toast('录音失败')}
},/*** 结束录音*/
stopRecording() {this.mediaRecorder.stop();this.mediaRecorder.onstop = () => {let audioBlob = new Blob(this.audioChunks, {'type': 'audio/mp3; codecs=opus'});let soundUrl = URL.createObjectURL(audioBlob);//生成file对象let file = new File([audioBlob], 'yinpin.mp3', {type: 'application/json',lastModified: Date.now()})//页面播放录音this.showAudio(soundUrl)this.$store.commit('SET_AUDIO_FILE', file)this.$store.commit('SET_AUDIO_URL', soundUrl)// 重置音频块数组以备下次录音this.audioChunks = [];};this.isRecording = false;this.$toast('录音结束')
},/*** 停止录音点击事件*/
stopClick() {clearTimeout(this.timer);this.timer = nullthis.stopRecording()
},/*** 展示音频*/
showAudio(Url) {let audio = document.getElementById('audioPlayer');audio.src = Url;audio.load();
},/*** 删除音频*/
deleteAudio() {this.showAudio('');this.audioChunks = [];this.$store.commit('SET_AUDIO_FILE', null)this.$store.commit('SET_AUDIO_URL', null)
}

注意,在项目尚未发布时,也就是前端在手机上测试录音功能时,会出现navigator.mediaDevices未定义的情况,可以百度搜索,有三种解决办法。我的解决办法是:使用内网穿透,生成一个公网ip,就可以解决这个问题。具体教程可以参考这边文章:https://blog.csdn.net/qq_42978230/article/details/113618902。使用时,注意将本地地址改为localhost,文章中未提及这个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改element-ui日期下拉框datetimePicker的背景色样式

如图&#xff1a; 1、修改背景色 .el-date-picker.has-sidebar.has-time { background: #04308D; color: #fff; border: 1px solid #326AFF } .el-date-picker__header-label { color: #ffffff; } .el-date-table th { color: #fff; } .el-icon-d-arrow-left:before { color: …

从零搭建Java酒店预订系统:实战指南_01

项目介绍 一、 项目概述 项目背景: 模拟真实酒店预订流程,实现核心功能角色设定: 顾客、前台、后勤管理(可选:管理员)技术选型: Java + Spring Boot + 数据库(MySQL)+ 前端框架(Vue.js/React等)二、 需求分析与功能设计 功能模块划分: 用户模块:用户注册、登录、…

Postgres14.4(Docker安装)

Postgres14.4&#xff08;Docker安装&#xff09; 一&#xff0c;Docker拉取镜像 docker pull postgres:14.4 #检查镜像是否拉取成功 docker images | grep postgres二&#xff0c;新建挂载目录&#xff0c;并运行容器 mkdir -p /data/postgre/data chmod 777 /data/postgre…

AQS同步队列、条件队列源码解析

AQS详解 前言AQS几个重要的内部属性字段内部类 Node同步队列 | 阻塞队列等待队列 | 条件队列 重要方法执行链同步队列的获取、阻塞、唤醒加锁代码流程解锁 条件队列的获取、阻塞、唤醒大体流程 调用await()方法1. 将节点加入到条件队列2. 完全释放独占锁3. 等待进入阻塞队列4. …

【Python】探索 Pandas 中的 where 方法:条件筛选的利器

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 &#x1f3b5; 王心凌《那年夏天宁静的海》 在数据分析中&#xff0c;Pandas 是一个强大且…

小程序安卓手机点击uni-data-select 下拉框选择器会出现蓝色阴影

解决方法&#xff1a;在导入的包中找到uni-data-select.vue&#xff0c;接着找到.uni-stat__select样式&#xff0c;把cursor: pointer去掉。 如果出现穿透问题&#xff0c;uni-select__selector的z-index加高&#xff0c;默认是2。

数据库MyBatis传递数组或集合

应用场景 假设你有两个表&#xff0c;一个是商品信息表&#xff08;表1&#xff0c;例如商品类别信息&#xff09;&#xff0c;另一个是库存信息表&#xff08;表2&#xff0c;记录每种商品的库存数量&#xff09;。你想知道特定几个商品类别 &#xff08;通过其ID标识&#xf…

其他OpenAI API和功能

文章目录 嵌入嵌入如何为ML模型翻译语言内容审核模型Whisper 和 DALL.E除了文本补全功能,OpenAl用户还可以使用其他一些功能但如果你想深入了解所有API那么请查看OpenAl的APl reference 页面。 嵌入 由于模型依赖数学函数,因此它需要数值输入来处理信息。然而,许多元素(如…

zdppy_api+vue3+antd开发前后端分离的预加载卡片实战案例

后端代码 import api import upload import timesave_dir "uploads"async def rand_content(request):key api.req.get_query(request, "key")time.sleep(0.3)return api.resp.success(f"{key} " * 100)app api.Api(routes[api.resp.get(&qu…

UnityUGUI之二 CameraTargetTexture

在我们需要将3D物体呈现在2D视角时就可以使用TargetTexture&#xff0c;若想只显示3D物体则需改变背景颜色&#xff0c;并且得再增加一个相机

智慧城市新利器:免费可视化工具助力高效管理

在智慧城市的建设中&#xff0c;实现高效的统筹管理是至关重要的。通过免费可视化工具“山海鲸可视化”&#xff0c;这一目标可以轻松达成。山海鲸可视化是一款免费可视化工具&#xff0c;具备二三维融合、易用性、安全性以及高质量画面渲染等特色&#xff0c;是制作智慧城市可…

什么是数据安全?

网络中的数据安全是一种无价的资产&#xff0c;数据信息在人们的日常生活中无处不在&#xff0c;但同时也面临着前所未有的安全挑战&#xff0c;那什么是数据安全呢&#xff1f;数据安全有着哪些特点呢&#xff1f; 数据安全主要就是指保护数据不会受到未经过授权的IP进行访问、…

数据结构—选择题

01-数据结构—判断题 71.在数据结构中&#xff0c;从逻辑上可以把数据结构分为&#xff08; &#xff09;。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 线性结构和非线性结构 D. 内部结构和外部结构 答案&#xff1a;C 72.当输入规模为n时&#xff0c;下列算法…

Elasticsearch及其相关工具的安装

Elasticsearch及其相关工具的安装 传送门&#xff1a;https://pan.baidu.com/s/1d83Ak4kHOJHIgCC7Hhjikw 提取码&#xff1a;ABCE 推荐使用8.12.12版本&#xff0c;8.14.1没有找到ik分词器 Elasticsearch 是什么 Elasticsearch检查ES&#xff0c;是一个开源的分布式搜索和存…

AI推介-信息抽取(information extraction,NER)论文速览(arXiv方向):2023.08.01-2024.10.15

文章目录&#xff5e; 1.Reconstructing Materials Tetrahedron: Challenges in Materials Information Extraction2.Utilizing Contextual Clues and Role Correlations for Enhancing Document-level Event Argument Extraction3.Benchmarking Large Language Models with Au…

如何获得更高质量的回答-chatgpt

在与技术助手如ChatGPT进行交互时&#xff0c;提问的方式直接影响到你获得的答案质量。以下是几个关键的提问技巧&#xff0c;可以帮助你在与ChatGPT的互动中获得更有效的回答&#xff1a; 1. 清晰明了的问题 技巧&#xff1a;确保问题清晰明了&#xff0c;避免含糊不清或模糊的…

短信群发平台:验证码在不同行业的应用

1、手机号码真实性验证&#xff1a;用户注册会员时&#xff0c;为了获取用户真实的手机号码&#xff0c;需要通过手机短信验证功能&#xff0c;确保用户填写的手机号码的真实性。 2、用户找回密码&#xff1a;用户有可能会忘记掉自己的密码甚至用户名&#xff0c;如果该会员已…

Python自定义线程池,这么高效,是不是开了挂?

目录 1、线程池基础 🏗️ 1.1 线程池概念与优势 1.2 Python标准库concurrent.futures简介 示例代码:使用ThreadPoolExecutor执行简单任务 2、利用ThreadPoolExecutor定制 🎛️ 2.1 创建自定义线程池类 示例代码:自定义ThreadPoolExecutor子类 2.2 设置线程池参数与…

四.iOS核心动画 - 图层的视觉效果

引言 在前几篇博客中我们讨论了图层的frame,bounds,position以及让图层加载图片。但是图层事实上不仅可以显示图片&#xff0c;或者规则的矩形块&#xff0c;它还有一系列内建的特性来创建美丽优雅的页面元素。在这篇博客中我们就来探索一下CALayer的视觉效果。 视觉效果 图…

java笔记(29)——动态代理(工厂模式)【示例】

文章目录 动态代理&#xff08;工厂模式&#xff09;接口类实体类代理类测试类 动态代理&#xff08;工厂模式&#xff09; 接口类 package com.itchen.proxytest;public interface Star {public abstract String sing(String name);public abstract void dance(); }实体类 …