uniapp制作录音播放功能

简介: uniapp制作录音播放功能

一、思路

首选录音功能,这个功能可以使用uniapp中的API  uni.getRecorderManager()  获取全局唯一的录音管理器recorderManager。这样就可以进行开始录音、暂停录音等功能,具体方法可以进入官网查看;之后在停止录音的监听事件中,可以获取到当前录音结束后,音频的临时地址,此时可以在页面中添加啊一个audio标签,把临时路径放入src中,即可播放。

二、具体实现

1.页面中添加按钮,弹出录音弹出窗

<template>
  <view class="container">
    <view @click="showaPopup('bottom')">
      添加录音
    </view>
    <!-- 录音弹窗弹窗 -->
    <uni-popup ref="audioPopup" background-color="#fff">
      <view style="width: 100%;padding-top: 40rpx;display: flex;flex-wrap: wrap;justify-content: center;">
        <audio :src="audioUrl" v-show="audioUrl != ''" controls name="病患说明" :author="now.nickname"></audio>
        <view class="audio_func">
          <text style="line-height: 3;color: #ff4242;" @click="resetRecording()">重置</text>
          <image class="audio_img" src="/static/停止.png" mode="" @click="stopRecording" v-if="audioStatus">
          </image>
          <image class="audio_img" src="/static/开始.png" mode="" @click="startRecording" v-else></image>
          <text style="line-height: 3;color: #8f8f8f;" @click="onClosea()">上传</text>
        </view>
        <text class="record_time">{{formattedDuration}}</text>
      </view>
    </uni-popup>
  </view>
</template>

2.事件

<script>
  export default {
    data() {
      return {
        recorderManager: null,
        duration: 0,
        timer: null,
        audioStatus: false,
        audioUrl: '',
        reset: false,
      }
    },
    methods: {
      startRecording() {
        // 获取 RecorderManager 实例
        this.recorderManager = uni.getRecorderManager();
        // 开始录音
        this.recorderManager.start({
          format: 'mp3' // 录音格式
        });
        // 监听录音状态变化
        this.recorderManager.onStart(() => {
          console.log('录音开始');
          this.audioStatus = true
          this.duration = 0;
          clearInterval(this.timer);
          this.timer = setInterval(() => {
            this.duration++;
          }, 1000);
        });
        this.recorderManager.onStop(res => {
          console.log('录音停止', res.tempFilePath);
          if (this.reset == false) {
            this.audioUrl = res.tempFilePath
          } else {
            this.audioUrl = ''
          }
          this.audioStatus = false
          clearInterval(this.timer);
        });
      },
      // 停止
      stopRecording() {
        this.reset = false
        this.duration = 0
        this.recorderManager.stop();
      },
      // 重置
      resetRecording() {
        this.recorderManager.stop();
        this.reset = true
        this.audioUrl = ''
        this.duration = 0
      },
      // 打开录音弹窗
      showaPopup(type) {
        this.type = type
        // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
        this.$refs.audioPopup.open(type)
      },
      // 上传录音弹窗
      onClosea() {
        if (this.audioUrl == '') {
          uni.showToast({
            title: '请输传入录音',
            icon: 'none'
          });
          return
        }
        this.$refs.audioPopup.close()
      },
    },
    computed: {
      formattedDuration() {
        let minutes = Math.floor(this.duration / 60);
        let seconds = this.duration % 60;
        return `${minutes}:${seconds < 10 ? '0' + seconds : seconds}`;
      }
    }
  }
</script>

这是完整的一套流程了,点击录音图标,开始录音,并计时,停止后,显示audio元素,src则为停止录音后的音频临时路径,可播放,点击重置,清除录音实例,以及临时路径,隐藏audio元素。

其中样式按需调整,大致功能就是如此,如需其他录音的方法,可前往官方文档查看,录音管理 ,希望可以帮助到大家


目录
相关文章
|
19天前
|
PHP
全新uniapp小说漫画APP小说源码/会员阅读/月票功能
价值980的uniapp小说漫画APP小说源码/会员阅读/月票功能
75 20
|
15天前
|
前端开发 数据库 UED
uniapp开发,前后端分离的陪玩系统优势,陪玩app功能特点,线上聊天线下陪玩,只要4800
前后端分离的陪玩系统将前端(用户界面)和后端(服务器逻辑)分开开发,前者负责页面渲染与用户交互,后者处理数据并提供接口。该架构提高开发效率、优化用户体验、增强可扩展性和稳定性,降低维护成本,提升安全性。玩家可发布陪玩需求,陪玩人员发布服务信息,支持在线聊天、预约及线下陪玩功能,满足多样化需求。[演示链接](https://www.51duoke.cn/games/?id=7)
|
17天前
|
存储 移动开发 安全
做一款校园二手交友找搭子跑腿陪玩圈子系统综合性圈子系统/搭建圈子论坛系统/校园圈子论坛系统-自带校园跑腿功能/基于uniapp的校园圈子系统
制作一款基于uni-app的校园二手交友找搭子跑腿陪玩圈子系统综合性校园圈子系统,需要综合考虑多个方面,包括需求分析、系统设计、技术开发、功能实现以及后续的运营与维护。
45 0
|
4月前
|
开发工具
uniapp, 短剧视频类App实现参考,支持滑动播放,仿抖音 仿陌陌 短视频 无限滑动播放 视频流
阿里云点播服务web播放器sdk,短剧视频类App实现参考。仿抖音 仿陌陌 短视频 无限滑动播放 视频流。无uniapp video 原生组件的层级、遮挡、覆盖问题,适合与不同功能视图组合使用,实现丰富的应用功能。
uniapp, 短剧视频类App实现参考,支持滑动播放,仿抖音 仿陌陌 短视频 无限滑动播放 视频流
|
7月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的电影播放平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的电影播放平台附带文章和源代码部署视频讲解等
37 0
|
3月前
|
JavaScript 数据安全/隐私保护
uniapp功能权限判断$auth.auth $auth.role显示判断生成源码
uniapp功能权限判断$auth.auth $auth.role显示判断生成源码
41 0
|
5月前
|
开发框架 移动开发 前端开发
基于SqlSugar的开发框架循序渐进介绍(19)-- 基于UniApp+Vue的移动前端的功能介绍
基于SqlSugar的开发框架循序渐进介绍(19)-- 基于UniApp+Vue的移动前端的功能介绍
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的多功能智能手机阅读APP附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的多功能智能手机阅读APP附带文章源码部署视频讲解等
91 1
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现
98 12
下一篇
开通oss服务