当前位置:首页 > 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 实现闪烁效果的方法 方法一:使用 CSS 动画 在 Vue 组件中定义一个闪烁的 CSS 动画,通过绑定 class 或 style 来控制元素的闪烁效果。 <template>…

vue实现swipe

vue实现swipe

Vue实现Swipe功能的方法 使用第三方库(推荐) Vue生态中有多个成熟的轮播/滑动组件库,例如vue-awesome-swiper或swiper/vue。以下是基于swiper/vue的实现示例…

vue底层实现

vue底层实现

Vue.js 的底层实现原理 Vue.js 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现细节: 响应式系统 Vue 2…

vue监听实现

vue监听实现

Vue 监听实现方法 在 Vue 中可以通过多种方式实现监听数据变化或事件触发,以下是常见的几种方法: 使用 watch 选项 watch 是 Vue 提供的核心功能之一,用于观察和响应 Vue 实…

vue实现反馈

vue实现反馈

Vue 实现反馈功能的方法 在 Vue 中实现反馈功能可以通过多种方式,包括弹窗提示、Toast 消息、表单提交等。以下是几种常见的实现方法。 弹窗反馈 使用 Vue 的组件化特性创建一个弹窗组件,…

vue实现肢体识别

vue实现肢体识别

Vue 中实现肢体识别的方法 在 Vue 项目中实现肢体识别通常需要结合第三方库或 API,例如 TensorFlow.js、MediaPipe 或 OpenCV。以下是几种常见的实现方式: 使用…