gpt4 book ai didi

security - 如何保护 mp4 和 flv 视频

转载 作者:行者123 更新时间:2023-11-28 21:40:53 24 4
gpt4 key购买 nike

我正在开发一个仅限成员(member)的网站,需要保护网站上可用的视频 URL,以免它们被分享或传递给非成员(member)。

我听说过 URL 屏蔽,但不知道如何操作。还是有别的办法?

基本上,视频将保存在远程服务器 (vps) 上或通过 Amazon S3,该网站将调用视频并在 flowplayer、JW 播放器或我能找到的任何播放器中进行流式传输,以确保安全视频。

有人知道怎么做吗?或者知道可以为我做这件事的服务吗?

最佳答案

是的,你可以做到这一点。仅仅因为它在客户端“播放”并不意味着它会在客户端保存 - 您必须使用可以在播放时记录流的软件。屏幕捕获软件或类似软件。

无论如何,要做到这一点,您需要使用 .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');
}

?>

这是验证部分,根据流检查 token 以确保它不超过 2 秒 - 否则您将必须刷新页面并请求新 token 。

现在,如果您尝试访问 url.com/secure/trailer.flv,您将无法访问 .htaccess(下载管理器也无法正常工作)。但是由于 url.com/video.html 的 php 信息,您将能够流式传输该位置,FLV 文件中的源将类似于 url.com/md5hashtimestamp/md5hashstreamname/md5hashtimestamp/trailer.flv。因此很难直接从 Flash 文件中提取流,因为该 URL 不存在;由于 .htaccess,您无法直接通过 url.com/secure/trailer.flv 访问该站点;最后唯一的选择是屏幕捕获/在流式传输时录制的软件。

所以它不是 100% 安全,但它确实给最终用户带来了困难 - 最重要的是它是免费的

关于security - 如何保护 mp4 和 flv 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6581101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com