За последние 24 часа нас посетили 9835 программистов и 920 роботов. Сейчас ищут 324 программиста ...

Передавать поток видео с веб-камеры в реальном времени на сервер с сохранением

Тема в разделе "PHP для новичков", создана пользователем mxmod, 25 ноя 2021.

  1. mxmod

    mxmod Новичок

    С нами с:
    5 ноя 2020
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте, я реализовал сохранение записи на сервер с веб-камеры по нажатию кнопки(окончание записи). Я не знаю как сделать, чтобы поток видео передавался в реальном времени, т.е к примеру если закрыть окно браузера или непредвиденно прервётся запись, то на сервере всё равно создастся запись, что успело туда передаться.
    Код (Javascript):
    1. navigator.mediaDevices.getUserMedia({video:true, audio:true}).then((stream)=>{
    2. video.srcObject=stream;
    3. video.play();
    4. console.log(stream);
    5. let mediaRecorder=new MediaRecorder(stream);
    6. console.log(mediaRecorder);
    7. document.querySelector("#start").addEventListener("click", function(){
    8. mediaRecorder.start()
    9. });
    10. let videoChunk=[];
    11. mediaRecorder.addEventListener("dataavailable",function(event){
    12. videoChunk.push(event.data)
    13. let videoBlob=new Blob(videoChunk, {type:"video/mp4"});
    14. });
    15. mediaRecorder.addEventListener("stop",function(){
    16. videoBlob=new Blob(videoChunk, {type:"video/mp4"});
    17. console.log(videoBlob)
    18. let videoURL=URL.createObjectURL(videoBlob);
    19. console.log(videoURL);
    20. let video2 = document.createElement('video');
    21.       video2.src = videoURL;
    22.       video2.controls = true;
    23.       video2.autoplay = false;
    24.     document.querySelector("#video2").appendChild(video2);
    25.     document.querySelector("#save").href=videoURL;
    26. document.querySelector("#save").download="record.mp4";
    27. console.log(videoChunk);
    28. let fd=new FormData();
    29. fd.append("voice", videoBlob);
    30. var xhr = new XMLHttpRequest();
    31. xhr.open('POST', 'index2.php', true);
    32. xhr.onload = function(e) {
    33.   console.log('Sent');
    34. };
    35. xhr.send(fd);
    36. xhr.onreadystatechange=function() {
    37.     if (this.readyState==4 && this.status==200) {
    38.         console.log(this.response);
    39.     }
    40. }
    41.     videoChunk = [];
    42. });
    43.      document.querySelector("#stop").addEventListener('click', function(){
    44.          mediaRecorder.stop();
    45.            
    46. });
    47. });
    PHP:
    1. <?php
    2. $upload="files/video.mp4";
    3. move_uploaded_file($_FILES["voice"]["tmp_name"], $upload);
    4. ?>
     
  2. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    59
    Это надо делать средствами сервера, а не через браузер...