我需要一种在嵌入DivX播放器代码时隐藏文件源的方法。
文件来源是远程的。我正在尝试使用标头通过php文件流式传输文件。我正在使用3个部分。 1:在会话中定义文件路径。 2:嵌入视频读取文件:stream.php。 3:重定向到视频源。
以下是第1部分,定义文件来源:
<?PHP session_start();
$_SESSION["url_vid"] = "http://remote-server.com/file.avi";
?>
这是嵌入代码(第2部分):
<object classid="clsid:67DABFBF-D0AB-41fa-9C46-CC0F21721616" width="320" height="260" codebase="http://go.divx.com/plugin/DivXBrowserPlugin.cab">
<param name="custommode" value="none" />
<param name="autoPlay" value="false" />
<param name="src" value="stream.php" />
<embed type="video/divx" src="stream.php" custommode="none" width="850" height="400" autoPlay="false" pluginspage="http://go.divx.com/plugin/download/">
</embed>
</object>
这是stream.php代码:
<?PHP
session_start();
header("Location :".$_SESSION["url_vid"]);
?>
这不起作用。
当DivX播放器运行时,它会发出警告:“DivX Plus Web播放器无法下载视频,请检查您的Internet连接”但是当直接转到stream.php文件时,它开始下载文件。 / p>
有没有人知道隐藏文件路径的其他方法。或者用stream.php文件大惊小怪让它通过DivX播放器工作。
我需要使用DivX播放器,因为它可以读取.avi文件。
答案 0 :(得分:2)
http://labs.divx.com/node/1304
显然DivX不能很好地做饼干。这可能是解释。我认为不可能这样做。
我注意到,当网络播放器启动时,它会建立2个连接(对于任何连接) 电影)。第一个连接下载2.8 KB(我猜这是 标题,告诉divx播放器文件是否是电影)然后 下载电影本身并播放的第二个连接。
我注意到,当身份验证“启用”时,divx网络播放器 请求第一个连接“WITH COOKIES”,所以它将获得 标题正确,但是当涉及第二(实际)连接时,它 不发送COOKIE,因此返回的电影是Access 否认文字。
您可能希望设置某种临时密钥以传递给stream.php,stream.php可以查找然后匹配到重定向到的URL(然后删除密钥,防止人们复制链接) - 也就是说,如果问题不是因为DivX不支持重定向。
答案 1 :(得分:0)
尝试
header("Location: " . $_SESSION["url_vid"]); // moved colon
但即便如此,我也不确定你是否可以拦截和重写这样的流媒体请求。它们并不是您习惯的简单的“询问内容,获取内容,完成”任务。
如果不出意外,媒体播放器需要了解HTTP Location
标头以及基于此更改其目标URL的支持;你没有告诉我们你已经做过任何研究来确定是否是这种情况。
(最后,您应该记住,header("Location: abc")
不是在服务器端更改请求的神奇子弹;您将HTTP标头发送回客户端,邀请它用不同的地址“再试一次”。)
还有一些饼干需要考虑;您似乎正在使用基于会话的Cookie,除非您的播放器软件支持并使用它们,否则会话变量将不可见。