我正在开发一个仅限会员的网站,并且需要保护可在其上使用的视频网址,以便不会在其周围共享或传递给非会员。
我听说过网址屏蔽,但不知道如何做到这一点。或者还有另一种方式吗?
基本上,视频将保存在远程服务器(vps)上或通过Amazon S3保存,该网站将调用视频并在流媒体播放器,JW播放器或我能找到的任何可以保护的播放器中播放视频视频。
有谁知道怎么做?或者知道为我做这件事的服务?
由于
TT
答案 0 :(得分:2)
我不知道为什么这么多人给出错误的建议,但是你可以这样做。仅仅因为它被“播放”了客户端并不意味着它将被保存在客户端 - 你必须使用能够在播放时记录流的软件。屏幕捕获软件或类似的东西。
无论如何,要做到这一点,你需要使用.htaccess将文件请求重定向到一个php文件,该文件将动态地提供文件的位置并对URL进行模糊处理。
您的html代码中需要以下内容
<html>
<body>
<script type="text/javascript" src="flowplayer-3.2.12.min.js">
</script>
<script type="text/javascript">
// <![CDATA[
window.onload = function () {
$f("player", "flowplayer-3.2.16.swf", {
plugins: {
secure: {
url: "flowplayer.securestreaming-3.2.8.swf",
timestampUrl: "sectimestamp.php"
}
},
clip: {
baseUrl: "secure", // Im using a folder called "secure" you can call it whatever you want
url: "trailer.flv",
urlResolvers: "secure",
scaling: "fit",
onStart: function (clip) {
document.getElementById("info").innerHTML = clip.baseUrl + "/" + clip.url;
}
}
});
};
// ]]>
</script>
<div id="player"></div>
</body>
</html>
sectimestamp.php中只有这一行:
<?php
echo time();
?>
然后您需要按如下方式编写.htaccess文件,并将其放在“安全”文件夹或视频保存的任何位置:
RewriteEngine on
RewriteRule ^(.*)/(.*)/(.*)$ video.php?h=$1&t=$2&v=$3
RewriteRule ^$ - [F]
RewriteRule ^[^/]+\.(flv|mp4)$ - [F]
下一步是你的video.php文件,该文件与.htaccess在同一目录中(你可以把它放在别处只调整.htaccess中的url
<?php
$hash = $_GET['h'];
$streamname = $_GET['v'];
$timestamp = $_GET['t'];
$current = time();
$token = 'kljaslidilhal9023402'; // I recommend a dynamic token to be generated using something like mt_rand() function
$checkhash = md5($token . '/' . $streamname . $timestamp);
if (($current - $timestamp) <= 2 && ($checkhash == $hash)) {
$fsize = filesize($streamname);
header('Content-Disposition: attachment; filename="' . $streamname . '"');
if (strrchr($streamname, '.') == '.mp4') {
header('Content-Type: video/mp4');
} else {
header('Content-Type: video/x-flv');
}
header('Content-Length: ' . $fsize);
session_cache_limiter('nocache');
header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');
$file = fopen($streamname, 'rb');
print(fread($file, $fsize));
fclose($file);
exit;
} else {
header('Location: /secure');
}
?>
这是验证部分,其中针对流检查令牌以确保它不超过2秒 - 否则您将必须刷新页面并请求新令牌。
现在所有这一切都是如果您尝试访问url.com/secure/trailer.flv,您将无法感谢.htaccess(下载管理器也无法工作)。但是,由于php信息到url.com/video.html,你将能够流式传输该位置,FLV文件中的源代码将类似于url.com/md5hashtimestamp/md5hashstreamname/md5hashtimestamp/trailer.flv。因此,直接从flash文件中删除流是非常困难的,因为该URL不会退出;由于.htaccess,您无法直接访问网站url.com/secure/trailer.flv;最后,只有选项是在流式传输时记录的屏幕截图/软件。
所以它不是100%安全但它确实让最终用户感到困难 - 最重要的是它是免费的