【问题标题】:Is it possible to get the speed of a file transfer using Apache?是否可以使用 Apache 获得文件传输的速度?
【发布时间】:2018-10-28 23:12:53
【问题描述】:

我正在开发一款 360 度视频流应用。我目前正在通过 Apache 代理将 HLS 片段从 S3 传递到客户端,以解决未检查 CORS 标头的视频纹理的 iOS 错误。我想监控发送给用户的数据量,以便我可以向用户提供有关他们何时可以开始播放视频的反馈。

假设用户加载了 /video.php,它对 /video/video1.ts 进行了 XHR 调用,大小为 20mb。是否可以在 PHP 或命令行中匹配这两个请求,即使只是通过 IP 地址,也可以将进度消息传回给用户?我很想能够说“下载了 5mb / 20mb”——即使仍然不太可能准确预测 HLS 播放何时开始。

据我所知,没有办法知道已经取得了多少进展或何时开始 HLS 播放 - 我正在使用 Delight VR,但他们说他们无法访问该数据从浏览器。

非常感谢您的任何想法!

【问题讨论】:

    标签: javascript apache xmlhttprequest 360-virtual-reality delightvr


    【解决方案1】:

    看起来唯一的方法是使用 PHP 脚本来代理文件并将进度存储在会话变量中。

    这是来自https://coolcodings.wordpress.com/2014/08/27/track-file-downloading-progress-with-javascript/的一种方法的sn-p

    $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();
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多