关于架设流媒体服务器与DRM加密问题
最近一个月一直要研究基于MSMediaServer与DRM 结合的问题,主要用途为架设一个流媒体网站,网站最重要的功能为对视频的保护。
于由我开始研究何种技术能对视频加密与解密。最初我确定的三种方案:
第一种:种用微软的DRM加密方式,该方式需要架设专门的证书服务器,其原理为用证书对视频进行加密打包,因为打包后的视频会在视频的头部加一个校验头,可以到固定的证书分发页面请求证书,这种方式原于很多年前算是一种过时了的技术,而且需要每年够买微软的证书,但对了视频的保护算是一种比较好的解决方式。不足之处是只能使用Media Player播放器,播放视频。
第二种:采用微软的PlayReadly方式,该方式应该是DRM的升级版。该服务比较强大可以支持移动视频加密而且可以和Silverlight完美结合。但是可惜的是目前我也没有看见过这东西。至少中国微软这边还没有开始买这东西,之前听说微软研究院那边之前用它为电信做了一个解决方案。
第三种:基于自己编码编码解码器,这种方式需要通过C或纯语言编写编码解码器,另外需要配合ActiveX让客户端在浏览器中能够解码。但是由于开发工期短,没有选择这种方式。
最终由于种种原因我们选择第一种方式:
在实施过程我们发现一个比较大的问题DRM证书服务器在分布证书响应时间是一个比较慢长的过程,应该是在S级吧。所以在一个大型视频网站同,这种的影响速度是肯定不行的,我通过做LB也不行,因为证书的加密解密是对称的,你通过那个证书加密就只能通过那个证书解密,解密的过程与解密服务器是有关系的。所以对于做LB是一个比较大的挑战。
最后我们分析DRM整个过程
打包:原始视频-》打包(添加证书的Challege到视频头部)-》生成DRM加密视频
解密:DRM加密视频通过Media Player播放器请求解密页面-》页面接收Challege字符串-》通过本地证书解密并生成Public Licesen-》返回客户端-》通过JS安装证书-》播放
由于我们开始在生成证书环节开始作文章,我用采用的预发证书方式与实施证书分发方式。
预发证书方式:我们通过Windows Services方式将证书预生成并存放在数据库中。用户访问时从数据读取。
实时方式:用户请求一次,分发一种证书方式。
最后通过这种方式解决了用户的需求与大用量的需求。