本发明涉及一种移动端加密视频解密领域与多媒体技术领域,更具体地,涉及一种HLS(HTTP Live Streaming,是一个由苹果公司提出的基于HTTP的流媒体网络传输协议)加密传输及移动端的解密播放的方案。
背景技术:
伴随着移动互联网技术的快速发展及智能手机的大规模普及,手机正在越来越深的改变着我们的生活,承载着理财、购物、饮食、娱乐、学习生活等多种功能。
视频作为人们生活中重要的信息传输媒介,随着移动互联网的成熟也大量产生。基于目前视频版权保护特别是教育机构视频资源保护出发,移动端视频加密需求应运而生。
针对移动端视频保护,目前采取的方案主要包含以下几种。
1.视频数据关键部分加密方案
技术原理:基于flv或mp4文件的数据结构,通过现有算法或自定义算法,加密视频文件头部信息,混淆文件,从而实现即使视频被非法下载,普通视频播放器无法识别的目的。
播放流程:加载视频的同时,根据定义好的算法解密响应的加密视频部分,将解密的数据与为加密的其他数据,重新组合为一个完整视频,实现播放
加密算法:该方案中常用的算法为XOR(异或)、DES(Data Encryption Standard,是一种使用密钥加密的块算法)等
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操作系统的在线加密切片视频播放方法,包括:
播放器根据用户播放指令生成签名参数,并向本地服务器发送带签名参数的URL的HTTP请求;
本地服务器接收HTTP请求,并校验URL及签名参数,如正确则进行下一步;若不正确则返回一个带403HTTP状态码的空响应,播放器结束播放流程;
本地服务器根据HTTP请求向外网服务器请求并获取包含加密主索引M3U8资源文件的视频信息存储于内存;对加密的主索引M3U8资源文件通过AES算法进行解密;并对解密后的主索引M3U8资源文件中子索引资源URL拼接本地服务器URL与签名参数从而生成完整的URL并返回给播放器;
播放器接收解密后的主索引M3U8资源文件,并根据网络情况选择子索引M3U8资源,并按照主索引M3U8资源内容中的URL请求本地服务器;
本地服务器接收请求并校验请求格式是否符合预定的格式,若不符合则返回一个带403HTTP状态码的空响应,播放器结束播放;若符合则向外网服务器请求并获取加密的包含多个TS文件的子索引M3U8资源文件存储于内存中;
对加密的子索引M3U8资源文件通过AES算法进行解密,并对解密后的子索引M3U8资源文件中的#EXT-X-KEY字段中的URI属性值进行修改,再拼接本地服务器URL和签名参数生成可访问的URL;把修改后的子索引M3U8资源返回给播放器;
播放器根据接收到的子索引M3U8资源,读取#EXT-X-KEY字段中的URI属性,并向本地服务器发送获取加密文件资源的请求;
本地服务器根据请求校验请求格式是否符合预定的格式,若不正确则返回一个带403HTTP状态码的空响应,播放器结束播放;若正确则向外网服务器请求并获取加密的解密文件存储于内存;对加密的解密文件通过AES算法进行解密;并将解密后获得的二进制解密文件返回给播放器;
播放器根据接收到的#EXT-X-KEY字段METHOD属性指定的解密算法和IV属性指定的初始化向量进行解密播放。
本发明提供的基于iOS操作系统的在线加密切片视频播放方法,播放器播放加密视频需要向移动端搭建的本地服务器发送HTTP请求,本地服务器收到合法请求后,在内部完成获取加密资源和整个解密流程,并最终响应播放器符合HLS协议的资源。因此可以保证操作更安全;且解密流程需要再本地服务器完成,播放器只进行解密指令的发送和播放,并要求用户在外网服务器后台注册信息参与解密过程,因此本方法不需要移动端之外的其他硬件支持,从而使得操作更为简便。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种基于iOS操作系统的在线加密切片视频播放方法的流程图。
图2为本发明一种基于iOS操作系统的在线加密切片视频播放过程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1与图2,优选的,一种基于iOS操作系统的在线加密切片视频播放方法,包括:
播放器根据用户播放指令生成签名参数,并向本地服务器发送带签名参数的URL(Uniform/Universal Resource Locator,统一资源定位符)的HTTP请求;
本地服务器接收HTTP请求,并校验URL及签名参数,如正确则进行下一步;若不正确则返回一个带403HTTP状态码的空响应,播放器结束播放流程;
本地服务器根据HTTP请求向外网服务器请求并获取包含加密主索引M3U8资源文件的视频信息存储于内存;对加密的主索引M3U8资源文件通过AES算法进行解密;并对解密后的主索引M3U8资源文件中子索引资源URL拼接本地服务器URL与签名参数从而生成完整的URL并返回给播放器;
播放器接收解密后的主索引M3U8资源文件,并根据网络情况选择子索引M3U8资源,并按照主索引M3U8资源内容中的URL请求本地服务器;
本地服务器接收请求并校验请求格式是否符合预定的格式,若不符合则返回一个带403HTTP状态码的空响应,播放器结束播放;若符合则向外网服务器请求并获取加密的包含多个TS文件的子索引M3U8资源文件存储于内存中;
对加密的子索引M3U8资源文件通过AES算法进行解密,并对解密后的子索引M3U8资源文件中的#EXT-X-KEY字段中的URI属性值进行修改,再拼接本地服务器URL和签名参数生成可访问的URL;把修改后的子索引M3U8资源返回给播放器;
播放器根据接收到的子索引M3U8资源,读取#EXT-X-KEY字段中的URI属性,并向本地服务器发送获取加密文件资源的请求;
本地服务器根据请求校验请求格式是否符合预定的格式,若不正确则返回一个带403HTTP状态码的空响应,播放器结束播放;若正确则向外网服务器请求并获取加密的解密文件存储于内存;对加密的解密文件通过AES算法进行解密;并将解密后获得的二进制解密文件返回给播放器;
播放器根据接收到的#EXT-X-KEY字段METHOD属性指定的解密算法和IV属性指定的初始化向量进行解密播放。
优选的,在执行播放器根据用户播放指令生成签名参数的步骤时,其具体的步骤为播放器把当前时间、vid(video identity,视频唯一标识符,由服务器制定)、用户注册信息拼接成字符串,再进行MD5运算生成签名参数。
优选的,所述播放器及本地服务器封装在SDK(Software Development Kit,软件开发工具包)中。整个解密流程及用到的装置(本地服务器、播放器)都封装在SDK中,用户只需要使用vid(video identity,视频唯一标识符,由服务器制定)和用户在服务器的注册信息(userid(用户ID)、writetoken(上传授权码)、readtoken(访问授权码)、secretkey(密钥))与SDK接口进行交互。用户可以在服务器后台获取上面所用到的用户注册信息和vid,通过封装好的SDK,调用SDK接口即可完成加密视频的播放。用户无需理解或干预复杂的资源获取和解密流程,只需调用SDK接口,传递正确的用户注册信息与vid,即向SDK发出解密并播放指令,其余工作都交给SDK内部装置(即本地服务器、播放器)完成,因此用户使用更为方便、安全。
优选的,所述播放器接收到一个带403HTTP状态码的空响应时,还将弹出拒绝访问警告窗口,从而可以有效的提醒用户。
优选的,SDK接收到用户发出的解密指令后,播放器先作出响应,播放器向外网服务器请求并获取视频信息,然后正式向本地服务器发出解密指令。本地服务器收到解密指令后,校验用户注册信息,信息有误或不完整则结束解密过程,并向用户输出错误日志;用户注册信息正确则向外网服务器请求并获取机密视频资源,并在移动端本地即本地服务器内部进行解密与资源组合,并最终返回播放器可播放的、解密后的视频资源,播放器完成播放。解密流程与播放流程的分离,能让播放器播放效率更高,用户体验更好。
在本发明提供的基于iOS操作系统的在线加密切片视频播放方法,播放器播放加密视频需要向服务器发送HTTP请求。此处的服务器在本发明方案中为在移动端搭建的本地服务器。也因此,播放器发送的所有请求,都是向本地服务器发送局域网请求,而不是外网服务器中的资源的请求。本地服务器收到合法的请求后,在内部完成获取加密资源和整个解密流程,并最终响应播放器符合HLS协议的资源。本地服务器只响应移动端本机发出的合法请求。此处的合法是指请求的URL格式正确、参数完整、签名正确等。因此,即使通过工具嗅探获取到播放器的请求数据流,也不能通过外部(该移动端以外的设备)请求获取资源。且本方法不需要移动端外的其他硬件,无论是安卓设备还是苹果设备都适用,可移植性强。
在执行发明方法前,用户需在SDK配置用户信息,而当其调用SDK接口时,设置播放器布局,传递vid。
本发明提供的方法,直接从外网请求并获取的资源(M3U8文件、解密文件)都为加密资源,加密过程在目标服务器完成,整个解密过程及用到的装置(本地服务器、播放器)都在移动端完成。即使通过工具嗅探并截获移动端的对外网请求、应答数据流,也不能使用,因为这是加密的资源,没经过约定的解密过程的资源都只是一个普通的二进制文件,从源头上保障了加密视频的安全性。
因此相比于已有的方法,本发明具有如下优点:
●对从外网(公网、广域网)服务器请求获取的所有加密资源进行解密;
●隐藏播放器请求的URL(Uniform/Universal Resource Locator,统一资源定位符);
●整个解密流程及装置(本地服务器、播放器)封装在SDK(Software Development Kit,软件开发工具包)中;
●解密流程只在本地服务器完成,播放器只进行解密指令的发送与播放;
●解密过程需要用户在服务器(这里指的外网服务器)后台的注册信息参与;
●方案不需要移动端外的其他硬件支持。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。