php - 使用 PHP 将 http 数据从浏览器发送到另一台服务器
问题描述
我试图通过连接到浏览器的本地服务器上的 php 脚本从远程服务器流式传输 video.mp4 文件。所以它看起来像这样......
浏览器 <==http==> [运行 my.php 的服务器 1] <==> [带有 VIDEO.MP4 文件的服务器 2]
连接到服务器 1 的浏览器想要播放位于远程服务器 2 上的 video.mp4。
用户访问我的网站(服务器 1)并想要播放视频。该视频位于 server2 上。浏览器调用服务器 1 上的 my.php 脚本,将 url 提供给服务器 2,如下所示
http://www.server1.com/my.php?url=http://www.server2.com/video.mp4
我正在制作一个接受新服务器的 url 的 php 脚本,从远程服务器获取文件并将其发送回浏览器进行播放。
可以有几个远程服务器,其中一些我无法控制。
所以我的脚本在下面,该脚本有效,但它不进行渐进式下载,允许视频在下载其余部分时立即开始播放,而是浏览器等待很长时间让整个大视频首先下载到浏览器(2Gigs ),然后开始播放。
我需要它在下载整个文件之前立即开始播放。另一个优点也可以向前和向后寻找(也许在那里要求太多)。
任何人有任何想法如何解决它,或者我可以做一些其他的选择吗?
<?php
$url=$_GET["url"]; // URL to remote server that has the video file
$s = fopen($url, "rb");
if (!$s ) {
echo "open failed";
$url = str_replace("https", "http",$url);
$s = fopen($url, "rb");
if (!$s) {
echo "\n<br>FAILED cant open:". $url;
exit();
}
}
if (isset($http_response_header)) {
foreach ($http_response_header as $h) {
header($h);
}
}
else {
$type = 'Content-Type:video/mp4';
header($type);
}
ini_set('max_execution_time', 0);
while (!feof($s)) { // read from other server, send to browser
echo fread($s, 4096);
}
fclose($s);
?>
解决方案
推荐阅读
- google-apis-explorer - 从 php 或 html 表单将文件上传到 Google Team Drive
- python - 如何创建“while”异常循环?
- amazon-web-services - 在 AWS lambda 函数中找不到模块
- python - 半径为 x 的圆中整数坐标的更快解决方案是什么
- android - 关闭 Activity 会导致 monogame 的表面缓冲区错误
- tomcat - tomcat 9 服务在 tomcat 9 命令行实例上打开句柄(?)
- hyperledger-fabric - 通过cryptogen工具为组织创建默认管理员用户的目的是什么?
- actionscript - 动画上的 ActionScript 3.0。试图从另一个框架操作在一个框架中添加 (addChild) 的实例。
- c - 使用 getchar() 在 C 中计算数学表达式
- kendo-ui - 剑道列表框选择在单独的列表框中生成重复条目