投诉网站制作临沭做网站

pingmian/2025/10/8 10:02:06/文章来源:
投诉网站制作,临沭做网站,网站 管理系统,广西网站建设电话本文恩主要介绍了详解HTML5 录音的踩坑之旅#xff0c;小编觉得挺不错的#xff0c;现在分享给大家#xff0c;也给大家做个参考。一起跟随小编过来看看吧#xff0c;希望能帮助到大家。说实话#xff0c;一开始都没接触过 HTML5 的 Audio API#xff0c;而且要基于在我们…本文恩主要介绍了详解HTML5 录音的踩坑之旅小编觉得挺不错的现在分享给大家也给大家做个参考。一起跟随小编过来看看吧希望能帮助到大家。说实话一开始都没接触过 HTML5 的 Audio API而且要基于在我们接手前的代码中进行优化。当然其中也踩了不少坑这次也会围绕这几个坑来说说感受(会省略一些基本对象的初始化和获取因为这些内容不是这次的重点有兴趣的同学可以自行查找 MDN 上的文档)调用 Audio API 的兼容性写法获取录音声音的大小(应该是频率)暂停录音的兼容性写法获取当前录音时间录音前的准备开始录音前要先获取当前设备是否支持 Audio API。早期的方法 navigator.getUserMedia 已经被 navigator.mediaDevices.getUserMedia 所代替。正常来说现在大部分的现代浏览器都已经支持 navigator.mediaDevices.getUserMedia 的用法了当然 MDN 上也给出了兼容性的写法const promisifiedOldGUM function(constraints) {// First get ahold of getUserMedia, if presentconst getUserMedia navigator.getUserMedia ||navigator.webkitGetUserMedia ||navigator.mozGetUserMedia;// Some browsers just dont implement it - return a rejected promise with an error// to keep a consistent interfaceif (!getUserMedia) {return Promise.reject(new Error(getUserMedia is not implemented in this browser));}// Otherwise, wrap the call to the old navigator.getUserMedia with a Promisereturn new Promise(function(resolve, reject) {getUserMedia.call(navigator, constraints, resolve, reject);});};// Older browsers might not implement mediaDevices at all, so we set an empty object firstif (navigator.mediaDevices undefined) {navigator.mediaDevices {};}// Some browsers partially implement mediaDevices. We cant just assign an object// with getUserMedia as it would overwrite existing properties.// Here, we will just add the getUserMedia property if its missing.if (navigator.mediaDevices.getUserMedia undefined) {navigator.mediaDevices.getUserMedia promisifiedOldGUM;}因为这个方法是异步的所以我们可以对无法兼容的设备进行友好的提示navigator.mediaDevices.getUserMedia(constraints).then(function(mediaStream) {// 成功},function(error) {// 失败const { name } error;let errorMessage;switch (name) {// 用户拒绝case NotAllowedError:case PermissionDeniedError:errorMessage 用户已禁止网页调用录音设备;break;// 没接入录音设备case NotFoundError:case DevicesNotFoundError:errorMessage 录音设备未找到;break;// 其它错误case NotSupportedError:errorMessage 不支持录音功能;break;default:errorMessage 录音调用错误;window.console.log(error);}return errorMessage;});一切顺利的话我们就可以进入下一步了。(这里有对获取上下文的方法进行了省略因为这不是这次的重点)开始录音、暂停录音这里有个比较特别的点就是需要添加一个中间变量来标识是否当前是否在录音。因为在火狐浏览器上我们发现一个问题录音的流程都是正常的但是点击暂停时却发现怎么也暂停不了我们当时是使用 disconnect 方法。这种方式是不行的这种方法是需要断开所有的连接才可以。后来发现应该增加一个中间变量 this.isRecording 来判断当前是否正在录音当点击开始时将其设置为 true 暂停时将其设置为 false 。当我们开始录音时会有一个录音监听的事件 onaudioprocess 如果返回 true 则会将流写入如果返回 false 则不会将其写入。因此判断 this.isRecording 如果为 false 则直接 return// 一些初始化const audioContext new AudioContext();const sourceNode audioContext.createMediaStreamSource(mediaStream);const scriptNode audioContext.createScriptProcessor(BUFFER_SIZE,INPUT_CHANNELS_NUM,OUPUT_CHANNELS_NUM);sourceNode.connect(this.scriptNode);scriptNode.connect(this.audioContext.destination);// 监听录音的过程scriptNode.onaudioprocess event {if (!this.isRecording) return; // 判断是否正则录音this.buffers.push(event.inputBuffer.getChannelData(0)); // 获取当前频道的数据并写入数组};当然这里也会有个坑就是无法再使用自带获取当前录音时长的方法了因为实际上并不是真正的暂停而是没有将流写入罢了。于是我们还需要获取一下当前录音的时长需要通过一个公式进行获取const getDuration () {return (4096 * this.buffers.length) / this.audioContext.sampleRate // 4096为一个流的长度sampleRate 为采样率}这样就能够获取正确的录音时长了。结束录音结束录音的方式我采用的是先暂停之后需要试听或者其它的操作先执行然后再将存储流的数组长度置为 0。获取频率getVoiceSize analyser {const dataArray new Uint8Array(analyser.frequencyBinCount);analyser.getByteFrequencyData(dataArray);const data dataArray.slice(100, 1000);const sum data.reduce((a, b) a b);return sum;};其它HTTPS在 chrome 下需要全站有 HTTPS 才允许使用微信在微信内置的浏览器需要调用 JSSDK 才能使用音频格式转换音频格式的方式也有很多了能查到的大部分资料大家基本上是互相 copy当然还有一个音频质量的问题这里就不赘述了。结语这次遇到的大部分问题都是兼容性的问题因此在上面踩了不少坑尤其是移动端的问题一开始还有出现因为获取录音时长写法错误的问题导致直接卡死的情况。这次的经历也弥补了 HTML5 API 上的一些空白当然最重要的还是要提醒一下大家这种原生的 API 文档还是直接查看 MDN 来的简单粗暴

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

