无法使用cgi脚本播放视频

时间:2016-01-29 07:58:35

标签: html apache perl video cgi

我真的不知道怎么问这个。 我正在尝试播放cgi-script的视频文件。

这是我的代码(它正在运行):

#!/usr/bin/perl
use warnings;
use strict;
use CGI;

my $cgi = CGI->new;

print $cgi->header(
        -type=> "text/html" );

print <<EOF;
<video width="320" height="240" controls>
<source src='http://127.0.0.1/video.mp4' type='video/mp4'>
Your browser does not support the video tag.
</video> 
EOF

<source>我正在播放视频路径。

#!/usr/bin/perl
use warnings;
use strict;
use CGI;

my $cgi = CGI->new;

print $cgi->header(
        -type=> "text/html" );

print <<EOF;
<video width="320" height="240" controls>
   <source src="home/praveen/ubuntu_Workspace/c/video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video> 
EOF

在此代码中,<source>是我本地目录的路径。 在我将路径(如/home/praveen/ubuntu_workspace/c/video.mp4)提供给我的本地驱动器时,我无法找到路径。

这是我的error.log文件写的:

[Fri Jan 29 13:06:43 2016] [error] [client 127.0.0.1] File does not exist: /usr/lib/cgi-bin/home, referer: http://127.0.0.1/test.cgi

经过一些谷歌搜索后,我发现在网络服务器中它不会在file:///树的上下文中提供html。

请有人告诉我如何访问本地文件。(例如/home/praveen/../test.mp4。为什么会出现这样的错误。

请在我出错的地方建议我。

1 个答案:

答案 0 :(得分:1)

<source>元素上的“src”属性需要一个URL,而不是文件系统路径。如果您提供的来源是:

家/普利文/ ubuntu_Workspace / C / video.mp4

这是一个相对URL并且(假设没有Web服务器重写规则)服务器将假定“home”指的是名为“home”的目录,该目录是HTML文件所在目录的子目录。并且这不存在,因此您得到“文件不存在”错误。

如果您提供的来源是:

/home/praveen/ubuntu_Workspace/c/video.mp4

这是一个绝对URL,并且(同样,假设没有Web服务器重写规则)服务器将在服务器上的Web空间的根目录中查找“home”目录。这可能是/var/www/或类似的东西。同样,该目录不存在,您将得到相同的错误。

您的网络服务器只能访问网络空间内的文件。这是一项安全功能。你真的不想改变它。

解决方案是将视频文件移动到此主机的Web空间内的目录中。

更新:另一个选项是配置您的网络服务器以支持per-user web directories并将视频文件放在那里。