企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
第一种类似于各个cdn的做法,用户只能通过特定key签名的链接访问视频,链接使用后即失效,好处是实现简单,坏处是视频地址仍然暴露,用户还是可以下载到。 第二种是对视频文件本身和视频传输上做手脚,不过实现起来相对复杂一点 你可以把媒体数据通过http chunked data 或websocket 发送给浏览器,前端用js remuxing 成mp4格式,就像flv.js一样。 也可以把媒体文件切片,这样用户获取到的只有一小段视频。 也可以两种方法一起使用,通过ajax获取切片数据,数据可以加密,前端再通过密钥解密,密钥可以每次从服务器获取,对应的加密数据也不一样,解密然后remux成mp4就行了。 或者干脆用flash,rtmp协议传输视频,只能通过抓包探测出来rtmp流的地址 防住普通用户比较简单。rtsp , rtmp , 屏蔽页面源地址, 视频分段。 \--rtsp rtmp 都只能防止普通用户,都是有工具可以下载的。页面源地址屏蔽不难,javascript实现,但是可以通过很多手段绕开。分段不是解决的本质方法,需要和其它方式结合使用 防住普通电脑熟手可以是:动态token验证, 播放器校验, 简单内容加密等都可以做到。 可以参照市面上的防盗链软件比如helixapp等 \-- 手段高点的人,或者愿意花力气的人也能够破解的。有种方式和播放器结合,做一些简单视频加密,可以防住95%的普通IT人员。 防住黑客只有使用DRM方式。 PHP 作为后台可以使用以下方法来隐藏视频地址: 1.使用PHP文件来读取视频文件并将其输出到浏览器 把视频文件放在服务器上,而不是直接通过HTML页面链接到视频文件。创建一个PHP文件,使用PHP的`readfile()`函数来读取视频文件,然后将文件内容输出到浏览器。这样,用户就看不到视频文件的实际地址了。 以下是一个简单的示例代码: ~~~ <?php $video_file = 'videos/example.mp4'; // 设置响应头以告诉浏览器返回的是视频文件 header("Content-Type: video/mp4"); header("Content-Length: " . filesize($video_file)); // 输出视频文件内容 readfile($video_file); ?> ~~~ 在上述示例中,我们首先定义了要输出的视频文件路径`$video_file`,这里是`videos/example.mp4`。接着,我们设置了响应头,告诉浏览器返回的是视频文件,并设置了文件大小。 最后,使用`readfile()`函数将视频文件内容输出到浏览器。 2.使用PHP文件加密视频地址 另一种方法是使用PHP文件来加密视频地址。首先,将视频文件存储在服务器上,然后创建一个PHP文件来处理视频请求。使用PHP的加密算法(如哈希算法)来生成一个加密的视频地址,并将其作为查询参数添加到PHP文件的URL中。 以下是一个示例代码: ~~~ <?php $video_file = 'videos/example.mp4'; $secret_key = 'my_secret_key'; // 生成加密的视频地址 $encrypted_url = 'http://example.com/video.php?file=' . urlencode($video_file) . '&key=' . md5($video_file . $secret_key); // 重定向到加密的视频地址 header("Location: " . $encrypted_url); ?> ~~~ 在上述示例中,我们首先定义了要加密的视频文件路径`$video_file`,这里是`videos/example.mp4`。然后,我们定义了一个秘密密钥`$secret_key`,用于加密视频地址。 接着,使用PHP的哈希算法(如MD5)来生成加密的视频地址,并将其作为查询参数添加到PHP文件的URL中。最后,使用`header()`函数将用户重定向到加密的视频地址。 使用这种方法,用户无法直接访问视频文件,因为视频文件路径已经被加密。需要注意的是,这种方法并不是完全安全的,因为用户仍然可以通过分析网页源代码或使用网络抓包工具等方式获取加密的视频地址。