我正在开发360度视频流应用。我目前正在通过Apache代理将S3的HLS片段传递给客户端,以解决iOS错误,在该错误中不检查CORS标头是否包含视频纹理。我想监视正在发送给用户的数据量,以便可以向用户提供有关他们何时可以开始视频播放的反馈。
假设用户加载了/video.php,这将对/video/video1.ts进行XHR调用,大小为20mb。是否可以在PHP或命令行中甚至通过IP地址匹配两个请求,以便将进度消息传递回用户?我希望能够说“下载的5mb / 20mb”,即使仍无法准确预测HLS播放何时开始。
据我所知,无法得知已取得多少进展或何时开始HLS播放-我使用的是Delight VR,但他们表示他们无法访问该数据从浏览器。
感谢任何想法!
答案 0 :(得分:0)
看起来唯一的方法是使用PHP脚本代理文件并将进度存储在会话变量中。
这是https://coolcodings.wordpress.com/2014/08/27/track-file-downloading-progress-with-javascript/的一种方法的摘录
$file = @fopen("SET YOUR DOWNLOADING FILE PATH HERE","rb");
$fileSize = filesize("SET YOUR DOWNLOADING FILE PATH HERE");
$fileName = "SET FILE NAME";
header('Content-Type: SET YOUR MIME TYPE');
header("Content-Disposition: attachment; filename=".$fileName);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Length: '.$fileSize);
while(!feof($file)) {
echo fread($file, 1024*8);
ob_flush();
flush();
$downloadedBytes+= (1024 * 8);
session_start();
$_SESSION['current_file_downloaded_bytes'] = $downloadedBytes;
session_commit();
}