百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

对视频内容文件加密来实现视频防盗链

qiyuwang 2024-10-14 14:30 13 浏览 0 评论

随着在线视频和在线教育以的兴起,在线视频系统越来越多,如在线知识网站、在线课程、在线教育培训等网站,我们之前讲过关于视频网站的搭建、视频的云存储、视频的加速播放等,今天的主要话题是视频内容如何防盗链或者防止非法下载。

我们之前有讲过一篇文章,视频播放如何实现防盗链,此文主要是对播放地址加Token的方式来实现放盗链,但是token很容易获取,并且视频文件也很容易缓存下来,来将缓存的视频进行提取即可。

本文主要介绍,通过对视频内容文件进行加密的方式来实现放盗链,这样可以避免非授权用户通过播放URL下载或播放点播视频,有效的实现对视频内容的版权保护,算是更高级的加密方式。


视频的播放格式介绍

先介绍一下网站的流媒体视频播放格式,HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是m3u8描述文件,二是TS媒体文件,统称M3U8格式

m3u8格式的文件只是存储多媒体播放列表,提供了一个指向其他位置的音频视频文件的索引,你播放的还是那些被指向的文件,是一系列的TS文件,本分成多个TS文件主要是为了方便加载,比如用户拖动进度条,就可以直接跳转到对应的TS文件即可,不需要加载整个视频文件,因而节省了网络带宽。

m3u8格式的优点:

  1. 可以多码率的适配。根据网络带宽,客户端会自动选择一个适合自己码率的文件进行播放,保证视频流的流畅,代表是苹果的HLS(HTTP Live Streaming)。HLS有一个特点:自适应码率流播(adaptive streaming),客户端可以根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且自动在二者间随意切换。这对移动设备网络状况不稳定的情况下保障流畅播放非常有帮助。
  2. 降低源服务器的负载压力。M3U的特点是将流媒体切分为若干 TS 片段,然后通过一个扩展的 m3u 列表文件将这些 TS 片段集中起来供客户端播放器接收。这样做相比使用 RTSP 协议的好处在于,一旦切分完成,之后的分发过程完全不需要额外使用任何专门软件,普通的网络服务器即可,大大降低了 CDN 边缘服务器的配置要求,可以使用任何现成的CDN。分发使用的协议是最常见 HTTP,代理服务器对这个协议的缓存优化相当成熟,而很少有代理服务器对 RTSP 地进行缓存优化。
  3. 对于非实时视频,播放使用HTTP协议的单个 MP4 格式的视频文件时,需要代理服务器支持 HTTP range request 以获取大文件中的一部分,但不是所有的代理服务器都对此有良好的支持。而 M3U 则只需要根据列表文件中的时间轴找出对应的 TS 片段下载即可,不需要 range request,对代理服务器的要求小很多。所有代理服务器都支持小文件的高效缓存。
  4. 为什么要用 TS 而不是 MP4,这是因为两个 TS 片段可以无缝拼接,播放器能连续播放,而 MP4 文件由于编码方式的原因,两段 MP4 不能无缝拼接,播放器连续播放两个 MP4 文件会出现破音和画面间断,影响用户体验。


视频加密实现原理

视频网站的加密就是对HLS/M3U8文件的加密,使用HLS加密时,初时生成的密钥是存储在点播服务中的,业务侧在初步播放时需要从点播中查询获取密钥,这要求业务侧自行搭建密钥管理服务,组装带token的播放url,从点播服务中获取密钥,缓存后再返回给播放器解密播放。

视频加密原理,主要是通过指定的AES-128加密算法来加密每一个TS并在生成的m3u8文件中描述播放器如何解密TS文件的方法,支持所有的HLS播放器,前端播放器根据业务规则,获取解密秘钥,然后解密TS文件,进行解密播放。

