Я пытаюсь
- потоковое видео (в виде фрагментов), используя тег 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>
Кто-нибудь может направить меня в правильном направлении?