当前位置: 首页 > wzjs >正文

南通装饰网站建设网站建设企业文化

南通装饰网站建设,网站建设企业文化,自己做电影网站,网站开发主要创新点先看效果 1、打开页面 2、点击开始录音,弹出权限提示,点击“仅这次访问时允许” 3、录完后,点击停止 4、文件自动下载到默认目录 上代码 js 部分 document.addEventListener(DOMContentLoaded, () > {const startBtn document.getEleme…

先看效果

1、打开页面

2、点击开始录音,弹出权限提示,点击“仅这次访问时允许”

3、录完后,点击停止

4、文件自动下载到默认目录

上代码

 js 部分

document.addEventListener('DOMContentLoaded', () => {const startBtn = document.getElementById('startBtn');const stopBtn = document.getElementById('stopBtn');const audioPlayback = document.getElementById('audioPlayback');let mediaRecorder;let audioChunks = [];startBtn.addEventListener('click', async () => {try {// Request access to the microphoneconst stream = await navigator.mediaDevices.getUserMedia({ audio: { channelCount: 1, sampleRate: 16000 } });if (!stream) {throw new Error('No media stream received.');}// Create a MediaRecorder instance with specific settingsmediaRecorder = new MediaRecorder(stream, {mimeType: 'audio/webm'});mediaRecorder.ondataavailable = event => {audioChunks.push(event.data);};mediaRecorder.onstop = () => {const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });convertWebmToWav(audioBlob);audioChunks = [];};mediaRecorder.start();startBtn.disabled = true;stopBtn.disabled = false;} catch (err) {console.error('Error accessing microphone:', err);alert('Error accessing microphone: ' + err.message);}});stopBtn.addEventListener('click', () => {if (mediaRecorder && mediaRecorder.state !== 'inactive') {mediaRecorder.stop();}startBtn.disabled = false;stopBtn.disabled = true;});function convertWebmToWav(webmBlob) {const reader = new FileReader();reader.onloadend = () => {const arrayBuffer = reader.result;const audioContext = new AudioContext();audioContext.decodeAudioData(arrayBuffer, audioBuffer => {const samples = audioBuffer.getChannelData(0);const buffer = createWav(samples, audioBuffer.sampleRate);const blob = new Blob([buffer], { type: 'audio/wav' });const audioUrl = URL.createObjectURL(blob);audioPlayback.src = audioUrl;// Save or download the blob as a WAV fileconst link = document.createElement('a');link.href = audioUrl;link.download = 'recorded_audio.wav';document.body.appendChild(link);link.click();document.body.removeChild(link);}, error => {console.error('Error decoding audio data:', error);});};reader.readAsArrayBuffer(webmBlob);}function createWav(samples, sampleRate) {const buffer = new ArrayBuffer(44 + samples.length * 2);const view = new DataView(buffer);// RIFF identifierwriteString(view, 0, 'RIFF');// file length minus RIFF identifier length and file description lengthview.setUint32(4, 36 + samples.length * 2, true);// RIFF typewriteString(view, 8, 'WAVE');// format chunk identifierwriteString(view, 12, 'fmt ');// format chunk lengthview.setUint32(16, 16, true);// sample format (raw)view.setUint16(20, 1, true);// channel countview.setUint16(22, 1, true);// sample rateview.setUint32(24, sampleRate, true);// byte rate (sample rate * block align)view.setUint32(28, sampleRate * 2, true);// block align (channel count * bytes per sample)view.setUint16(32, 2, true);// bits per sampleview.setUint16(34, 16, true);// data chunk identifierwriteString(view, 36, 'data');// data chunk lengthview.setUint32(40, samples.length * 2, true);floatTo16BitPCM(view, 44, samples);return buffer;}function floatTo16BitPCM(output, offset, input) {for (let i = 0; i < input.length; i++, offset += 2) {const s = Math.max(-1, Math.min(1, input[i]));output.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true);}}function writeString(view, offset, string) {for (let i = 0; i < string.length; i++) {view.setUint8(offset + i, string.charCodeAt(i));}}
});

html部分

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Audio Recorder</title>
</head>
<body><h1>Audio Recorder</h1><button id="startBtn">Start Recording</button><button id="stopBtn" disabled>Stop Recording</button><br><br><audio id="audioPlayback" controls></audio><script src="recorder.js"></script>
</body>
</html>


文章转载自:

http://RVXQuK80.mLLmm.cn
http://9HNmIRUM.mLLmm.cn
http://AwfCtORN.mLLmm.cn
http://4igNbOW9.mLLmm.cn
http://spxCPPQu.mLLmm.cn
http://LJATx0hv.mLLmm.cn
http://61DaPr8o.mLLmm.cn
http://DjonDqZ2.mLLmm.cn
http://kBRVfqDe.mLLmm.cn
http://uieuywrQ.mLLmm.cn
http://V90a1a7X.mLLmm.cn
http://tT9pNpjx.mLLmm.cn
http://5bqdP2ZT.mLLmm.cn
http://vPcvPuWq.mLLmm.cn
http://uhvMr6x1.mLLmm.cn
http://YyiIXnqL.mLLmm.cn
http://Ij3wNYWz.mLLmm.cn
http://jucrE0RG.mLLmm.cn
http://2G61BrH9.mLLmm.cn
http://timBGF3S.mLLmm.cn
http://ggrjUYd2.mLLmm.cn
http://FT8U8COx.mLLmm.cn
http://xyPQX5dU.mLLmm.cn
http://dKh7ql2d.mLLmm.cn
http://tchWPDWK.mLLmm.cn
http://fxvk7vGL.mLLmm.cn
http://nQ4WAvgZ.mLLmm.cn
http://6sKCdfK7.mLLmm.cn
http://HXkYplnu.mLLmm.cn
http://6Rg0ndXH.mLLmm.cn
http://www.dtcms.com/wzjs/757772.html

相关文章:

  • 网站建设包括哪些项目市场seo是什么意思
  • DW网站建设出现哪些问题my eclipse网站开发
  • 建设厅工作证查询网站免费制作视频
  • 公司购买网站怎么做分录重庆手机网站开发
  • 筹划建设协会网站的方案做公司网站的公司
  • 网站开发技术文档格式网站改版后百度不收录
  • 东城网站建设工作室手机app官方安装下载
  • 网站通栏尺寸建设手表网站的目的
  • 档案网站建设与档案信息化游戏平台网站开发
  • 做金融在那个网站上找工作没有装wordpress
  • 韩国美容网站 模板邀请专家集体会诊网站建设
  • 企业网站特色建设做网站怎么赚钱吗
  • 东至网站制作国际公司定义
  • 专业建站公司收费标准成都网站建设 全美
  • 电子商务网站的建设与维护泰安网站设计
  • 上海网站建设 微信开发公司营销型网站管理系统
  • 在那儿能找网站建设推广的网站有哪些
  • 浙江建设信息港网站考试成绩查询自定义wordpress管理员的头像
  • 网站建设运营维护方案项目经理职责及工作范围
  • 做动漫图片的网站申请开网店的详细步骤
  • 书店网站建设策划书网络营销工具包括
  • 西北建设有限公司网站作者自己建立的网站
  • 优化网站架构海淀视频网站建设
  • 专业网站设计服务商wordpress标题翻译
  • 如何创建企业网站北京seo关键词排名优化
  • 江苏德丰建设集团网站室内设计师联盟网站
  • 长春专业做网站公司郑州做网站 汉狮网络
  • 周到的网站建站wordpress 文档中心
  • 做网站公司商丘企业网站建设可行性分析
  • 制作网站一年多少钱做翻译兼职的网站是哪个