一种基于iOS操作系统的在线加密切片视频离线播放方法及
装置
技术领域
本发明涉及移动端加密视频解密领域与多媒体技术领域,更具体地,涉及一种HLS(HTTP Live Streaming,是一个由苹果公司提出的基于HTTP的流媒体网络传输协议)加密传输及移动端的解密播放的方案。
背景技术
伴随着移动互联网技术的快速发展及智能手机的大规模普及,手机正在越来越深的改变着我们的生活,承载着理财、购物、饮食、娱乐、学习生活等多种功能。
视频作为人们生活中重要的信息传输媒介,随着移动互联网的成熟也大量产生。基于目前视频版权保护特别是教育机构视频资源保护出发,移动端视频加密需求应运而生。
针对移动端视频保护,目前采取的方案主要包含以下几种。
1.视频数据关键部分加密方案
技术原理:基于flv或mp4文件的数据结构,通过现有算法或自定义算法,加密视频文件头部信息,混淆文件,从而实现即使视频被非法下载,普通视频播放器无法识别的目的。
播放流程:加载视频的同时,根据定义好的算法解密响应的加密视频部分,将解密的数据与为加密的其他数据,重新组合为一个完整视频,实现播放
加密算法:该方案中常用的算法为XOR(异或)、DES(全称为Data EncryptionStandard,是一种使用密钥加密的块算法)等。
2.视频数据切片方案
技术原理:基于flv或mp4文件的数据结构,根据关键帧或固定时间长度为标准,将一个视频切分为若干个视频存储。
播放流程:定义播放器,根据已定的切片方案,按序播放视频
加密算法:无
3.HLS解决方案
技术原理:HLS是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方案。该技术基本原理是将视频文件或视频流切分成视频切片(TS文件(Transport Stream、MPEG2-TS,传输流,是一种传输和存储包含音效、视频与通信协议各种数据的标准格式))并建立索引文件(M3U8文件(M3U是一种播放多媒体列表的文件格式,M3U8是Unicode版本的M3U,用UTF-8编码。))。支持的视频流编码为H.264,音频流编码为AAC。
相对于数据简单视频切片技术而已,该技术增加了分片加密功能,即将切片的每个TS文件进行AES128高强度加密。
播放流程:根据M3U8索引文件,加载TS及解密文件,利用该解密文件把TS文件解密为正常数据进行播放。
加密算法:AES128
现有技术的缺点:
-视频数据关键部分加密方案需要根据已下载的视频文件进行解密,不利于移动端进行流式播放。
-视频数据切片方案则没进行加密,破解容易。
-HLS加密虽然方案成熟,但方案已公开化,只要读取M3U8索引及解密文件即可下载或播放。
发明内容
本发明提出一种更为安全、便利的基于iOS操作系统的在线加密切片视频离线播放方法。
本发明的技术方案是这样实现的:
本发明提供的一种基于iOS操作系统的在线加密切片视频离线播放方法,包括:
校验用户注册信息的完整性和准确性,若不正确则结束下载流程;若正确则进行下面的步骤;
根据包含下载视频vid和对应的清晰度的用户指令,查询本地数据库是否存在所述vid未完成的下载任务,若存在则读取下载任务到内存中,并把本地数据库对应的下载任务数据项删除;若不存在则检查移动端本地是否存在所述vid任意清晰度已下载视频,若存在则结束下载,若不存在则创建所述vid和清晰度对应的视频下载任务存储于内存中;
根据用户指令执行所述下载任务,向外网服务器请求获取所述vid和清晰度对应的包含多个TS资源文件的子索引M3U8资源存储于内存;
对加密的所述子索引M3U8资源通过AES算法进行解密,并读取子索引M3U8资源中的每个TS资源进行URL,并异步下载每个TS资源保存至移动端的临时目录中;
检验所述TS资源文件是否下载完整,若不完整则重新下载遗漏的TS资源,若重试多次后TS还不完整,则通知用户下载错误并结束下载流程;若下载完整则在下载器的下载目录创建以vid命名的子目录,把所述vid存储于临时目录中的所有TS资源移动至该子目录中;
向外网服务器请求并获得解密文件资源存储于移动端的内存;对加密的解密文件资源通过AES算法进行解密获得解密结果,将所述解密结果以vid命名写入下载目录中;
修改所述子索引M3U8资源中的所述每个TS资源的URL为已下载的从下载目录开始的本地相对路径,并将修改后的子索引M3U8资源以vid命名写入下载目录中;
根据用户的播放指令生成签名参数并向本地服务器发送带所述签名参数URL的HTTP请求;
根据所述HTTP请求对所述URL及签名参数进行校验,若正确则执行下一步,若不正确则返回带403HTTP状态码的空响应;
检索下载目录是否存在对应所述vid的视频,若存在则返回包含修改后的子索引M3U8资源文件的内容,根据所述内容获得加密文件,并根据获得的指定的解密算法进行解密播放;若不存在则结束播放流程。
一种如上所述对应的基于iOS操作系统的在线加密切片视频离线播放装置,包括:
下载器,用于对用户注册信息进行校验,并通过vid和清晰度初始化下载任务存储于内存中,进行下载任务以及加密视频资源、子索引M3U8文件、解密文件的解密、还原和组合;
本地数据库,为在移动端本地搭建的SQLite数据库,用于持久化存储未完成的下载任务信息;
本地服务器,用于负责对下载器下载处理后的资源做索引,并响应来自播放器的HTTP请求;
播放器,用于根据用户的播放指令生成签名参数并向本地服务器发送带所述签名参数URL的HTTP请求,收到响应后利用解密文件进行解密播放离线加密视频。
本发明提供的基于iOS操作系统的在线加密切片视频离线播放方法与装置,播放器播放本地离线加密视频需要向本地服务器发送带签名的请求,本地服务器只有验证签名正确后才会给播放器响应本地离线视频资源。该签名生成需要用户信息进行运算。且下载器在解密过程中用到的解密算法也加入了用户信息的运算。因此,用户注册信息不完整或不正确都不能正常播放离线视频资源,增强了本地离线视频的安全性。HLS加密在线播放方案固然安全,但总需要互联网连接,需要用户流量,用户在没有网络的环境下就不能播放视频。本方案遵循标准HLS协议,并将在协议中使用到的所有资源缓存到本地中,并使用本地服务器通过HTTP响应把本地资源返回给播放器进行播放。因此操作更为简便。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种基于iOS操作系统的在线加密切片视频离线播放方法的流程图。
图2为本发明一种基于iOS操作系统的在线加密切片视频离线播放方法的播放示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,优选的,一种基于iOS操作系统的在线加密切片视频离线播放方法,包括:
校验用户注册信息的完整性和准确性,若不正确则结束下载流程;若正确则进行下面的步骤;
根据包含下载视频vid和对应的清晰度的用户指令,查询本地数据库是否存在所述vid未完成的下载任务,若存在则读取下载任务到内存中,并把本地数据库对应的下载任务数据项删除;若不存在则检查移动端本地是否存在所述vid任意清晰度已下载视频,若存在则结束下载,若不存在则创建所述vid和清晰度对应的视频下载任务存储于内存中;
根据用户指令执行所述下载任务,向外网服务器请求获取所述vid和清晰度对应的包含多个TS资源文件的子索引M3U8资源存储于内存;
对加密的所述子索引M3U8资源通过AES算法进行解密,并读取子索引M3U8资源中的每个TS资源进行URL,并异步下载每个TS资源保存至移动端的临时目录中;
检验所述TS资源文件是否下载完整,若不完整则重新下载遗漏的TS资源,若重试多次后TS还不完整,则通知用户下载错误并结束下载流程;若下载完整则在下载器的下载目录创建以vid命名的子目录,把所述vid存储于临时目录中的所有TS资源移动至该子目录中;
向外网服务器请求并获得解密文件资源存储于移动端的内存;对加密的解密文件资源通过AES算法进行解密获得解密结果,将所述解密结果以vid命名写入下载目录中;
修改所述子索引M3U8资源中的所述每个TS资源的URL为已下载的从下载目录开始的本地相对路径,并将修改后的子索引M3U8资源以vid命名写入下载目录中;
根据用户的播放指令生成签名参数并向本地服务器发送带所述签名参数的URL的HTTP请求;
根据所述HTTP请求对所述URL及签名参数进行校验,若正确则执行下一步,若不正确则返回带403HTTP状态码的空响应;
检索下载目录是否存在对应所述vid的视频,若存在则返回包含修改后的子索引M3U8资源文件的内容,根据所述内容获得加密文件,并根据获得的指定的解密算法进行解密播放;若不存在则结束播放流程。
优选的,在执行步骤若下载完整则在下载器的下载目录创建以vid命名的子目录,把所述vid存储于临时目录中的所有TS资源移动至该子目录中时,若下载过程中用户退出移动端应用程序,则退出时下载任务保存于本地数据库。
优选的,在执行根据用户的播放指令生成签名参数步骤时,其具体的方法为将当前时间、vid以及用户注册信息拼接成字符串,再进行MD5运算生成签名参数。
优选的,在执行修改所述子索引M3U8资源中的所述每个TS资源的URL为已下载的从下载目录开始的本地相对路径,并将修改后的子索引M3U8资源以vid命名写入下载目录中时;还包括步骤修改#EXT-X-KEY字段的URI属性为本地解密文件从下载目录开始的相对路径。
优选的,在执行检索下载目录是否存在对应所述vid的视频,若存在则返回包含修改后的子索引M3U8资源文件的内容,根据所述内容获得加密文件,并根据获得的指定的解密算法进行解密播放的步骤时,其具体的方法为读取#EXT-X-KEY字段中的URI属性获得加密文件,并根据#EXT-X-KEY字段的METHOD属性指定的解密方法和IV属性指定的初始化向量进行解密播放。
优选的,本发明还提供与上述方法相对应的一种基于iOS操作系统的在线加密切片视频离线播放装置,包括:
下载器,用于对用户注册信息进行校验,并通过vid和清晰度初始化下载任务存储于内存中,进行下载任务以及加密视频资源、子索引M3U8文件、解密文件的解密、还原和组合;
本地数据库,为在移动端本地搭建的SQLite数据库,用于持久化存储未完成的下载任务信息;
本地服务器,用于负责对下载器下载处理后的资源做索引,并响应来自播放器的HTTP请求;
播放器,用于根据用户的播放指令生成签名参数并向本地服务器发送带所述签名参数URL的HTTP请求,收到响应后利用解密文件进行解密播放离线加密视频。
优选的,所述下载器、本地数据库、本地服务器以及播放器均封装与SDK中。整个离线缓存、解密、播放的过程及装置(下载器、本地数据库、本地服务器、播放器)都封装在SDK中,用户只需要使用vid(video identity,视频唯一标识符,由服务器制定)和用户在服务器的注册信息(userid、writetoken、readtoken、secretkey)与SDK接口进行交互,即可完成在线加密视频的离线缓存和播放。用户可以从服务器后台获取相关的注册信息和vid。用户无需理解或干预其中的复杂过程,只需要调用SDK接口,就可以完成整个过程。用户使用更为方便、安全。因此用户使用时只需调用SDK接口,配置用户注册信息和下载目录。本发明提供的基于iOS操作系统的在线加密切片视频离线播放方法中,直接从外网请求并获取的资源(M3U8文件、解密文件)都为加密资源,加密过程在目标服务器完成,整个解密过程及用到的装置(下载器、播放器)都在移动端完成。即使通过工具嗅探并截获移动端的对外网请求、应答数据流,也不能使用,因为这是加密的资源,没经过约定的解密过程的资源都只是一个普通的二进制文件,从源头上保障了加密视频的安全性。
播放器播放本地离线加密视频是通过向本地服务器发送HTTP请求,本地服务器响应本地离线视频资源的方式实现的。因此,播放器发送的所有请求,都是向本地服务器发送的请求,而不是通过路径直接访问离线视频资源。且此处的本地服务器只响应来自于移动端本机发出的请求。因此,即使通过工具嗅探并获取到播放器的请求数据流,也不能在外部(该移动端以外的设备)请求获取到资源。保障了离线加密视频位置的隐蔽性和安全性。
播放器播放本地离线加密视频需要向本地服务器发送带签名的请求,本服务器只有验证签名正确后才会给播放器响应本地离线视频资源。该签名生成需要用户信息进行运算。且下载器在解密过程中用到的解密算法也加入了用户信息的运算。因此,用户注册信息不完整或不正确都不能正常播放离线视频资源。增强了本地离线视频的安全性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。