转载至:http://blog.csdn.net/hardgirls/article/details/53997001

网页在线录音并上传

前段时间接了一个外包项目,有一个功能是网页在线录音并上传云服务器的需求,之前没有接触过,想着Google了一下找个demo改改;
找到三个,基本能满足需求:

  • https://github.com/uikoo9/recorder-online-upload
  • https://github.com/michalstocki/FlashWavRecorder
  • https://github.com/mattdiamond/Recorderjs

第一个是在第二个的基础上扩展出来的,使用flash模块实现录音功能;第一个已经实现了录音并上传到服务器的功能,但是有个问题是录音中杂音太大,鉴于自身技术水平不支持优化源码,所以基本是被嫌弃了;
第三个是使用 HTML5 的 Audio API 实现的,如果不考虑 ie 的话,是非常推荐的;

以上是对三个录音插件的简单说明,我的需求是能够兼容低版本浏览器,实现录音后上传服务器并获取音频地址;

经过一番 Google,算是找到一个满足需求的:https://github.com/jwagener-soundcloud/recorder.js
这个插件基于 swfObject.js,低版本浏览器中使用 flash 实现录音功能,在高版本支持 HTML5 的浏览器中使用 Audio 实现;简直 perfect;同时它还封装好了上传功能,支持上传到服务器和 SoundCloud;

recorder.js 源码,集成了swfObject.js,封装了初始化、录音开始、录音停止、录音播放、录音上传等方法;插件有提供 demo,基本用法可以参考 demo 了解使用,就不多说了;


废话这么多,说一下我的需求:

  • 网页在线录音,并上传到 upyun;
  • 录音开始,同时执行倒计时(倒计时结束录音结束);
  • 录音结束,上传录音;
  • 上传录音完成,执行方法进入下一个录音场景;
  • 所有录音场景结束,展示录音列表并播放;
  • 兼容低版本浏览器;
  1. // 初始化
  2. Recorder.initialize({
  3. swfSrc: "../recorder.swf"
  4. });
  5. // 开始录音
  6. function record(callback){
  7. Recorder.record({
  8. start: function(){
  9. callback && callback();
  10. },
  11. progress: function(milliseconds){
  12. //document.getElementById("time").innerHTML = timecode(milliseconds);
  13. }
  14. });
  15. }
  16. // 上传模块
  17. var recordArr = []; // 因为最后需要展示音频列表,需要一个全局数组用于存储upyun返回的音频url
  18. function upload(callback){
  19. // 定义音频文件名
  20. var fileName = $.cookie("TOEFL_TOKEN") ? "login" + new Date().getTime() : "nologin" + new Date().getTime();
  21. // 获取upyun配置参数,参考upyun的form_api:http://docs.upyun.com/api/form_api/
  22. // 这里先上传音频文件名至服务器端,服务端根据文件名生成对应的policy和signature返回客户端
  23. $.ajax({
  24. type: "GET",
  25. url: xm.baseURL + "/mkTpo/file/" + fileName + ".wav/posts.action",
  26. dataType : "json",
  27. success: function(data) {
  28. // 获取upyun_api参数
  29. var expiration = data.expiration, // 时间戳
  30. saveKey = data["save-key"], // 保存路径
  31. bucket = data.bucket, // 空间名
  32. policy = data.poily, // policy
  33. signature = data.signature; // signature
  34. // 插件封装方法,注:该方法中的注释可能导致程序报错,需删除
  35. Recorder.upload({
  36. method: "POST",
  37. url: "http://v0.api.upyun.com/universe1", // 录音上传url:upyun_api基本域名+空间名
  38. audioParam: "file", // 上传upyun时,这个参数值固定为file,相当于表单提交中的<input type="file">
  39. params: { // 这里填写获取的upyun_api参数,获取upyun的上传权限
  40. "expiration": expiration,
  41. "save-key": saveKey,
  42. "bucket": bucket,
  43. "policy": policy,
  44. "signature": signature
  45. },
  46. success: function(responseText){ // 上传成功之后upyun会返回音频文件的相关信息
  47. var data = JSON.parse(responseText);
  48. recordArr.push(data.url); // 将录音音频的url追加到数组
  49. callback && callback(); // 上传完成执行方法
  50. }
  51. });
  52. },
  53. error: function(XMLHttpRequest, textStatus, errorThrown) {
  54. console.log("XMLHttpRequest.status: " + XMLHttpRequest.status);
  55. console.log("XMLHttpRequest.readyState: " + XMLHttpRequest.readyState);
  56. console.log("textStatus: " + textStatus);
  57. }
  58. });
  59. }

