网页录音属于常见需求,为了节省网络带宽和服务器存储资源,在用户体验许可的情况下,在浏览器端把音频压缩成mp3再上传服务器。以前用flash或silverlight等客户端控件实现,未来可以使用html5的navigator.getUserMedia()方法配合lame.js等mp3算法脚本库来实现,配合audio标签还可以实现回放功能。

随着时间的发展,后续的浏览器会越来越兼容html5,使用getUserMedia()配合lame.js是个符合未来前景的方案。可是谷歌浏览器从版本57开始,为了安全限制了getUserMedia()方法只能在https环境中调用,这就导致了lame.js无法从http环境下在谷歌浏览器上使用。如果不能使用https,还需要使用flash方案。

目前网络上有不少相关的资料:

flashwavrecorder(https://github.com/michalstocki/FlashWavRecorder),灵活性非常高的flash的录音控件,实现在网页录音并可以自定义提交按钮样式,但没有实现音频的mp3压缩。

shinemp3encorder(https://github.com/kikko/Shine-MP3-Encoder-on-AS3-Alchemy),flash可用的mp3编码类库,但只是工具类库,不提供录音提交等功能。

现在需要整合它们。

找教程学了actionscript,了解flexsdk,airsdk,flashbuilder等相关的知识后,下载了flashbuilder试用版动手。因为没有actionscript实践操作经验的积累,过程中遇到很多诸如ShineMp3Encoder不工作、操作15秒超时、用户不点按钮不能执行上传动作等问题,但细心分析问题原因并从网上搜解决方案后解决了它们。

通读flashwavrecorder的代码并了解shinemp3encorder的用法后,决定在录音结束时为切入点,增加一个音频压缩过程和几个mp3转码相关的事件,最终成功完成了需要的功能。阅读flashwavrecorder的源码发现有个未使用到的OBSERVING_MP3ENCODE_PROGRESS事件,看来flashwavrecorder的作者考虑过mp3压缩功能,但可能因为版权等原因没完成。

整合出的flashmp3encorder分享给大家。我只是改造整合flashwavrecorder和shinemp3encorder,以个人作品的名义发github不合适。而且flashwavrecorder也没有成熟到去全球开源站分享的程度,现只在csdn分享。

源码及编译结果下载链接:

http://download.csdn.net/detail/wantalcs/9774068

也可以邮件到wantalwy#163.com要代码。

控件具体使用可以参考index.template.html,方法说明和一些需要注意的事项在代码注释中。

示例代码中开启了监听回传功能,如果不想总是回传麦克风的声音,可以把index.template.html文件第110行的FWRecorder.setLoopBack(true)改成FWRecorder.setLoopBack(false)。



Flash的网页MP3录音控件相关推荐

  1. Android录音控件

            做项目一直不得空,好不容易腾出时间,赶紧把过往的知识整理一下,以下是做项目时用到的录音控件,在同事写的基础上修改改成,支持后台录音,页面比较简单.写这个组件之前做了简单的调研,如果有不 ...

  2. 怎么在ASP.NET中写HTML,如何:在 ASP.NET 网页中设置控件的 HTML 属性

    如何:在 ASP.NET 网页中设置控件的 HTML 属性 10/22/2014 本文内容 更新:2007 年 11 月 这些示例显示如何向页面中的元素添加 HTML 属性.第一个示例演示如何以声明方 ...

  3. Qt笔记(五十六)之网页调用Activate控件

    一.前言 Qt开发的Activate控件可以用网页来盗用,但是只能IE来装载 二.调用流程 1.注册Activate组件 win+r调出命令行界面,切换到组件的的目录下,然后输入regsvr32 Ac ...

  4. 【转】从网页上下载控件时制作CAB包的方法

    Internet 软件分发单位是"软件包",它由包含 .inf 文件或软件分发 (.osd) 文件(或两者都包括)的 CAB 文件 (.cab) 所组成.一个分发单位也可以包含软件 ...

  5. 支持Flash和JavaScript的图表控件FusionWidgets

    FusionWidgets是一款功能强大的图表控件,同时支持Flash和JavaScript(HTML5),可用于PCs, Macs, iPads, iPhones 等,包含一系列实时仪表和自动更新图 ...

  6. 网页版电子表格控件tmlxSpreadsheet免费下载地址

    tmlxSpreadsheet 是一个由JavaScript 和 PHP 写成的电子表格控件(包含WP插件, Joomla插件等等).. 程序员可以容易的添加一个类似Excel功能的,可编辑的表格功能 ...

  7. jquery网页刷新后控件失效_jquery动态增减控件如何才能不刷新页面

    已结贴√ 问题点数:20 回复次数:9 jquery动态增减控件如何才能不刷新页面 用jquery动态管理控件,可是每一次增减控件都会刷新页面,然后控件里面原来输入的值就都不在了,可以怎么来实现在动态 ...

  8. jquery网页日历显示控件calendar3.1使用详解

    关于日历插件,我做了好多次尝试,一直致力于开发一款简单易用的日历控件.我的想法是争取在引用这个控件后,用一行js代码就能做出一个日历,若在加点参数,就能自定义外观和功能丰富多彩的日历.Calendar ...

  9. C#网页设计 - Web控件

    1.  服务器控件 ASP.NET控件分为服务器控件和HTML标记. 服务器控件是在服务器端运行的执行程序逻辑的组件,服务器端的程序可以访问这类控件:而HTML标记是在客户端运行的,服务器端程序不能访 ...

最新文章

  1. 和12岁小同志搞创客开发:如何驱动各类型传感器?
  2. backtrack X server 启动不了
  3. 自监督学习简介以及在三大领域中现状
  4. MySQL默认配置文件位置发生改变后如何查找
  5. Java内存模型深度解析:重排序 --转
  6. IBM MQ 使用一例
  7. 【云炬大学生创业基础笔记】第1章第4节 为什么需要创业讨论
  8. dbms_metadata遇到ORA-31603的解决方案
  9. codeforces gym-101741 Elevator 动态规划、单调队列
  10. 计算机驱动空间不够,Win8.1系统如何释放驱动器空间解决可用空间不足问题
  11. 无线打印 airprint 服务器,如何让 Windows 的共享打印机支持 AirPrint
  12. 使用网络TCP搭建一个简单文件下载器
  13. oracle数据库查表_oracle数据库之多表查询二
  14. C++-十进制转二进制(matlab-dec2bin函数)
  15. OpenCV基本图形绘制之绘制直线
  16. Qt + OpenSenceGraph(osg) 加载OSG模型
  17. Python根据内部文件名批量更改文件夹名称
  18. NCL:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning,代码解读
  19. 如何在R中画出高效美观的相关性分析图
  20. < CSDN话题挑战赛第1期 - 前端面试宝典 >

热门文章

  1. Mac os x的发展
  2. 对口高考计算机是什么意思,对口高考计算机原理
  3. 黑客攻击-木马免杀之PE文件
  4. 替代个人微信mac协议的sdk接口分享
  5. 捕鱼达人的一些技术点
  6. 甲骨文收购SUN公司案例分析
  7. 阿里巴巴盘中市值达4700亿美元;B站计划最快明年美国IPO ;NASA计划为前往火星宇航员修改DNA丨价值早报
  8. 上海百胜软件测试工程师面试最后1道试题
  9. 视频教程-【吴刚】UI拟物图标设计初级入门标准教程-UI
  10. 电商超卖,从业务到设计