苹果手机视频加密(苹果手机视频加密软件)

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

我们之前有讲过一篇文章,视频播放如何实现防盗链,此文主要是对播放地址加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 文件会出现破音和画面间断,影响用户体验。

苹果手机视频加密(苹果手机视频加密软件)

TS流程

视频加密实现原理

视频网站的加密就是对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平台。可以快速构建网站、手机站、产品站、在线教育、课程售卖、售后咨询等平台的工具。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至QQ邮箱:3628405936@qq.com 举报,本站将立刻删除。
(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注