当前位置:首页 > VUE

vue播放录音实现

2026-02-20 12:16:43VUE

实现录音功能

在Vue中实现录音功能通常需要使用浏览器提供的Web Audio API或第三方库。以下是一种基于recorder-corelamejs的解决方案。

安装依赖:

npm install recorder-core lamejs

录音组件示例

创建一个Vue组件实现录音功能:

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

<script>
import Recorder from 'recorder-core'
import 'recorder-core/src/engine/mp3'
import 'recorder-core/src/engine/mp3-engine'

export default {
  data() {
    return {
      recorder: null,
      isRecording: false,
      audioUrl: null
    }
  },
  methods: {
    async startRecording() {
      try {
        const stream = await navigator.mediaDevices.getUserMedia({ audio: true })
        this.recorder = new Recorder({
          type: 'mp3',
          sampleRate: 16000,
          bitRate: 16
        })
        this.recorder.open(stream, () => {
          this.recorder.start()
          this.isRecording = true
        })
      } catch (error) {
        console.error('录音权限被拒绝:', error)
      }
    },
    stopRecording() {
      if (this.recorder) {
        this.recorder.stop((blob, duration) => {
          this.audioUrl = URL.createObjectURL(blob)
          this.isRecording = false
          this.recorder.close()
        }, error => {
          console.error('录音失败:', error)
        })
      }
    }
  }
}
</script>

使用原生Web Audio API

如果不想使用第三方库,可以使用原生Web Audio API:

export default {
  methods: {
    async startNativeRecording() {
      const stream = await navigator.mediaDevices.getUserMedia({ audio: true })
      const mediaRecorder = new MediaRecorder(stream)
      const audioChunks = []

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

      mediaRecorder.onstop = () => {
        const audioBlob = new Blob(audioChunks)
        this.audioUrl = URL.createObjectURL(audioBlob)
      }

      mediaRecorder.start()
      this.nativeRecorder = mediaRecorder
    }
  }
}

注意事项

浏览器录音功能需要HTTPS环境或localhost才能正常工作 不同浏览器对音频格式的支持可能不同,MP3格式兼容性较好 移动端设备可能需要额外处理自动暂停问题 录音前应检查用户权限并处理拒绝情况

音频可视化

可以添加音频波形可视化效果,使用Web Audio API的AnalyserNode:

setupVisualizer(audioContext) {
  const analyser = audioContext.createAnalyser()
  analyser.fftSize = 256
  const bufferLength = analyser.frequencyBinCount
  const dataArray = new Uint8Array(bufferLength)

  function draw() {
    requestAnimationFrame(draw)
    analyser.getByteFrequencyData(dataArray)
    // 使用dataArray绘制波形
  }

  draw()
  return analyser
}

以上方法提供了在Vue中实现录音功能的基本方案,可根据实际需求进行调整和扩展。

vue播放录音实现

标签: vue
分享给朋友:

相关文章

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(…

vue实现报表

vue实现报表

vue实现报表的方法 使用Vue实现报表通常需要结合图表库或表格组件。以下是几种常见方法: 使用ECharts 安装ECharts库: npm install echarts vue-echa…

vue实现框架

vue实现框架

Vue 框架实现的核心方法 基础项目搭建 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代轻量级应用。安装后通过命令行工具选择所需配置(如 Rou…

vue实现jqueryui

vue实现jqueryui

Vue 实现 jQuery UI 功能 在 Vue 项目中实现类似 jQuery UI 的功能,可以通过原生 Vue 组件或第三方库来实现。以下是几种常见 jQuery UI 功能的 Vue 替代方案…

vue实现modal

vue实现modal

Vue 实现 Modal 弹窗组件 使用 Vue 实现 Modal 弹窗组件可以通过多种方式,包括原生 Vue 组件、第三方库或自定义指令。以下是几种常见方法: 原生 Vue 组件实现 创建一个基础…