HTML5和getUserMedia - 在一段时间后录制音频并保存到Web服务器

Eni*_*jar 6 php audio html5 microphone getusermedia

在开发我的网页时,我遇到了使用HTML5的getUserMedia的一些困难.这是我第一次尝试实现此功能来录制用户音频输入.Flash不是此项目的选项,因为它也必须在移动设备上使用.

我来这里看看是否有人有经验并知道如何用getUserMedia实现HTML5以记录用户麦克风一段时间(用PHP中的会话完成),然后保存并将音频文件发送到Web服务器.

如果这是不可能的,那么有没有其他方式,也许有Java小程序?

js:

<script>
      var onFail = function(e) {
        console.log('Rejected!', e);
      };

      var onSuccess = function(s) {
        var context = new webkitAudioContext();
        var mediaStreamSource = context.createMediaStreamSource(s);
        recorder = new Recorder(mediaStreamSource);
        recorder.record();

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

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

      var recorder;
      var audio = document.querySelector('audio');

      function startRecording() {
        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);
        });
      }
    </script>
Run Code Online (Sandbox Code Playgroud)

HTML(从这里链接到recorder.js ):

    <script type="text/javascript" src="recorder.js"> </script>

    <input onclick="startRecording()" type="button" value="start recording">
    <input onclick="stopRecording()" type="button" value="stop recording and play">
Run Code Online (Sandbox Code Playgroud)

小智 6

可以使用XMLHttpRequest

function upload(blobOrFile) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/upload.aspx', true);
    xhr.onload = function (e) {
        var result = e.target.result;
    };

    xhr.send(blobOrFile);
}

// stop recording function calls the upload method
// I am using recorder.js

recorder.exportWAV(function (blob) {
    var url = URL.createObjectURL(blob);
    audio.src = url;
    audio.controls = true;
    var hf = document.createElement('a');
    hf.href = url;
    hf.download = new Date().toISOString() + '.wav';
    upload(blob);   
});

// on server side ASPX pageload - can save .wav file on server

Request.SaveAs(Server.MapPath("/foo/" + "1" + ".wav"), false);
Run Code Online (Sandbox Code Playgroud)

  • @web_ninja不要将整个媒体文件放入数据库中.将文件存储为本地文件系统中的文件(该系统适用于该文件系统).并且只存储mysql数据库中文件的链接. (2认同)