博客网 >

Windows Media DRM 开发小结
作者:分类:默认分类标签:
Windows Media DRM 开发小结
By David.Zhu 2007/09/23

  这段时间由于工作需要,熟悉了下Windows Media DRM,我采用的是DRM 7.1的SDK,完成了基于文件的Predelivering,Silent/Nonsilent授权获取的实现,根据DRM SDK的帮助文档采用脚本语言VBScript/Javascript来开发相当简单.现在我只对一些关键点给下描述:

1.一些有用的链接
这些链接都是我在网上搜到的还有些参考价值的文章,事实上看下SDK帮助文档就足够了,对于那些不习惯看E文文档的兄弟们,可以看下这些文章:
关于利用Windows Media DRM进行开发的可行性分析
微软DRM数字版权保护开发入门
China-DRM技术文章
LiveDRM SDK

2.播放DRM加密后的文件时总是先出现安全提示对话框
  用Windows Media Player 打开经过我自己的DRM加密的文件时,总是会首先弹出一个对话框,注明License Acquire URL地址,并询问客户是否打开网页获取许可证,而我注意到China-DRM打包出来的文件则没有这中提示,后来在网上搜了一下,才找到问题的可能所在,这现象可能时由于我的DRM SDK采用的是7.1版本,SDK版本较低所造成的,如果采用DRM 10 SDK据说就不会有上述现象了,关于该问题的具体讨论,可以参考这里

3.如何集成用户认证
  DRM SDK文档里给出了Silent/Nonsilent模式的授权获取Demo,那么如何实现像ChinaDRM那种带用户注册/认证的授权模式呢?其实很简单, 当Media Player向License Server发送challenge串的时候,我们返回用户认证页面,要求用户输入用户名/密码,这通过一个form就可以完成,在返回时将challenge串的内容作为一个hidden块集成进去,当下次用户提交的时候我们就可以再次提前出其中的challeng串,用以生成解码的KEY,例如下面这个:

<SPAN class=unnamed1>
<INPUT type=hidden name=nonsilent value="1">
<INPUT type=hidden name=predelive>
<INPUT type=hidden name=clientinfo> 
<INPUT type=hidden name=indiVersion>
<INPUT type=hidden name=cid> 
<INPUT type=hidden name=challenge  value="<%=strLicenseRequested%>">
</SPAN>
在用户认证通过了,返回License响应的时候也要注意,不能直接的返回LicenseResponse串,而必须借助于RMGetLicense.StoreLicense来实现 License响应,例如下面这个:
<head>
<script language="javascript">
function StoreV2License(hr)
{     
	netobj.StoreLicense("<%=licresponse%>");
}
</script>
</head>
<body onLoad="StoreV2License()">   
License has been issued.
<object classid="clsid:A9FC132B-096D-460B-B7D5-1DB0FAE0C062" id=netobj height=0 width=0>
	<embed MAYSCRIPT type="application/x-drm-v2" hidden="true">
</object>		
</body>
4.如何对实时媒体流DRM加密
  可以用Windows Media Encoder SDK或 Windows Media Format SDK,由于Encoder SDK基于Format SDK,因而几乎所有Encoder SDK可完成的功能用Media Format SDK实现,但Media Format SDK的DRM功能模块依赖于WMStubDRM.lib静态库,而这个WMStubDRM.lib则只要向MS进行购买才能获取得到.简单说一下用Media Format SDK进行实时媒体流DRM加密的实现原理,在利用IWMDRMWriter接口进行了Profile的设置以后,将数据用 Writer Sink机制拉出来再导入到我们自己的内容分发网络(例如我们的P2P系统)进行分发. 当然简单点,用Media Encoder SDK就可以了,Encoder SDK还可以将DRM加密后的流采用Push/Pull机制跟Windows Media Server上的一个Publishing Point连接.

<< P2P流媒体开发中的一点疑惑 / 一道减少搜索区间的推导题 >>

专题推荐

不平凡的水果世界

不平凡的水果世界

平凡的水果世界,平凡中的不平凡。 今朝看水果是水果 ,看水果还是水果 ,看水果已不是水果。这境界,谁人可比?在不平凡的水果世界里,仁者见仁,智者见智。

中国春节的那些习俗

中国春节的那些习俗

正月是农历新年的开始,人们往往将它看作是新的一年年运好坏的兆示期。所以,过年的时候“禁忌”特别多。当然,各个地方的风俗习惯不一样,过年的禁忌也是不一样的。

评论
0/200
表情 验证码:

David.Zhu

  • 文章总数0
  • 画报总数0
  • 画报点击数0
  • 文章点击数0
个人排行
        博文分类
        日期归档