我正在開發一個僅限會員的網站,並且需要保護將在其上可用的視頻網址,以便它們不能共享或傳遞給非成員。如何保護mp4和flv視頻
我聽說過網址掩蓋,但不知道如何做到這一點。還是有另一種方式?
基本上,視頻將保存在遠程服務器(vps)或通過亞馬遜S3,該網站將調用視頻並通過流媒體播放器,JW播放器或任何我能找到的播放器保護視頻。
有誰知道如何做到這一點?或知道一個服務,將爲我做這個?
感謝
TT
我正在開發一個僅限會員的網站,並且需要保護將在其上可用的視頻網址,以便它們不能共享或傳遞給非成員。如何保護mp4和flv視頻
我聽說過網址掩蓋,但不知道如何做到這一點。還是有另一種方式?
基本上,視頻將保存在遠程服務器(vps)或通過亞馬遜S3,該網站將調用視頻並通過流媒體播放器,JW播放器或任何我能找到的播放器保護視頻。
有誰知道如何做到這一點?或知道一個服務,將爲我做這個?
感謝
TT
我不知道爲什麼那麼多人給了錯誤的建議,不過是你可以做到這一點。僅僅因爲它被「播放」了,客戶端並不意味着它會被保存在客戶端 - 你必須使用可以記錄正在播放的流的軟件。無論是屏幕捕捉軟件或類似的東西。
無論如何,要做到這一點,您需要使用.htaccess將文件請求重定向到一個php文件,該文件將動態地提供文件的位置並混淆網址。
你需要在你的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(你可以把它放在其他地方只是調整的URL在.htaccess
<?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(下載管理器也不會工作)。但是,您可以通過將信息發送到url.com/video.html來將該位置進行流式傳輸,並且FLV文件中的源代碼將看起來像url.com/md5hashtimestamp/md5hashstreamname/md5hashtimestamp/trailer.flv。因此,直接從Flash文件中擷取流是非常困難的,因爲該URL不會退出;感謝.htaccess,您無法直接訪問網站url.com/secure/trailer.flv;最後只有選項是屏幕捕獲/在流式傳輸時記錄的軟件。
所以它不是100%安全,但它確實使事情最終用戶的困難 - 而最重要的是它是免費的
色情?對不起,只好問:-) –
如果他們可以將它流式傳輸到他們的計算機上,那麼可以以這種或那種方式保存流。然後他們可以隨意分發他們喜歡的東西。 DRM有很大的失敗歷史。 – Raoul
杜克先生說,如果它正在播放客戶端,它可以保存在客戶端。沒有其他辦法了。但是,您可以保護它,以便只有會員才能訪問視頻,這是您的問題嗎?或者也許你可以編寫自己的播放器,將視頻記錄到內存中,因此只能在播放器中播放(除非有人屏幕抓住了它,顯然,或者顛倒過來設計了你的加密密鑰)。 –