Vorrei registrare la webcam e l'audio degli utenti e salvarli in un file sul server. Questi file potrebbero quindi essere forniti ad altri utenti.
Non ho problemi con la riproduzione, tuttavia ho problemi a registrare il contenuto.
La mia comprensione è che la .record()
funzione getUserMedia non è stata ancora scritta - finora è stata fatta solo una proposta.
Vorrei creare una connessione peer sul mio server utilizzando PeerConnectionAPI. Capisco che sia un po 'complicato, ma penso che dovrebbe essere possibile creare un peer sul server e registrare ciò che il client-peer invia.
Se questo è possibile, dovrei essere in grado di salvare questi dati in flv o in qualsiasi altro formato video.
La mia preferenza è in realtà quella di registrare la webcam + audio lato client, per consentire al client di registrare nuovamente i video se non gli è piaciuto il primo tentativo prima del caricamento. Ciò consentirebbe anche interruzioni nelle connessioni di rete. Ho visto un codice che consente la registrazione di singole "immagini" dalla webcam inviando i dati alla tela: è fantastico, ma ho bisogno anche dell'audio.
Ecco il codice lato client che ho finora:
<video autoplay></video>
<script language="javascript" type="text/javascript">
function onVideoFail(e) {
console.log('webcam fail!', e);
};
function hasGetUserMedia() {
// Note: Opera is unprefixed.
return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia);
}
if (hasGetUserMedia()) {
// Good to go!
} else {
alert('getUserMedia() is not supported in your browser');
}
window.URL = window.URL || window.webkitURL;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia;
var video = document.querySelector('video');
var streamRecorder;
var webcamstream;
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true, video: true}, function(stream) {
video.src = window.URL.createObjectURL(stream);
webcamstream = stream;
// streamrecorder = webcamstream.record();
}, onVideoFail);
} else {
alert ('failed');
}
function startRecording() {
streamRecorder = webcamstream.record();
setTimeout(stopRecording, 10000);
}
function stopRecording() {
streamRecorder.getRecordedData(postVideoToServer);
}
function postVideoToServer(videoblob) {
/* var x = new XMLHttpRequest();
x.open('POST', 'uploadMessage');
x.send(videoblob);
*/
var data = {};
data.video = videoblob;
data.metadata = 'test metadata';
data.action = "upload_video";
jQuery.post("http://www.foundthru.co.uk/uploadvideo.php", data, onUploadSuccess);
}
function onUploadSuccess() {
alert ('video uploaded');
}
</script>
<div id="webcamcontrols">
<a class="recordbutton" href="javascript:startRecording();">RECORD</a>
</div>