加密过程:

  1. 业务侧将视频上传到点播服务(VOD)后,请求HLS加密。
  2. 点播服务收到加密请求后,向KMS请求加密密钥,并将获取的密钥ID和密钥密文存储在点播服务中。
  3. 点播服务向媒体处理服务请求HLS加密,媒体处理服务通过转码功能将对应的视频进行加密。
  4. 转码加密后生成的m3u8文件带有“#EXT-X-KEY”标签,该标签包含了“METHOD”和“URI”属性,其中“URI”即为业务侧搭建的密钥管理服务的地址。
  5. 加密后,点播服务通过CDN将加密的HLS视频文件进行加速分发。

解密过程:

  1. 终端用户登录播放器终端,业务侧会对终端用户进行身份校验,校验通过后,会为播放终端分配一个Token,并将带Token的播放地址返回给播放器端。
  2. 播放器终端通过带Token的播放URL向CDN请求播放。由于Token是动态的,所以CDN收到请求后,会直接回源到点播服务。点播服务会将请求URL中的Token写入请求的m3u8文件的“URI”中。点播服务返回给CDN的m3u8文件中会携带播放终端的Token值。
  3. 播放终端解析返回的m3u8文件,得到EXT-X-KEY标签中的“URI”内容,向“URI”请求密钥。
  4. 业务侧的密钥管理服务收到请求后,先验证Token的合法性,若Token合法,则通过调用点播服务的API查询密钥。
  5. 密钥管理服务可以选择将查询到的密钥缓存在本地,当下次有其它播放终端请求时,可以直接返回,无需每次都向点播服务获取。
  6. 密钥管理服务将点播服务返回的密钥返回给播放终端。播放终端通过获取的密钥解密播放m3u8文件。

代码实现方式

加密服务一般由第三方服务实现,以及直接格式转换,比如一些云厂商或者视频托管厂商,如果要自建,用万能的 ffmpeg 也可以实现,简单过程如下:

1. Key文件

#!/bin/sh BASE_URL=${1:-'.'}
openssl rand 16 > file.key
echo $BASE_URL/file.key > file.keyinfo
echo file.key >> file.keyinfo
echo $(openssl rand -hex 16) >> file.keyinfo
参数详解:
BASE_URL:网站url地址
openssl rand 16 > file.key 生成一个key文件
echo $BASE_URL/file.key > file.keyinfo 将外部访问的file.key映射到file.keyinfo文件中。
echo file.key >> file.keyinfo 将项目file.key所在的文件路径映射到fike.keyinfo文件中。
echo $(openssl rand -hex 16) >> file.keyinfo 生成IV密钥

2. 执行命令

ffmpeg -y -i 视频文件绝对路径/202203271023300d469.mp4 \
-preset:v veryfast -hls_time 5 -c:a aac -hls_key_info_file ase加密文件的绝对路径/file.keyinfo \
-hls_segment_filename 转码之后的ts文件的存放路径/%04d.ts \
-hls_list_size 0 转码之后m3u8文件存放的绝对路径/index.m3u8
参数说明:
-hls_key_info_file 加密文件的路径 这个指令是转码之后ts文件是否加密的关键指令



结论

所以,对TS的加密从而达到对视频加密的目的,将加密后的视频地址存放到CMS管理,在APP/网站等播放器端进行技术对接,使得加密视频只能在特定的APP/网站中使用,即使用户下载了TS文件,也无法解密播放,安全性更高。

最终使用了加密播放的视频,可以实现有效的版权保护、二次售卖等一些用户的非法操作,从而实现了对我们内容的有效保护。

关于视频网站的搭建可以参考之前的文章:

CMS构建课程平台:如何解决播放流量和带宽的问题

通过CMS构建视频课程平台


欢迎转载,请注明出处!


===================

大家好,我是Robbin,来给大家讲CMS。

主要讲解如何使用开源Drupal + 可视化工具GrapeJS (构建)=> 可视化、模块化、低代码的、易上手的CMS平台。
可以快速构建网站、手机站、产品站、在线教育、课程售卖、售后咨询等平台的工具。

==================

相关推荐

第二十六章 Bat文件(bat文件百科)

