H5网页录音,获取的blob上传后台服务器

前端录音获取参考

使用H5实现在线录音并保存到本地_h5 录音功能-CSDN博客

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Online Audio Recorder</title>
</head>
<body>
    <button id="startRecord">Start Recording</button>
    <button id="stopRecord" disabled>Stop Recording</button>
    <audio id="audioPlayer" controls></audio>
 
    <script>
        let mediaRecorder;
        let audioChunks = [];
        let audioPlayer = document.getElementById('audioPlayer');
        let startRecordButton = document.getElementById('startRecord');
        let stopRecordButton = document.getElementById('stopRecord');
 
        startRecordButton.addEventListener('click', startRecording);
        stopRecordButton.addEventListener('click', stopRecording);
 
        async function startRecording() {
            try {
                const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
                mediaRecorder = new MediaRecorder(stream);
                mediaRecorder.ondataavailable = event => {
                    if (event.data.size > 0) {
                        audioChunks.push(event.data);
                    }
                };
                mediaRecorder.onstop = () => {
                    const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
                    const audioUrl = URL.createObjectURL(audioBlob);
                    audioPlayer.src = audioUrl;
 
                    // Save the audio locally
                    const a = document.createElement('a');
                    a.href = audioUrl;
                    a.download = 'recording.wav';
                    a.style.display = 'none';
                    document.body.appendChild(a);
                    a.click();
                    document.body.removeChild(a);
                };
                mediaRecorder.start();
                startRecordButton.disabled = true;
                stopRecordButton.disabled = false;
            } catch (error) {
                console.error('Error accessing microphone:', error);
            }
        }
 
        function stopRecording() {
            mediaRecorder.stop();
            startRecordButton.disabled = false;
            stopRecordButton.disabled = true;
        }
    </script>
</body>
</html>

在这里插入数据上传部分,参考jquery post blob - 编程开发 (b5b6.com)

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

                   var formData = new FormData();
                   formData.append('wavfile', audioBlob);
                    
                   $.ajax({
                      url: url,
                      type: 'POST',
                      data: formData,
                      processData: false,
                      contentType: false,
                      success: function(data) {
                        console.log('上传成功!')
                      },
                      error: function(err) {
                      console.log('上传失败:' + err.message)
                      }
                    })
                };

后台存储为wav文件,大功告成

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldk007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值