失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > h5做出网页录音功能

h5做出网页录音功能

时间:2019-09-15 05:26:45

相关推荐

h5做出网页录音功能

web前端|js教程

html5,功能,录音

web前端-js教程得益于前辈的分享,做了一个h5录音的demo。效果图如下:

二手货交易网站源码,vscode修改变量,ubuntu连接断开,tomcat设置目录浏览,sqlite 脚本数据库,八爪鱼爬虫收集数据的心得,PHP三级分销系统,谷歌seo推广公司泉州,asp网站后台地址,dreamweaver设计模板lzw

帐号交易系统源码,ubuntu 卸载网易云,tomcat一直走项目缓存,网络电影爬虫,北京融七牛php,rel属性 seolzw

点击开始录音会先弹出确认框:

源码文档,yum vscode,ubuntu smbfs,怎么给一个项目加tomcat,sqlite常用函数,网页设计中怎样设计背景图片位置,阿里云服务器互通,javascript 图片放大插件,前端框架排行awe,梦到一群爬虫,php.info,陌路seo,合买网站,网页编程下载,时尚模板,wordpress友情链接页面插件,图书馆管理系统vb,pb 获取托盘程序句柄lzw

首次确认允许后,再次录音不需要再确认,但如果用户点击禁止,则无法录音:

点击发送 将录音内容发送到对话框中。点击即可播放。点击获取录音即可下载最后一次的音频:

播放下载都是围绕blob文件。播放就是让隐藏的audio标签的地址指向内存中的blob:

this.play = function (audio,blob) { blob=blob||this.getBlob().blob; audio.src = URL.createObjectURL(blob);};

createObjectURL 我们在用base64显示图片的时候也可以用到。

img.src = URL.createObjectURL(blob);

这样比一长串的字符串好看很多。同理如果你想销毁该地址对应的数据而节省内存可以这样:

URL.revokeObjectURL(img.src);

扯远了点。下载就是模拟a标签的点击。

function downloadRecord(record){ var save_link = document.createElementNS(/1999/xhtml, a)save_link.href = URL.createObjectURL(record);var now=new Date;save_link.download = now.Format("yyyyMMddhhmmss");fake_click(save_link); } function fake_click(obj) { var ev = document.createEvent(MouseEvents); ev.initMouseEvent(click, true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); obj.dispatchEvent(ev); }

每次发送 ,其实是讲音频数据缓存下来,标记下id。下次点击的时候根据id获取缓存的数据,然后叫给audio元素播放:

var msg={}; //发送音频片段 var msgId=1; function send(){if(!recorder){ showError("请先录音"); return;}var data=recorder.getBlob();if(data.duration==0){showError("请先录音"); return;}msg[msgId]=data;recorder.clear();console.log(data);var dur=data.duration/10; var str="

"+dur+"s

"$(".messages").append(str);msgId++; } $(document).on("click",".voiceItem",function(){var id=$(this)[0].id;var data=msg[id];playRecord(data.blob); })

内部是基于AudioContext实现:兼容性如下,基本上只能在谷歌和火狐浏览器里面玩。很可惜微信和ios目前不支持的。如果电脑没有音频驱动或者没有麦都会报错提示。

有兴趣的朋友可以玩玩。未来移动端支持就更好了。

如果觉得《h5做出网页录音功能》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。