使用html5 websockets发送音频

时间:2017-04-17 19:06:54

标签: html5 audio websocket audio-recording microphone

我的要求是使用html5网络套接字连接将从麦克风捕获的音频块发送到服务器。 与服务器建立Web套接字连接。当用户说话时捕获小块音频并发送到服务器。这应该发生,直到用户停止讲话10秒钟,然后关闭Web套接字连接。用户开始讲话时再次打开Web套接字连接。

我知道如何打开连接并首次发送音频。 我有两个按钮。 onClick一个按钮(startRecording)我将打开web套接字连接,我正在录制音频。 onClick第二个按钮(stopRecording)我正在将音频发送到服务器。

但我的问题是如何使用out按钮执行此操作,并且必须记录音频直到用户暂停并发送到服务器。

  window.URL = window.URL || window.webkitURL;
  navigator.getUserMedia  = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;

  var recorder;
  var audio = document.querySelector('audio');
  var websocket ;
  var text;
    var onSuccess = function(s) {
    var context = new AudioContext();
    var mediaStreamSource = context.createMediaStreamSource(s);
    recorder = new Recorder(mediaStreamSource);
    recorder.record();

    // audio loopback
    // mediaStreamSource.connect(context.destination);
  }


  function startRecording() {
      var wsURI = "url"';

        websocket = new WebSocket(wsURI);
        websocket.onopen = function(evt) { 
        onOpen(evt)
        };
        websocket.onclose = function(evt) { onClose() };
        websocket.onmessage = function(evt) { onMessage(evt) };
        websocket.onerror = function(evt) { onError(evt) };
        function onOpen(evt) {
              var message = {
                'action': 'start',
                //'content-type': 'audio/l16;rate=22050' 
                'content-type': 'audio/wav;rate=22050'
              };
              websocket.send(JSON.stringify(message));
            }
        function onMessage(evt) {
              console.log(evt.data);
              //console.log(JSON.parse(evt.data))

              }

            }
        function onClose() {
            websocket.close();
            }
    if (navigator.getUserMedia) {
      navigator.getUserMedia({audio: true}, onSuccess, onFail);
    } else {
      console.log('navigator.getUserMedia not present');
    }
  }

  function stopRecording() {
    recorder.stop();
    recorder.exportWAV(function(s) {
      //audio.src = window.URL.createObjectURL(s);
        websocket.send(s);
        //websocket.onclose();
    });
  }

0 个答案:

没有答案