html实现录音和播放功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html实现录音和播放功能相关的知识,希望对你有一定的参考价值。

http://www.7k7k.com/swf/132745.htm?qq-pf-to=pcqq.discussion
像这个游戏里面的一样,我想实现两个按钮,一个录音,一个播放,但是不想要有上传,播放器之类的

1、首先新建一个html文档,如图所示。

2、然后在body标签里输入video标签。

3、接着在video标签内输入controls="controls",如图所示。

4、然后在video标签里输入<source>,接着在<source>内输入src="medias/volcano.ogg",如图所示。

5、然后在后面输入type="video/ogg"如图所示,然后在定义一个source标签。

6、在标签内输入src="medias/volcano.mp4" type="video/mp4"如图所示。

7、最后按f12预览就可以看到视频播放器了。

参考技术A 通过html实现录音和播放功能需要使用插件实现,但是可以通过html5实现:
1、API通过使用navigatior.getUserMedia()方法来让Web应用程序拥有访问用户摄像头与麦克风设备的能力。
2、录制视频数据与音频数据的代码与之类似:
<input type="file" accept="video/*;capture=camcorder">
<input type="file" accept="audio/*;capture=microphone">
3、在这些代码中,只需使用file控件(类型为file的input元素)即可完成拍照或录制媒体数据的功能。但是在因为这些代码中尚缺乏一些实现与之相关的需求(例如在canvas元素中渲染捕捉到的视频数据,或者对捕捉到的视频数据应用WEBGL滤镜)的能力,所以没有得到开发者的广泛应用。
4、音频与视频信息的捕捉一直是Web开发中的一个难点。许多年来,我们一直依赖浏览器插件来实现这个需求。 在HTML 5中,出现了许多可以访问硬件设备的API,例如访问GPS设备的Geolocation API、访问accelerometer设备的Orientation API、访问GPU设备的WebGL API、访问音频播放设备的Web Audio API等等。这些API是非常强大的,因为开发者可以直接通过编写JavaSccript脚本代码来访问底层硬件设备。
参考技术B

录音播放实例:(附.JS)

<!DOCTYPE
 HTML>
