当前位置:首页 > VUE

vue.js实现录音

2026-02-21 19:53:42VUE

Vue.js 实现录音功能

在Vue.js中实现录音功能可以通过浏览器提供的MediaRecorder API完成。以下是一个完整的实现方案:

安装依赖(可选)

如果需要更高级的音频处理,可以安装recordrtc库:

vue.js实现录音

npm install recordrtc

基础实现代码

创建一个Vue组件(如AudioRecorder.vue):

vue.js实现录音

<template>
  <div>
    <button @click="startRecording" :disabled="isRecording">开始录音</button>
    <button @click="stopRecording" :disabled="!isRecording">停止录音</button>
    <audio v-if="audioUrl" :src="audioUrl" controls></audio>
  </div>
</template>

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

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

        this.mediaRecorder.onstop = () => {
          const audioBlob = new Blob(this.audioChunks, { type: 'audio/wav' });
          this.audioUrl = URL.createObjectURL(audioBlob);
          stream.getTracks().forEach(track => track.stop());
        };

        this.mediaRecorder.start();
        this.isRecording = true;
      } catch (error) {
        console.error('录音错误:', error);
      }
    },

    stopRecording() {
      this.mediaRecorder.stop();
      this.isRecording = false;
    }
  }
}
</script>

使用RecordRTC增强版

如需更多功能(如录音时长限制、格式选择等):

import RecordRTC from 'recordrtc';

methods: {
  async startRecording() {
    const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
    this.recorder = new RecordRTC(stream, {
      type: 'audio',
      mimeType: 'audio/wav',
      recorderType: RecordRTC.StereoAudioRecorder
    });
    this.recorder.startRecording();
    this.isRecording = true;
  },

  stopRecording() {
    this.recorder.stopRecording(() => {
      this.audioUrl = URL.createObjectURL(this.recorder.getBlob());
      this.isRecording = false;
    });
  }
}

注意事项

  • 需要在HTTPS环境或localhost下使用
  • 首次使用需要用户授权麦克风权限
  • 不同浏览器支持的音频格式可能不同
  • 移动端可能有额外的兼容性问题

保存录音文件

添加保存功能的方法:

saveRecording() {
  const link = document.createElement('a');
  link.href = this.audioUrl;
  link.download = 'recording.wav';
  link.click();
}

这个实现提供了基础的录音功能,可以根据需求扩展更多特性如可视化、音频编辑等。

标签: vuejs
分享给朋友:

相关文章

vue全选实现

vue全选实现

Vue 全选实现方法 在 Vue 中实现全选功能通常涉及数据绑定和事件处理。以下是几种常见的实现方式: 基础实现方式 <template> <div> <i…

vue computed 实现

vue computed 实现

computed 的基本用法 在 Vue 中,computed 用于声明计算属性,这些属性基于响应式依赖进行缓存。只有当依赖发生变化时,计算属性才会重新计算。 new Vue({ data:…

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。 <template> &l…

vue分类实现

vue分类实现

Vue分类实现方法 在Vue中实现分类功能通常涉及数据分组、动态渲染和交互逻辑。以下是几种常见的实现方式: 基于计算属性的分类 通过计算属性对原始数据进行分组处理,适合静态或少量数据分类: com…

vue实现oauth

vue实现oauth

Vue 实现 OAuth 的步骤 安装必要的依赖 确保项目中安装了 axios 和 vue-router。OAuth 通常需要发送 HTTP 请求和处理路由跳转。 npm install axios…

vue实现selectable

vue实现selectable

Vue 实现可选择的 Select 组件 在 Vue 中实现一个可选择的 Select 组件,可以通过以下几种方式: 使用原生 HTML select 元素 <template>…