使用PHP隐藏divx播放器的文件源

时间:2011-07-28 18:23:58

标签: php file stream embed

我需要一种在嵌入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文件。

2 个答案:

答案 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,除非您的播放器软件支持并使用它们,否则会话变量将不可见。