mxmod
Новичок
Здравствуйте, я реализовал сохранение записи на сервер с веб-камеры по нажатию кнопки(окончание записи). Я не знаю как сделать, чтобы поток видео передавался в реальном времени, т.е к примеру если закрыть окно браузера или непредвиденно прервётся запись, то на сервере всё равно создастся запись, что успело туда передаться.
JavaScript:
navigator.mediaDevices.getUserMedia({video:true, audio:true}).then((stream)=>{
video.srcObject=stream;
video.play();
console.log(stream);
let mediaRecorder=new MediaRecorder(stream);
console.log(mediaRecorder);
document.querySelector("#start").addEventListener("click", function(){
mediaRecorder.start()
});
let videoChunk=[];
mediaRecorder.addEventListener("dataavailable",function(event){
videoChunk.push(event.data)
let videoBlob=new Blob(videoChunk, {type:"video/mp4"});
});
mediaRecorder.addEventListener("stop",function(){
videoBlob=new Blob(videoChunk, {type:"video/mp4"});
console.log(videoBlob)
let videoURL=URL.createObjectURL(videoBlob);
console.log(videoURL);
let video2 = document.createElement('video');
video2.src = videoURL;
video2.controls = true;
video2.autoplay = false;
document.querySelector("#video2").appendChild(video2);
document.querySelector("#save").href=videoURL;
document.querySelector("#save").download="record.mp4";
console.log(videoChunk);
let fd=new FormData();
fd.append("voice", videoBlob);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'index2.php', true);
xhr.onload = function(e) {
console.log('Sent');
};
xhr.send(fd);
xhr.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
console.log(this.response);
}
}
videoChunk = [];
});
document.querySelector("#stop").addEventListener('click', function(){
mediaRecorder.stop();
});
});
PHP:
<?php
$upload="files/video.mp4";
move_uploaded_file($_FILES["voice"]["tmp_name"], $upload);
?>