搜到的一个例子,这个动态页面动态生成asx,而后mediaplayer播放 <%@ page language="java" contentType="video/x-ms-asf; charset=gb2312"% > <% //音乐文件所在的目录,我这里用的是绝对路径,自己随意 String songid=(String)request.getAttribute("songid"); /*从Servlet中传过来的多个音乐文件,之间用"_"连接 然后再用String类的split("")方法拆分字符串为数组,将字符串数组循环 写入asx标记中*/ String[] str=songid.split("_"); % > <ASX Version = "3.0" > <% for(int i=0;i <str.length;i++) { /*我的站点音乐文件和JSP程序不在一个服务器上 文件录入数据库时没有加扩展名,所以我下面加上了".wma",自己随意 */ str[i]=str[i]+".wma"; % > <Entry > <Author > </Author > <Copyright >低品质音乐,仅供试听!请支持正版唱片! </Copyright > <Title > </Title > <Param Name = "WM/AlbumTitle" Value = "爱龙♂空间[www.ilkj.net]" / > <Ref href = " <%=url+str[i]% >" / > </Entry > <% } % > </ASX >
request.getAttribute("songid");由后台动态生成,这时可以在随机码等方面做手脚,达到防止盗链的目的。
还有一个,在此基础上,在Windows Media Server端做插件,采用类似如下模式: <object id="mplayer1" height="60" width="300" classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" class="player"> <PARAM NAME='URL' value="mms://60.190.28.152/VOD1/VOD/SMM/film03123001.WMV?00D2752D19D3B7C04B20D4364B061C94"> <param name="rate" value="1"> <param name="balance" value="0"> <param name="currentposition" value="0"> <param name="defaultframe" value> <param name="playcount" value="100"> <param name="autostart" value="-1"> <param name="currentmarker" value="0"> <param name="invokeurls" value="-1"> <param name="baseurl" value> <param name="volume" value="100"> <param name="mute" value="0"> <param name="uimode" value="full"> <param name="stretchtofit" value="0"> <param name="windowlessvideo" value="0"> <param name="enabled" value="-1"> <param name="enablecontextmenu" value="0"> <param name="fullscreen" value="0"> <param name="samistyle" value> <param name="samilang" value> <param name="samifilename" value> <param name="captioningid" value> <param name="enableerrordialogs" value="0"> <param name="_cx" value="8123"> <param name="_cy" value="1588"> </object> 或动态生成asx时,在url中加随机码参数。 而后服务器端插件获取随机码,进行比较,如果比较错误,则拒绝播放。
测试结果可行。在服务器端写授权插件,通过授权插件中对随机校验码进行校验,以此控制该音/视频只能在特定网页上播放。 即 打开网页->验证服务器端生成随机校验码->随机校验码写入页面客户端播放器参数->流媒体服务器授权插件获得客户端播放器传递的随机校验码->授权插件与验证服务器进行随机码比较->确认随机码正确,则播放,否则不播放。随机码设定较短失效时间,例如1分钟。 另:为了控制一个账户只能自己看,不能多个人同时用一个账户查看。可以通过客户端页面与心跳服务器进行心跳的方式,采用类似QQ踢人的方式,来控制,始终只有一个人用以一个账号看视频。 |