基于recorder.js H5录音功能

兼容性

1.Chrome,FF,Edge,QQ,360(注:现有IE和Safari全版本不兼容)
2.其中Chrome47以上以及QQ浏览器强制要求HTTPS的支持
3.请尝试使用FF,Edge,360,浏览器进行体验,或将项目下载到本地通过localhost的方式

下载 recorder.js

前往 https://github.com/OmegaMibai/SoundRecording/tree/master/recorder/js

核心文件

核心代码

html

<div id="mask">
    <img class="imagestu" src="./images/luyin.gif" alt="">
    <p>录音中······</p>
</div>
<button id="start" class="ui-btn ui-btn-primary">按住说话</button>
<div id="audio-container" class="audio-container">
     <audio controls ref="audio" src="" id="audio" class="Reading_MP3 audio" id="bofang"></audio>
</div>

css

.ui-btn {
    z-index: 9999;
    display: inline-block;
    padding: 5px 20px;
    font-size: 14px;
    line-height: 1.428571429;
    box-sizing:content-box;
    text-align: center;
    border: 1px solid #e8e8e8;
    border-radius: 0.1rem;
    color: #555;
    background-color: #fff;
    border-color: #e8e8e8;
    white-space: nowrap;
    cursor: pointer;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
.ui-btn:hover, .ui-btn.hover {
    color: #333;
    text-decoration: none;
    background-color: #f8f8f8;
    border:1px solid #ddd;
}
.ui-btn:focus, .ui-btn:active {
    color: #333;
    outline: 0;
}
.ui-btn.disabled, .ui-btn.disabled:hover, .ui-btn.disabled:active, .ui-btn[disabled], .ui-btn[disabled]:hover, .ui-state-disabled .ui-btn {
    cursor: not-allowed;
    background-color: #eee;
    border-color: #eee;
    color: #aaa;
}
.ui-btn-primary {
    color: #fff;
    background-color: #39b54a;
    border-color: #39b54a;
    position: fixed;
    bottom: 0.2rem;
    width: 50%;
    margin-left: 25%;
    padding: 0.1rem 0;
}
.ui-btn-primary:hover, .ui-btn-primary.hover {
    color: #fff;
    background-color: #16a329;
    border-color: #16a329;
}
.ui-btn-primary:focus, .ui-btn-primary:active {
    color: #fff;
}
.ui-btn-primary.disabled:focus{
    color: #aaa;
}
.imagestu{
    display: block;
    width:40%;
    margin: auto;
}
#mask{
    position: fixed;
    width: 50%;
    left: 25%;
    top: 40%;
    background: rgba(0,0,0,0.05);
    padding:0.2rem 0.1rem;
   z-index: 9999;
   background-color: #fefefe;
   border-radius: 0.1rem;
   display: none;
}
#mask p{
    text-align: center;
    font-size: 0.24rem;
    color: rgba(0,0,0,0.5);
}

js

<script>
    var start = document.querySelector('#start');
    var audio = document.querySelector('#audio');
    var recorder = new Recorder({
        sampleRate: 44100, //采样频率,默认为44100Hz(标准MP3采样率)
        bitRate: 128, //比特率,默认为128kbps(标准MP3质量)
        success: function(){ //成功回调函数
            // start.disabled = false;
        },
        error: function(msg){ //失败回调函数
            console.log(msg);
        },
        fix: function(msg){ //不支持H5录音回调函数
            console.log(msg);
        }
    });
    var mask = document.getElementById('mask');
    var start = document.querySelector('#start');
    start.addEventListener('touchstart',function(){
       timer = setTimeout(function(){
        for(var i = 0; i < audio.length; i++){
            if(!audio[i].paused){
                audio[i].pause();
            }
        }
        start.innerHTML="松开结束"
       mask.style.display="block"
        recorder.start();
    },500);
            });
     start.addEventListener('touchmove',function(){
       timeOutEvent = setTimeout(function(){
      clearTimeout(timer);
       timer = 0;
            });
     })
       start.addEventListener("touchend", function (e) {
       console.log('touchend');
       recorder.stop();
       mask.style.display="none"
        recorder.getBlob(function(blob){
            audio.src = URL.createObjectURL(blob);
            audio.controls = true;
        });
        start.innerHTML="按住说话"
       clearTimeout(timer);
       return false;
   });
</script>

引入文件

<script src="./js/recorder.js"></script>

效果

点击按键直接录音

松开按键可直接本次录音

使用方法

var recorder = new Recorder({
    sampleRate: 44100, //采样频率,默认为44100Hz(标准MP3采样率)
    bitRate: 128, //比特率,默认为128kbps(标准MP3质量)
    success: function(){ //成功回调函数
    },
    error: function(msg){ //失败回调函数
    },
    fix: function(msg){ //不支持H5录音回调函数
    }
});

API

//开始录音
recorder.start();
//停止录音
recorder.stop();
//获取MP3编码的Blob格式音频文件
recorder.getBlob(function(blob){ //获取成功回调函数,blob即为音频文件
//  ...
},function(msg){ //获取失败回调函数,msg为错误信息
//  ...
});

