javascript - 一键运行更多功能JavaScript(在浏览器中录制音频)

标签 javascript html audio

嗨,我有此源代码可以在浏览器中录制音频。 Record.js调用另一个脚本,该脚本提供录制音频并将其保存到服务器。

index.html

<button type="submit" onclick="toggleRecording()" data-run="0"></button>

record.js
//starts by click on button
  function toggleRecording() {
    var run = parseInt(getAttribute('data-run')); //

      if(run === 1) {
      recorder && recorder.stop();
      recorder && recorder.exportWAV(function(blob) {
        uploadAudioFromBlob(blob);
      });
      __log('Recording is  stopped.');
      button.setAttribute('data-run', 0);

    } 

    else {
      recorder && recorder.clear();
      recorder && recorder.record();
      __log('Speak...');
      button.setAttribute('data-run', 1);
    }
  }

  function __log(e, data) {     
showInfo("\n" + e + " " + (data || ''));  
  }

  var audio_context;
  var recorder;
  function startUserMedia(stream) { 
    var input = audio_context.createMediaStreamSource(stream); 
    recorder = new Recorder(input); 
    __log('Systém for recording is available.'); 
  }

  function startRecording(button) {   
    recorder && recorder.clear(); 
    recorder && recorder.record(); 
    button.nextElementSibling.disabled = false;
    __log('Talk...'); 
  }

   window.onload=function init() {
    try { 
      window.AudioContext = window.AudioContext || window.webkitAudioContext; 
      navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;   
      window.URL = window.URL || window.webkitURL;      
      audio_context = new AudioContext;      
    } catch (e) { 
      alert('This browser do not support audio!');
    }    
    navigator.getUserMedia({audio: true}, startUserMedia, function(e) {
      __log('No audio was detected: ' + e);
    });
  };

现在,此记录系统按以下步骤工作:
  • function init()在页面加载后立即运行,并且在用户允许麦克风进入消息后startusermedia函数运行
    2单击按钮后运行toggleRecording(button)函数,该函数开始记录音频
  • 第二次单击按钮将运行toggleRecording函数,该函数会停止录制音频

  • 如果可能,我想在此步骤中使用此系统:
    1.首先单击按钮运行功能“init”,“startusermedia”和“togglerecording”,以便在单击后立即开始记录
    2.点击将调用“toggleRecording”功能停止录音

    本主题与我之前的问题有关:Run 2 functions with one button Javascript

    最佳答案

    如果我正确地回答了您的问题,那么您只需要以下内容:

    var recording = false;
    var recordButton = document.getElementById('recordButton');
    function startRecording() {
       if(!recording)
       {
          init();
          startusermedia(recordButton); 
      }
    
      toggleRecording(recordButton);
      recording = !recording;
    
    }
    

    和按钮:
    <button type="submit" onclick="startRecording();" data-run="0" id="recordButton"></button>
    

    关于javascript - 一键运行更多功能JavaScript(在浏览器中录制音频),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29687385/

    相关文章:

    android - 音频捕获而不覆盖Eclipse中的相​​同文件?

    javascript - jquery onclick hide 根本不起作用,我哪里出错了

    javascript - PHP 更改按钮文本并相应更新数据库

    javascript - 动画随机图像微调器

    html - 背景视频未在移动设备和台式机上的 Safari 浏览器中播放

    javascript - 在移动设备上循环 <audio>

    javascript - node.js - 将客户端转发到负载最少的集群

    html - 硬证明内容

    html - 无论如何,当我覆盖所有样式时,是否有任何理由使用 HX 标签?

    iphone - AUGraphInitialize 将kAudioUnitSubType_Reverb2 添加到AUGraph 时出现错误代码-10868