phpcms做的网站备案期间 网站想正常

(请先看置顶博文)本博打开方式,请详读_liO_Oil的博客-CSDN博客_怎么把androidstudio卸载干净 前几天在编写代码的时候,突然要根据结构体的属性进行从小到大的排序,这即是我写这篇文章的导火索。 正如大家所知…

建网站有哪些文件夹wap网站现在还有什么用

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 点击主页:optimistic_chen和专栏:c语言, 创作不易,大佬们点赞鼓…

盐城永祥建设有限公司网站宁波网站建设哪家比较好

当涉及到互联网性能和可用性优化时,DNS(Domain Name System)和CDN(Content Delivery Network)是两个至关重要的元素。它们各自发挥着关键作用,以确保用户能够快速、可靠地访问网站和应用程序。在本文中&…

天河网站建设企业科技公司名字大全

一.使用 Go 语言的开源框架Livego搭建流媒体服务器 1.Livego 框架的介绍 Go 语言拥有强大的 服务器性能 ,golang 在语言级别解决了 多进程并发 的问题,支持 多核 CPU均衡使用 ,支持 海量轻量级线程 ,所以非常适合做 流媒体服务器 .而 livego 是基于golang 开发的简单高效的…

意大利做包招工的网站邯郸市网

我无法将我的Web应用程序与MySQL 5.5.11后端部署到JBoss 5.我收到此错误:引起:java.lang.ClassNotFoundException:来自BaseClassLoader 262b2310的com.mysql.jdbc.Driver我在下面粘贴了我的堆栈跟踪.这就是我所做的……我将mysql-connector-…

网站建设公司工作岗位说明书南充移动网站建设

各位CSDN的uu们好呀,今天,小雅兰的内容是51单片机中的定时器以及按键控制LED流水灯模式&定时器时钟,下面,让我们进入51单片机的世界吧!!! 定时器 按键控制LED流水灯模式 定时器时钟 源代…

南宁网站建设博信网站改版要重新备案

9月23日至10月8日,亚洲最大规模体育赛事亚运会在杭州举办。作为国际性体育赛事,除赛中的各类竞赛项目外,杭州亚运会前后相关活动也吸引了大众目光的聚焦。 Kaadas凯迪仕智能锁作为此次杭州亚运会官方指定智能门锁,以#凯迪仕守护每…