第二十六章Bat文件bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为.bat或.cmd。在命令提示下输入批处理文件的名称,或者双击该批处理...

自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏

引言FFMpeg是众多多媒体应用程序的核心,但该程序本身不具备一次转换多个文件的能力。但也拦不住,FFMpeg本身是命令行程序,可编写脚本,借助Bash轻松快速地构建自动化程序。...

批处理:创建和删除文件夹命令(批处理命令 删除文件夹)

上一期,我们学习了文件夹的查看命令:tree和dir,以及文件夹切换命令:cd,今天,我继续给大家讲解下批处理的目录(文件夹)操作命令:创建和删除。一.md:创建目录(文件夹)可以在当前文件夹下创建...

利用VBA创建新的工作簿(vba 创建工作簿)

【分享成果,随喜正能量】我告诫自己:你的话说得太多,你听别人倾诉得太多,你咖啡喝得太多,你在陌生的房间里坐的时间太长,你的睡眠质量太差,你醒着的时间太长,你平庸的事想得太多,你希望过多,你安慰自己太频...

实用小工具,注册表文件快速转换.bat文件

关于注册表注册表是Windows操作系统中的一个核心数据库,它用于存储系统和应用程序的设置信息。这个数据库文件控制着Windows操作系统的外观和如何响应外来事件的工作方式。注册表包含了各种参数,直接...

如何给自己的电脑做一个截图工具?现场教会你具体流程和步骤

做自媒体,经常要用到一些图片,有时候图片上有水印去不掉,这时候要是有一个能随意截图的工具该有多少呀!今天教授让大家自己设计一个截图工具。下面就是流程和步骤:1、在电脑页面的任意位置,点击鼠标右键,新建...

Windows使用批处理文件更改目录下的文件名(含序号)

从网上下载的图片,默认的名字是由许多字母和数字组成的比较长的一个字符串,不便于人记忆,使用起来比较麻烦。如下图所示:本文的目的是写一个批处理文件,将该目录中的所有扩展名为jpeg的文件改名为日期加序号...

学习VB编程第35天,如何调用bat批处理

今天学习了刘金玉老师零基础VB教程的第43期,学习的主要内容是如何调用bat批处理登录。一、什么是批处理1.什么是命令提示符(cmd)?在Windows开始菜单运行(windows+r键也可调出)中输...

利用bat让文件在指定时间自动进行备份

在很多时候,我们需要备份电脑中的一些文件,特别是企业服务器的备份,可能是有一些文件每天都会有更新,或者定期更新,而文件又是相对比较重要的,需要我们定时去备份。可有时候文件比较大,备份时间比较长,或者在...

BAT 批处理脚本教程(批处理脚本编写教程)

BAT批处理脚本教程第一章批处理基础第一节常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处...

Windows系统bat批处理常用命令(一)

一、批处理中常用的命令:@命令:加在每个命令行的最前面,表示运行时不显示这一行的命令行。eg:@echooff//不显示后续命令行及当前命令行...

编写bat文件在windows上自动执行cmd命令

windows电脑上直接新建txt记事本文件,编写好要执行的命令后,将后缀修改成.bat,然后直接点击文件就可以执行里面的命令了#打开命令窗口startcmd#/k执行完命令不关...

不会C语言写bat脚本代码批量修改文件名,DeepSeek帮你解决!

哈喽大家好,我是小飞。今天给大家讲一下DeepSeek做了一个批量修改文件夹的bat脚本。·首先先让它这样修改一下,因为之前已经做过一个,然后它没有改,现在让它修改一下,把它修改一个很智能的BAT脚本...

BAT批处理命令之ren/rename(与Excel合作批量修改文件名)

写在前面一鸽就是半年...

使用批处理文件——autoexec.bat(批处理more)

1、dblspace.sys磁盘压缩。  drvspace.sys、dblspace和drvspace是Microsoft公司推出的磁盘压缩工具,可以将磁盘的空间增加许多,但由于它依靠对文件进行压...

取消回复欢迎 发表评论: