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元素。

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


目录
相关文章
|
6天前
|
开发工具
uniapp, 短剧视频类App实现参考,支持滑动播放,仿抖音 仿陌陌 短视频 无限滑动播放 视频流
阿里云点播服务web播放器sdk,短剧视频类App实现参考。仿抖音 仿陌陌 短视频 无限滑动播放 视频流。无uniapp video 原生组件的层级、遮挡、覆盖问题,适合与不同功能视图组合使用,实现丰富的应用功能。
uniapp, 短剧视频类App实现参考,支持滑动播放,仿抖音 仿陌陌 短视频 无限滑动播放 视频流
|
5月前
|
移动开发 JavaScript 前端开发
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
【5月更文挑战第15天】Uniapp 和 Flutter 是跨平台开发的热门框架。Uniapp 以其强大的跨平台兼容性和基于 Vue.js 的易学性著称,适合快速开发适用于 iOS、Android 和 H5 的应用。其丰富的组件生态简化了功能集成。然而,在复杂场景下,性能可能不及原生。Flutter 则以其全新渲染引擎实现流畅界面和高度自定义,性能接近原生,但学习成本较高,需处理特定平台适配。适用于高要求的项目。两者各有优势,选择应考虑项目需求、技术储备和开发周期。
692 1
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
|
4月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的电影播放平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的电影播放平台附带文章和源代码部署视频讲解等
25 0
|
2月前
|
开发框架 移动开发 前端开发
基于SqlSugar的开发框架循序渐进介绍(19)-- 基于UniApp+Vue的移动前端的功能介绍
基于SqlSugar的开发框架循序渐进介绍(19)-- 基于UniApp+Vue的移动前端的功能介绍
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现(源码+lw+部署文档+讲解等)
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的多功能智能手机阅读APP附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的多功能智能手机阅读APP附带文章源码部署视频讲解等
58 1
|
4月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现
67 12
|
5月前
|
存储 开发框架 自然语言处理
【Uniapp 专栏】Uniapp 的多语言支持功能详解
【5月更文挑战第14天】Uniapp是一款跨平台开发框架,提供强大多语言支持,助力开发者轻松构建支持多种语言的应用,提升用户体验和市场拓展。其特点包括灵活的语言管理、跨平台一致性。通过语言文件存储内容,切换机制让用户自由切换。注重翻译准确性和文化适应性,集成到页面和组件中,同时关注性能优化。面对翻译不一致和更新及时性等问题,Uniapp将持续发展和完善,为全球化应用开发提供强有力支持。
218 3
【Uniapp 专栏】Uniapp 的多语言支持功能详解
|
3月前
|
前端开发 JavaScript 索引
uniapp的u-album组件自定义删除功能
这样,你就可以在u-album组件中实现自定义的删除功能了。需要注意的是,这个删除操作只是在前端删除了图片项,并没有在后端删除对应的图片文件,如果你需要在后端也删除对应的图片文件,你还需要在删除操作后发送一个请求到后端,让后端删除对应的图片文件。
83 0
|
5月前
|
移动开发 前端开发 JavaScript
uniapp中IO模块(管理本地文件系统)的常用功能封装
uniapp中IO模块(管理本地文件系统)的常用功能封装
405 1
下一篇
无影云桌面