网页录音,html5录音相关推荐

  1. h5调用android录音,html5录音支持pc和Android、ios部分浏览器,微信也是支持的,JavaScript getUserMedia...

    花了两天时间在前人基础上重复造了一个网页录音的轮子,顺带把github仓库使用研究了一下,扔到了github上,地址:https://github.com/xiangyuecn/Recorder 演示 ...

  2. h5调用android录音,html5网页录音插件Recorder

    插件描述:html5 js 录音 mp3 wav ogg webm amr 格式,支持pc和Android.ios部分浏览器.和Hybrid App(提供Android IOS App源码),微信也是 ...

  3. html5录音怎么保存到本地,详解HTML5 录音遇到的坑

    本文恩主要介绍了详解HTML5 录音的踩坑之旅,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧,希望能帮助到大家. 说实话,一开始都没接触过 HTML5 的 Audio A ...

  4. android h5语音,html5录音支持pc和Android、ios部分浏览器,微信也是支持的,JavaScript getUserMedia...

    花了两天时间在前人基础上重复造了一个网页录音的轮子,顺带把github仓库使用研究了一下,扔到了github上,地址:https://github.com/xiangyuecn/Recorder co ...

  5. html5录音支持pc和Android、ios部分浏览器,微信也是支持的,JavaScript getUserMedia

    以前在前人基础上重复造了一个网页录音的轮子,顺带把github仓库使用研究了一下,扔到了github上. 优势在于结构简单,可插拔式的录音格式支持,几乎可以支持任意格式(前提有相应的编码器):默认提供 ...

  6. 微信浏览器 html5 语音,html5录音支持pc和Android、ios部分浏览器,微信也是支持的,JavaScript getUserMedia...

    花了两天时间在前人基础上重复造了一个网页录音的轮子,顺带把github仓库使用研究了一下,扔到了github上,地址:https://github.com/xiangyuecn/Recorder 演示 ...

  7. html录音延时,详解HTML5 录音的踩坑之旅

    开篇闲扯 前一段时间的一个案子是开发一个有声课件,大致就是通过导入文档.图片等资源后,页面变为类似 PPT 的布局,然后选中一张图片,可以插入音频,有单页编辑和全局编辑两种模式.其中音频的导入方式有两 ...

  8. html5录音兼容性,详解HTML5 录音遇到的坑

    本文恩主要介绍了详解HTML5 录音的踩坑之旅,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧,希望能帮助到大家. 说实话,一开始都没接触过 HTML5 的 Audio A ...

  9. Safari支不支持HTML5录音? 现在浏览器中最好的解决方案是WebRTC下的 navigator.getUserMedia API。...

    先放结论:Safari支不支持HTML5录音? --据我调查,不支持. 现在浏览器中最好的解决方案是WebRTC下的 navigator.getUserMedia API. 可是当使用Can I us ...

最新文章

  1. 精心总结 Python『八宗罪』,邀你来吐槽
  2. 程序员自学编程创立 GREE,推出世界上第一款手机社交游戏,白手起家成为亚洲最年轻的巨富...
  3. 动态修改数据窗口的数据源
  4. php imagefill,PHP 图像填充 imagefill、imagefilledarc 与 imagefilledrectangle() 函数
  5. 在Powershell中禁止执行脚本
  6. MyEclipse导入新项目后,不能发布到Tomcat
  7. linux(ubuntu)给vmware中的windows虚拟机共享磁盘
  8. CSS一个元素同时使用多个类选择器(class selector)
  9. 修改weblogic(10.3)域的启动JDK
  10. 微信气泡主题设置_微信猫和老鼠主题怎么弄?猫和老鼠聊天气泡主题设置教程...
  11. Linux内核分析 - 网络[八补]:IP协议补充
  12. 对接第三方支付接口-记录
  13. 《脱颖而出——成功网店经营之道》一2.5 后方——不可忽视的金库
  14. .NET Core控制台程序发布后没有exe解决方案
  15. 如何让你的JavaScript代码更加语义化
  16. iOS 实现长屏截图,scrollview,tableview截图
  17. [转贴]杨式太极拳八十五式通释—1—王志远
  18. js禁止鼠标右键的菜单事件
  19. android 自定义图片裁剪,Android图片裁剪工具封装
  20. 整数a和整数b间1的个数

热门文章

  1. GUID分区和MBR分区简介
  2. Scipy sparse中关于CSC矩阵的自我理解
  3. Android 查看wifi密码
  4. html 绘制体温单,使用zrender.js绘制体温单效果
  5. 顺利完成网页版体温单
  6. excel表格导出之后身份证号列变成了科学计数法
  7. 多个工作表按数字大小排序_我的数字工作区
  8. 文字发光_AE模板漂亮柔美发光文字标题粒子动画 Soft Light Titles【资源分享1472】...
  9. Python,安装selenium教程
  10. 【第50篇】迈向快速、灵活、稳健的微光图像增强