当前位置:首页 > VUE

vue中实现录音下载

2026-01-22 04:53:04VUE

Vue 中实现录音下载的方法

使用 Web Audio API 和 MediaRecorder

安装必要的依赖库(如需要):

npm install recordrtc

在 Vue 组件中引入相关库:

import RecordRTC from 'recordrtc';

创建录音逻辑:

export default {
  data() {
    return {
      mediaRecorder: null,
      audioChunks: [],
      audioBlob: null,
      audioUrl: ''
    };
  },
  methods: {
    async startRecording() {
      const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
      this.mediaRecorder = new MediaRecorder(stream);

      this.mediaRecorder.ondataavailable = (event) => {
        if (event.data.size > 0) {
          this.audioChunks.push(event.data);
        }
      };

      this.mediaRecorder.onstop = () => {
        this.audioBlob = new Blob(this.audioChunks, { type: 'audio/wav' });
        this.audioUrl = URL.createObjectURL(this.audioBlob);
        this.audioChunks = [];
      };

      this.mediaRecorder.start();
    },

    stopRecording() {
      this.mediaRecorder.stop();
      this.mediaRecorder.stream.getTracks().forEach(track => track.stop());
    },

    downloadRecording() {
      const a = document.createElement('a');
      a.href = this.audioUrl;
      a.download = 'recording.wav';
      document.body.appendChild(a);
      a.click();
      setTimeout(() => {
        document.body.removeChild(a);
        URL.revokeObjectURL(this.audioUrl);
      }, 100);
    }
  }
};

使用第三方库简化实现

使用 vue-audio-recorder 插件:

npm install vue-audio-recorder

在组件中使用:

import VueAudioRecorder from 'vue-audio-recorder';

export default {
  components: {
    VueAudioRecorder
  },
  methods: {
    onRecordingComplete(audio) {
      const url = URL.createObjectURL(audio.blob);
      const a = document.createElement('a');
      a.href = url;
      a.download = 'recording.mp3';
      a.click();
    }
  }
};

注意事项

  • 需要 HTTPS 环境或 localhost 才能使用 getUserMedia API
  • 不同浏览器支持的音频格式可能不同
  • 长时间录音需要考虑内存管理
  • 移动端可能需要额外权限处理

样式和模板示例

<template>
  <div>
    <button @click="startRecording">开始录音</button>
    <button @click="stopRecording">停止录音</button>
    <button @click="downloadRecording" :disabled="!audioUrl">下载录音</button>
  </div>
</template>

兼容性处理

对于不支持 MediaRecorder 的浏览器,可以使用 RecordRTC 作为 fallback:

vue中实现录音下载

const recorder = new RecordRTC(stream, {
  type: 'audio',
  mimeType: 'audio/wav'
});

标签: vue
分享给朋友:

相关文章

vue课程实现

vue课程实现

Vue 课程实现方案 课程内容设计 Vue课程应从基础到高级逐步展开,涵盖Vue核心概念、组件化开发、状态管理、路由、构建工具等。基础部分包括Vue实例、模板语法、计算属性和侦听器。中级部分深入组件通…

vue实现开关

vue实现开关

Vue 实现开关组件的方法 使用原生HTML和Vue数据绑定 通过v-model绑定复选框的checked状态,结合CSS样式实现开关效果: <template> <label…

vue实现ppt

vue实现ppt

Vue 实现 PPT 的功能 Vue 可以结合第三方库或自定义组件实现类似 PPT 的演示效果。以下是几种常见的方法: 使用第三方库 reveal.js reveal.js 是一个流行的演示框架,支…

vue实现换页

vue实现换页

Vue实现页面切换的方法 在Vue中实现页面切换通常可以通过Vue Router来完成。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是几种常见的实现方式:…

vue实现tooltips

vue实现tooltips

Vue 实现 Tooltips 的方法 使用原生 HTML title 属性 在 Vue 模板中直接使用 HTML 原生 title 属性实现简单的提示效果。这种方式无需额外依赖,但功能较为基础,无法…

vue实现搜索提示

vue实现搜索提示

Vue实现搜索提示的方法 使用v-model绑定输入框 通过v-model将输入框的值与Vue实例中的数据进行双向绑定,实时获取用户输入内容。 <input v-model="searchQu…