Невозможно потоковое видео с помощью PHP - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь

  • потоковое видео (в виде фрагментов), используя тег HTML <video>.
  • чтение двоичного файла с использованием fseek() и fread() иотправьте двоичные данные обратно клиенту (браузеру).
  • сделайте AJAX-запрос от браузера к серверу, чтобы получить двоичные данные и создать Object URL из Blob иприсвойте его видео тегу src.

  • Ниже код получает только первый фрагмент видео.Я не могу успешно транслировать это сам.

Код PHP:

<?php

$fp = fopen("/var/www/html/../api/public/videos/6/jellyfish.mp4","r");

if($fp === false){
  die("Could not open file");
}

header('accept-ranges:bytes');
header('Content-type:video/mp4');
header('Content-length:'.$_GET['offset']);

fseek($fp,intval($_GET['start']));
echo fread($fp,intval($_GET['offset']));

Код FrontEnd:

<html>
<head><title>Streaming a Video</title></head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>

<video id='playThis' controls="controls" height="500" width="500">
    Your browser does not support the video tag
</video>

<script>

$.ajax({
    url:'http://localhost/code.php',
    method:'GET',
    data:{start:0,offset:1000},
    xhrFields:{
         responseType: 'blob'
    },
    success:function(response){
        document.getElementById('playThis').src = URL.createObjectURL(response);
    },
    error:function(xhr){
        console.log(xhr);
    }

});
</script>

</body>
</html>

Кто-нибудь может направить меня в правильном направлении?

...