网页怎么做成网站网站建设与维护税率

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 由于换了新电脑,keil重装了下,然而之前的MCU的支持包没有安装,以及一些其他的问题,导致可以编译但是不能将程序烧录到单片…

企业网站模板论坛买外链

PyCharm Pro是一款专业的Python集成开发环境(IDE),由JetBrains公司开发。它为Python开发者提供了丰富的功能和工具,使得Python编程变得更加高效和便捷。PyCharm Pro具有智能代码编辑功能,能够自动完成代码、快速导航至…

中国建设银行总行网站外贸网站源代码下载

方法 pthread_mutex_lock(mutex) pthread_mutex_trylock(mutex) pthread_mutex_unlock(mutex) 用法 线程可调用pthread_mutex_lock()来获取某个互斥量,如果该互斥量已经被其他线程加锁,则该线程将会被阻塞,直到互斥量被其他线程释放。 线程可调用pthread_mutex_trylock(…

深圳网站制作比较好公司wordpress图片上传接口

github登录总是超时,非常影响体验,原因不是被github被限制了,而是github的DNS被污染了,可以通过手工设置DNS解析来处理。 到这个地址 https://raw.hellogithub.com/hosts 下载最新的github hosts文件 修改本地配置, 注意需要使用…

在线做数据图的网站有哪些新型城镇化建设网站

【无矶之谈】轻松使用AI设计微信红包封面/动态封面并快速过审 关注本公众号梦无矶测开实录,2024年1月21日之后关注最新的文章,后台回复封面红包,即可免费领取本号专属微信红包封面。(目前我过审的有五个封面,其中一个…

做内部网站cms营销软文模板

Android中有四种持久化数据的方法:SQLite数据库、文件存储、Preference、ContentProvider。 四种方法各有专攻,而其中Preference是以类似Map的键值对形式存储的,最适合用来保存用户个人设置之类的信息。 可以用一个xml文件来配置一个设置界面…

在哪个网站做视频好赚钱一 网站建设管理基本情况

内容参考于:三分钟音乐社 上一个内容:151.和弦固定标记法(二)转位和弦,斜杠(slash)和弦 上一个内容里练习的答案:斜杠左边的有多个写法,如果与下图不一样,那…

深圳市企业网站建设哪家好甘肃省建设类证书查询网站

文章目录1. 题目2. 解题1. 题目 新一轮的「力扣杯」编程大赛即将启动,为了动态显示参赛者的得分数据,需要设计一个排行榜 Leaderboard。 请你帮忙来设计这个 Leaderboard 类,使得它有如下 3 个函数: addScore(playerId, score)…

竞价网站移动端icp网站备案密码找回

文章目录 ElMessage 弹框没有样式问题描述解决方案 ts 类型检查失败问题描述解决办法 eslint 检查失败问题描述解决办法 ElMessage 弹框没有样式 问题描述 Element-plus 在使用 ElMessage 消息弹框的时候没有样式,按照官方的按需加载的方式引入的 import { ElMes…

电子商务网站建设期末试题答案05交互有趣的网站

文章目录 0 开发工具1. 对象和类、三大特性2. 成员/实例变量和实例变量(this关键字)3. 方法重载overload4. 构造方法和this关键字5. 继承6. 访问修饰符7. 方法重写8. 继承下的构造执行9. 多态9.1 向上转型9.2 向下转型9.3 多态的应用 0 开发工具 Maven是…

亳州做网站的公司ICP网站忘记密码

需求:(虚拟用户分下载用户/下载、上传但不能删除用户/管理用户) 一、安装 yum -y install vsftpd* yum -y install pam* yum -y install db4* 二、系统帐户 1、vsftpd服务的宿主用户 useradd vsftpd -s /sbin/nologin 2、…

asp网站用什么做网络架构师主要做什么

├── hvigor //存储购置信息的文件,主要用于发布打包 ├── idea //开发工具相关配置可忽略 ├── AppScope //工程目录 全局公共资源存放路径 │ └── resources │ │ └── base │ │ │ └── element //常亮存放 │ │ │ …

投简历网站柏乡县建设局网站

Win11下安装一个WSL2,做开发环境,简直是爽到不要不要的,相当于既有Windows下的完善生态,又有linux的便利。特别是,在linux下运行的服务端口号,完全和windows是相通的,直接在windows下浏览访问&a…