原文地址:https://www.cnblogs.com/Alangc612/p/12157860.html

时间: 2024-10-07 23:47:17

基于recorder.js H5录音功能的相关文章

基于cocos2dx -js h5项目优化记录

在记录优化内容前选搞清楚web渲染流程的四个主要步骤: 解析HTML生成DOM树 - 渲染引擎首先解析HTML文档,生成DOM树 构建Render树 - 接下来不管是内联式,外联式还是嵌入式引入的CSS样式会被解析生成CSSOM树,根据DOM树与CSSOM树生成另外一棵用于渲染的树-渲染树(Render tree), 布局Render树 - 然后对渲染树的每个节点进行布局处理,确定其在屏幕上的显示位置 绘制Render树 - 最后遍历渲染树并用UI后端层将每一个节点绘制出来 以上步骤是一个渐进的

基于node.js 的 websocket的移动端H5直播开发

这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运行http服务,手机端直接运行http://ip:8000/mpegts.html 即可看到推流过来的视频 新起一个终端运行 npm run ws-server,服务启动后,即可以通过ffmpeg进行推流. 推流过程如下: 推流视频文件: ffmpeg -re -i E:\2.mp4   -code

用jQuery基于原生js封装的轮播

我发现轮播在很多网站里面都用到过,一个绚丽的轮播可以为网页增色不少,最近闲来无事,也用原生js封装了一个轮播,可能不像网上的插件那么炫,但是也有用心去做.主要用了闭包的思想.需要传递的参数有:图片地址的数组,图片宽度,上一页,下一页的id,图片列表即ul的id(这儿使用无序列表排列的图片),自动轮播间隔的时间.功能:实现了轮播的自动轮播,可以点击上一页,下一页进行切换. 下面是html中的代码,只需要把存放的容器写好,引入jquery即可: <!DOCTYPE html><html>

基于Node.js + jade + Mongoose 模仿gokk.tv

原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 关于gokk 大学的娱乐活动基本就是在寝室看电影了→_→,一般都会选择去goxiazai.cc上看,里面的资源多,质量高 .站长会推荐评分很高广受好评的电影给大家免费下载,整体来说真是不错,但前两月由于版权问题被迫转型 这也是没办法的事,程序员更应该尊重版权问题,我们也能理解,后来站长又开了gokk个不是给地址让你 下载,而是将网络一些优秀视频站点资源提供出来观看,质量变低了,好怀念以前的goxiazai啊.. 最近

基于Node.js + socket.io实现WebSocket的聊天DEMO

原文摘自我的前端博客,欢迎大家来访问 http://hacke2.github.io 简介 最近看Node.js和HTML5,练手了一个简易版的聊天DEMO,娱乐一下 为什么需要socket.io? node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一, 为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验, 于是socket.io诞生. 简答来说socket.io具体以下特点: 1.socket.io设计的目标是支持任何的浏览器

《基于Node.js实现简易聊天室系列之详细设计》

一个完整的项目基本分为三个部分:前端.后台和数据库.依照软件工程的理论知识,应该依次按照以下几个步骤:需求分析.概要设计.详细设计.编码.测试等.由于缺乏相关知识的储备,导致这个Demo系列的文章层次不是很清楚,索性这一章将所有的过程(前后端以及数据库)做一个介绍,下一章写完总结就OK了吧. (1)前端部分 涉及到的技术:html.css.bootstrap.jquery.jquery UI 登录/注册界面使用的是bootstrap响应式布局,即支持不同尺寸的客户端,以此提高用户的体验.在这之前

基于Node.js的强大爬虫 能直接发布抓取的文章哦

基于Node.js的强大爬虫 能直接发布抓取的文章哦 基于Node.js的强大爬虫能直接发布抓取的文章哦!本爬虫源码基于WTFPL协议,感兴趣的小伙伴们可以参考一下 一.环境配置 1)搞一台服务器,什么linux都行,我用的是CentOS 6.5: 2)装个mysql数据库,5.5或5.6均可,图省事可以直接用lnmp或lamp来装,回头还能直接在浏览器看日志: 3)先安个node.js环境,我用的是0.12.7,更靠后的版本没试过: 4)执行npm -g install forever,安装f

基于Node.js和express的日志服务器

首先,这篇文章学习的意义大于实际价值.如果按我的本意,直接在游戏中加入友盟,信息更全,而且非常简单.不过总是有很多人会凭着自己过时或者错误的经验去说别的东西多么不好,自己的东西多么好.好在,我自认为学习能力非常强,解决问题的能力也非常强.真让我做一个服务器+前端,也是在兴趣之中和能力之内. 一.Node.js简介 原本javascript纯粹是一个前端语言,干的基本上是让网页更丰富更炫的事情.不过Node.js出现后,javacript成为了前后端通吃的语言.比如网易的pomelo就是基于Nod

基于Ascensor.js全屏切换页面插件

今天给大家分享一款基于Ascensor.js全屏切换页面插件,这款实例 适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="general"> <div id="content"> <!--Contenu1--> <div> <div class="contenu&