<htmllang="en">
    <head>
        <metacharset = "utf-8"/>
        <title>Chat
 by Web Sockets</title>
        <scripttype="text/javascript"src="js/recorder.js">
 </script>
        <scripttype="text/javascript"src="js/jquery-1.10.1.min.js">
 </script>
         
        <styletype='text/css'>
            
        </style>
    </head>
    <body>
        <audiocontrols autoplay></audio>
        
       <inputtype="button"id="record"value="Record">
       <inputtype="button"id="export"value="Export">
       <divid="message"></div>
    </body>
     
    <scripttype='text/javascript'>
            var
 onFail = function(e) 
                console.log('Rejected!',
 e);
            ;
         
            var
 onSuccess = function(s) 
                var
 context = new webkitAudioContext();
                var
 mediaStreamSource = context.createMediaStreamSource(s);
                rec
 = new Recorder(mediaStreamSource);
                //rec.record();
         
                //
 audio loopback
                //
 mediaStreamSource.connect(context.destination);
            
         
            //window.URL
 = URL || window.URL || window.webkitURL;
            navigator.getUserMedia 
 = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
         
            var
 rec;
            var
 audio = document.querySelector('#audio');
         
            function
 startRecording() 
                if
 (navigator.getUserMedia) 
                    navigator.getUserMedia(audio:
 true, onSuccess, onFail);
                
 else 
                    console.log('navigator.getUserMedia
 not present');
                
            
            startRecording();
            //--------------------     
            $('#record').click(function()
 
                rec.record();
               var
 dd = ws.send("start");
                $("#message").text("Click
 export to stop recording");
     
                //
 export a wav every second, so we can send it using websockets
                intervalKey
 = setInterval(function() 
                    rec.exportWAV(function(blob)
 
                         
                        rec.clear();
                        ws.send(blob);
                        //audio.src
 = URL.createObjectURL(blob);
                    );
                ,
 3000);
            );
             
            $('#export').click(function()
 
                //
 first send the stop command
                rec.stop();
                ws.send("stop");
                clearInterval(intervalKey);
                 
                ws.send("analyze");
                $("#message").text("");
            );
             
            var
 ws = new WebSocket("ws://127.0.0.1:8088/websocket/servlet/record");
            ws.onopen
 = function () 
                console.log("Openened
 connection to websocket");
            ;
            ws.onclose
 = function ()
                 console.log("Close
 connection to websocket");
            
            ws.onmessage
 = function(e) 
                audio.src
 = URL.createObjectURL(e.data);
            
             
            
        </script>
</html>

recorder.js内容:

(function(window)
 
  varWORKER_PATH = 'js/recorderWorker.js';
 
  varRecorder = function(source,
 cfg)
    varconfig = cfg || ;
    varbufferLen = config.bufferLen || 4096;
    this.context
 = source.context;
    this.node
 = this.context.createJavaScriptNode(bufferLen,
 2, 2);
    varworker = newWorker(config.workerPath || WORKER_PATH);
    worker.postMessage(
      command:'init',
      config:
 
        sampleRate:this.context.sampleRate
      
    );
    varrecording = false,
      currCallback;
 
    this.node.onaudioprocess
 = function(e)
      if(!recording) return;
      worker.postMessage(
        command:'record',
        buffer:
 [
          e.inputBuffer.getChannelData(0),
          e.inputBuffer.getChannelData(1)
        ]
      );
    
 
    this.configure
 = function(cfg)
      for(varprop incfg)
        if(cfg.hasOwnProperty(prop))
          config[prop]
 = cfg[prop];
        
      
    
 
    this.record
 = function()
      recording
 = true;
    
 
    this.stop
 = function()
      recording
 = false;
    
 
    this.clear
 = function()
      worker.postMessage(
 command: 'clear');
    
 
    this.getBuffer
 = function(cb)
 
      currCallback
 = cb || config.callback;
      worker.postMessage(
 command: 'getBuffer')
    
 
    this.exportWAV
 = function(cb,
 type)
      currCallback
 = cb || config.callback;
      type
 = type || config.type || 'audio/wav';
      if(!currCallback) thrownew Error('Callback
 not set');
      worker.postMessage(
        command:'exportWAV',
        type:
 type
      );
    
 
    worker.onmessage
 = function(e)
      varblob = e.data;
      currCallback(blob);
    
 
    source.connect(this.node);
    this.node.connect(this.context.destination);   //this
 should not be necessary
  ;
 
  Recorder.forceDownload
 = function(blob,
 filename)
    varurl = (window.URL || window.webkitURL).createObjectURL(blob);
    varlink = window.document.createElement('a');
    link.href
 = url;
    link.download
 = filename || 'output.wav';
    varclick = document.createEvent("Event");
    click.initEvent("click",true,true);
    link.dispatchEvent(click);
  
 
  window.Recorder
 = Recorder;
 
)(window);

参考技术C 万一漏气了 参考技术D 他这个是flash做的,也不是录音,只是记录你的按键,然后播放录音的时候就按顺序再来一遍追问

那如果我想用代码实现 应该如何做

本回答被提问者采纳

Smobiler实现录音和录音播放调用通讯录功能(开发日志九)

一、录音和播放
技术分享

record000~2.jpg (190.05 KB, 下载次数: 3)

下载附件

2015-12-23 17:41 上传



详细步骤:

1,  添加VoiceRecorderButton控件↓
技术分享

201.png (2.44 KB, 下载次数: 11)

下载附件

2015-10-12 16:55 上传



2,  选择VoiceRecorderButton为对象→事件→双击RecorderAudio↓
技术分享

202.png (2.24 KB, 下载次数: 11)

下载附件

2015-10-12 16:55 上传



3,  写代码↓
技术分享

203.png (3.66 KB, 下载次数: 11)

下载附件

2015-10-12 16:55 上传



4,  插入ImageButton,作为播放录音的按钮↓
技术分享

204.png (760 Bytes, 下载次数: 11)

下载附件

2015-10-12 16:55 上传

技术分享

205.png (1.27 KB, 下载次数: 11)

下载附件

2015-10-12 16:55 上传



可将TEXT改为“play” (也可不改)↓
技术分享

206.png (858 Bytes, 下载次数: 11)

下载附件

2015-10-12 16:56 上传

技术分享

207.png (745 Bytes, 下载次数: 11)

下载附件

2015-10-12 16:56 上传



将Image ID改为image文件夹下的同名文件作为按钮图片↓
技术分享

208.png (67.53 KB, 下载次数: 11)

下载附件

2015-10-12 16:56 上传


技术分享

209.png (907 Bytes, 下载次数: 11)

下载附件

2015-10-12 16:56 上传



5,  选中ImageButton为对象,选择事件→双击Click↓
技术分享

210.png (3.7 KB, 下载次数: 11)

下载附件

2015-10-12 16:56 上传



6,  写代码↓
技术分享

211.png (3.77 KB, 下载次数: 11)

下载附件

2015-10-12 16:56 上传






二、调用手机通讯录里的联系人
技术分享

phonenumber000~2.jpg (245.5 KB, 下载次数: 3)

下载附件

2015-12-23 17:41 上传



详细步骤:

1,  添加PhoneButton控件↓
技术分享

301.png (1.22 KB, 下载次数: 11)

下载附件

2015-10-12 16:59 上传



2,  不用写代码




























以上是关于html实现录音和播放功能的主要内容,如果未能解决你的问题,请参考以下文章

Swift实现iOS录音与播放音频功能

Python调用Windows API函数编写录音机和音乐播放器

在 FMOD 中播放和收听录音设备

iOS 实时录音和播放

音频播放录音视频播放拍照视频录制

iOS开发系列--音频播放录音视频播放拍照视频录制