У меня возникают трудности с getUserMedia с HTML5 при разработке моей веб-страницы. Это первый случай, когда я попытался реализовать это для записи аудиовхода пользователя. Flash не является вариантом для этого проекта, так как он также должен использоваться на мобильных устройствах.
Я пришел сюда, чтобы узнать, есть ли у кого-нибудь опыт и знает, как реализовать HTML5 с помощью getUserMedia для записи пользовательского микрофона в течение определенного времени (выполняется с сеансом на PHP), а затем сохраняет и отправляет аудиофайл на веб-сервер ,
Если это невозможно, есть ли другой способ, возможно, с помощью 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>
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">
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);