Kullanıcıların web kamerasını ve sesini kaydetmek ve sunucudaki bir dosyaya kaydetmek istiyorum. Bu dosyalar daha sonra diğer kullanıcılara sunulabilir.
Kayıttan yürütmeyle ilgili herhangi bir sorun yaşamıyorum, ancak içeriği kaydederken sorun yaşıyorum.
Anladığım kadarıyla getUserMedia .record()
işlevi henüz yazılmadı - şimdiye kadar sadece bir öneri yapıldı.
PeerConnectionAPI kullanarak sunucumda bir eş bağlantı oluşturmak istiyorum. Bunun biraz zor olduğunu anlıyorum, ancak sunucuda bir eş oluşturmanın ve istemci eşinin gönderdiklerini kaydetmenin mümkün olması gerektiğini düşünüyorum.
Bu mümkünse, bu verileri flv veya başka bir video formatında kaydedebilmeliyim.
Tercihim, istemcinin yüklemeden önce ilk denemesini beğenmediyse videoları yeniden kaydetmesine izin vermek için web kamerası + ses istemci tarafını kaydetmek. Bu, ağ bağlantılarında kesintilere de izin verir. Verileri tuvale göndererek web kamerasından tek tek 'görüntülerin' kaydedilmesine izin veren bazı kodlar gördüm - bu harika, ancak sese de ihtiyacım var.
Şimdiye kadar sahip olduğum müşteri tarafı kodu:
<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>