js视频加密解密防破解解决方案

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

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%

{{collectdata}}

网友评论0