热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

html5实现手机触摸出现录音以及离开停止录音并上传的功能(代码)-

本篇文章给大家带来的内容是关于html5实现手机触摸出现录音以及离开停止录音并上传的功能(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。​

本篇文章给大家带来的内容是关于html5实现手机触摸出现录音以及离开停止录音并上传的功能(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

以下是实现功能实例:
html

    
    
    
    

var microDome=document.getElementById('microphone'); var recorder; var btnElem=document.getElementById("microphone");//获取ID function initEvent() { btnElem.addEventListener("touchstart", function(event) { //event.preventDefault();//阻止浏览器默认行为 HZRecorder.get(function (rec) { recorder = rec; recorder.start(); }); }); btnElem.addEventListener("touchend", function(event) { //event.preventDefault(); HZRecorder.get(function (rec) { recorder = rec; recorder.stop(); }) recorder.upload("/upload", function (state, e) { switch (state) { case 'uploading': //var percentComplete = Math.round(e.loaded * 100 / e.total) + '%'; break; case 'ok': //alert(e.target.responseText); alert("上传成功"); break; case 'error': alert("上传失败"); break; case 'cancel': alert("上传被取消"); break; } }); }); }; initEvent();

下面是js:

//兼容
window.URL = window.URL || window.webkitURL;
//获取计算机的设备:摄像头或者录音设备
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;var HZRecorder = function (stream, config) {
    cOnfig= config || {};
    config.sampleBits = config.sampleBits || 8;      //采样数位 8, 16
    config.sampleRate = config.sampleRate || (44100 / 6);   //采样率(1/6 44100)

    //创建一个音频环境对象
    var audioCOntext= window.AudioContext || window.webkitAudioContext;    
    var cOntext= new audioContext();    
    var audioInput = context.createMediaStreamSource(stream);    
    // 第二个和第三个参数指的是输入和输出都是单声道,2是双声道。
    var recorder = context.createScriptProcessor(4096, 1, 1);    
    var audioData = {
        size: 0          //录音文件长度
        , buffer: []     //录音缓存
        , inputSampleRate: context.sampleRate    //输入采样率
        , inputSampleBits: 16       //输入采样数位 8, 16
        , outputSampleRate: config.sampleRate    //输出采样率
        , outputSampleBits: config.sampleBits       //输出采样数位 8, 16
        , input: function (data) {
            this.buffer.push(new Float32Array(data));            
            this.size += data.length;
        }
        , compress: function () { //合并压缩
            //合并
            var data = new Float32Array(this.size);            
            var offset = 0;            
            for (var i = 0; i 

这些都是通过大神的讲解进行整合后自己摸索出来的,有什么问题可以评论,我们一起解决,谢谢!!!


推荐阅读
author-avatar
逍遥子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有