HTML5 e getUserMedia – Registra audio e salva sul server Web dopo un determinato periodo di tempo

Sto avendo qualche difficoltà con getUserMedia con HTML5 durante lo sviluppo della mia pagina web. Questa è la prima volta che ho provato a implementarlo per registrare un input audio dell'utente. Flash non è un'opzione per questo progetto in quanto deve essere utilizzato anche sui dispositivi mobili.

Vengo qui per vedere se qualcuno ha esperienza e sa come implementare un HTML5 con getUserMedia per registrare un microfono degli utenti per un certo periodo di tempo (fatto con una session in PHP) e quindi salva e invia il file audio a un server web .

Se questo non è ansible, esiste un altro modo, magari con un'applet Java?

Il 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> 

L'HTML (collegato a recorder.js da qui ):

  <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"> 

può usare 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);