js视频加密防下载解决方案

如今视频越来越多,好不容易录制的视频,人家一键就下载了,那么怎么保护自己制作的视频让人家没那么容易破解并下载呢
我的思路是这样的:
视频播放器需要获取是地址才能完成播放,如果采用分片播放的形式,将视频文件切片保存在服务端,客户端分片播放视频,加快了播放的速度
第一步将视频上传只视频服务器,通过ffmpeg对视频进行切片存储,hls
ffmpeg -i output.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 output1.m3u8
ffmpeg转化成HLS时附带的指令 ,以H264和AAC的形式对视频进行输出
-hls_time n: 设置每片的长度,默认值为2。单位为秒
-hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5
-hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量
-hls_start_number n:设置播放列表中sequence number的值为number,默认值为0
第二步,对视频切片文件进行二进制文件加密
<?php
/*
* AES 算法
*/
class Aes {
private $hex_iv = '00000000000000000000000000000000';
private $key = '397e2eb61307109f6e68006ebcb62f98';
function __construct($key) {
$this->key = $key;
$this->key = hash('sha256', $this->key, true);
}
/*
* 字符串加密 不写入文件
*/
public function encrypt($input)
{
$data = openssl_encrypt($input, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->hexToStr($this->hex_iv));
$data = base64_encode($data);
return $data;
}
/*
* aes 给PHP文件加密
* 写入设置文件
*/
public function filecrypt($filename)
{
$type=strtolower(substr(strrchr($filename,'.'),1));
if ('php' == $type && is_file($filename) && is_writable($filename)) {
$contents = file_get_contents($filename);
// echo $contents;exit;
$contents = php_strip_whitespace($filename);
// echo $contents;exit;
// $headerPos = strpos($contents,'<?php');
// echo $headerPos;exit;
...点击查看剩余70%
网友评论0