如何正确地调用被保护资源?

    当“微盾流媒体防盗链专家”正在运行,并且 RTSP 协议流媒体防盗链同时开启。所有服务器上通过 RTSP 协议访问的流媒体资源将无法访问。
    为了保证网站上能正常播放这些受保护的资源,必须为每个请求添加 VSID 证书信息(关于VSID的细节)
   


    如何生成 VSID 参数
    使用微盾提供的 SDK 函数来生成 VSID 证书。微盾目前提供 ASP(VbScript), ASP(JavaScript), PHP 语言的 SDK 头文件。

    如何导出 VSID 参数生成 SDK 文件
    打开“微盾流媒体防盗链专家”配置工具 » 设置 » RTSP防盗链 » 设置VSID公共钥匙,如下图:
   
    根据自己网站的语言,选择 SDK 文件的语言。
    然后,在弹出的窗口中输入网站的域名,程序会自动计算出该域名的根域名。再选择相应网站的目录保存 SDK 头文件,即可。


    传递 VSID 证书信息的方法
    1,通过 URL 参数方式传递
       可以将 VSID 证书信息添加在任何一个流媒体请求 URL 后面,例如:
       mms://mms.vidun.com/pinball.wmv?vsid=7307ada1863a2dd82b40fe76983df5a9
    2,通过 Cookie 方式传递 
       RTSP 协议允许传递 Cookie 信息,VSID 证书的存储名是 virtualwall=vsid,例如:
       Cookie: virtualwall=vsid=7307ada1863a2dd82b40fe76983df5a9;


    网站整合方案
    1,一台服务器一个网站,同根域名内,通过 Cookie 传递 VSID 信息方式的调用
       VSID 计算方式必须是以下两种的其中一种:
  0,默认方式
1,变化方式(相同访问IP地址产生每次不同的VSID)

       该方式要求网站使用域名,流媒体资源的调用也必须使用域名,并且两个域名必须是同一个顶级域名的子域名。
       例如:
           网站域名:www.abc.com
           资源域名:mms.abc.com
       详细配置方法:
       根据网站的语言不同选择合适的 SDK 头文件,保存到网站跟目录下(或者你喜欢的任何位置)。
       假设你的 SDK 头文件保存在网站根目录,以 ASP 语言头文件 vsidasp.asp 为例:
  网页地址是:
http://www.abc.com/pinball.html

原资源地址是:
mms://mms.abc.com/pinball.wmv

修改后的地址是:
http://www.abc.com/vsidasp.asp?file=mms://mms.abc.com/pinball.wmv

 

    2,两台服务器之间,同根域名内,通过 Cookie 传递 VSID 信息方式的调用
       VSID 计算方式必须是以下两种的其中一种:
  0,默认方式
1,变化方式(相同访问IP地址产生每次不同的VSID)

       如果您有两台服务器,网页站和资源站分开。建议您用这种方式调用,能保证更加稳定的调用。但代码修改量稍微多点。
       多台服务器配置也是一样。只要所有资源服务器的 VSID 信息配置一样即可。
       该方式要求网站使用域名,流媒体资源的调用也必须使用域名,并且两个域名必须是同一个顶级域名的子域名。
       例如:
           网站域名:www.abc.com
           资源域名:mms.abc.com
       第一步:
           在资源服务器 mms.abc.com 上,安装 IIS 并创建网站 mms.abc.com
           注意:IIS 使用 80 端口和 Media Services 不一样,因此通过 HTTP 协议或使用 MMS 协议访问 mms.abc.com 互不影响。
       第二步:
           通过“微盾流媒体防盗链专家”配置工具导出相应的 SDK 头文件,并存放在该服务器上 IIS 站点 mms.abc.com 下。
       第三步:
           在 www.abc.com 网站上,将下面的一段脚本添加到视频播放页面:
  <script language="JavaScript" src="http://mms1.abc.com/vsidasp.asp"></script>  



    3,通过 URL 参数传递 VSID 信息方式的调用
       VSID 计算方式必须是以下三种的其中一种:
  0,默认方式式
1,变化方式(相同访问IP地址产生每次不同的VSID)
2,变化方式(不同的资源文件名产生不同的VSID)

       该方式对域名没有太多的要求。但需要稍微修改网站代码,在每个流媒体请求后面添加 "?vsid=" 参数。
       三种语言的修改方法如下:

       ASP(VbScript)

  ' 包含 SDK 头文件
<!--#include file="vsidasp.asp"-->

' 修改前
<param name="FileName" value="mms://mms.abc.com/pinball.wmv">

' 标准方式
<param name="FileName" value="mms://mms.abc.com/pinball.wmv?vsid=<%=getvsid()%>">

' 文件名附加方式
<param name="FileName" value="mms://mms.abc.com<%=getvsidex("/pinball.wmv")%>">

 

       Asp(JavaScript)
  ' 包含 SDK 头文件
<!--#include file="vsidjs.asp"-->

// 修改前
<param name="FileName" value="mms://mms.abc.com/pinball.wmv">

// 标准方式
<param name="FileName" value="mms://mms.abc.com/pinball.wmv?vsid=<%=getvsid()%>">

// 文件名附加方式
<param name="FileName" value="mms://mms.abc.com<%=getvsidex("/pinball.wmv")%>">
 

       PHP
  <?php

// 包含 SDK 头文件
require_once( 'vsidphp.php' );

?>

' 修改前
<param name="FileName" value="mms://mms.abc.com/pinball.wmv">

' 标准方式
<param name="FileName" value="mms://mms.abc.com/pinball.wmv?vsid=<?php echo getvsid(); ?>">

' 文件名附加方式
<param name="FileName" value="mms://mms.abc.com<?php echo getvsidex("/pinball.wmv"); ?>">
 

 

    4,两台服务器之间,同根域名内,通过 URL 参数传递 VSID 信息方式的调用
       VSID 计算方式必须是以下两种的其中一种:
  0,默认方式
1,变化方式(相同访问IP地址产生每次不同的VSID)

       如果您有两台服务器,网页站和资源站分开。建议您用这种方式调用,能保证更加稳定的调用。但代码修改量稍微多点。
       该方式要求网站使用域名,流媒体资源的调用也必须使用域名,并且两个域名必须是同一个顶级域名的子域名。
       例如:
           网站域名:www.abc.com
           资源域名:mms.abc.com
       第一步:
           在资源服务器 mms.abc.com 上,安装 IIS 并创建网站 mms.abc.com
           注意:IIS 使用 80 端口和 Media Services 不一样,因此通过 HTTP 协议或使用 MMS 协议访问 mms.abc.com 互不影响。
       第二步:
           通过“微盾流媒体防盗链专家”配置工具导出相应的 SDK 头文件,并存放在该服务器上 IIS 站点 mms.abc.com 下。
       第三步:
           在 www.abc.com 服务器上,需要修改播放器的代码,修改方法如下:
  <script language="JavaScript" src="http://mms.abc.com/vsidasp.asp?js=yes"></script>

<script language="JavaScript">
//  媒体文件地址
var g_sUrl    = 'mms://mms.abc.com/pinball.wmv';
var g_sPlayer = '';

//  变量 VW_VSIDhttp://mms.abc.com/vsidasp.asp 中的一个自动生成的 JavaScript 变量
g_sUrl += ( '?vsid=' + VW_VSID );

//  播放器代码,这里可以根据需要修改成自己的播放器代码
g_sPlayer = ''
+ '<object id="mediaplayer" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,0,5,0803" standby="Loading Windows Media Player components..." type="application/x-oleobject" style="border:1px solid #666666;">'
+ '<param name="AutoSize" value="false">'
+ '<param name="AutoStart" value="1">'
+ '<param name="ShowControls" value="true">'
+ '<param name="ShowDisplay" value="false">'
+ '<param name="ShowGotoBar" value="false">'
+ '<param name="ShowTracker" value="true">'
+ '<param name="ShowStatusBar" value="true">'
+ '<param name="AnimationAtStart" value="false">'
+ '<param name="TransparentAtStart" value="false">'
+ '<param name="EnableContextMenu" value="false">'
+ '<param name="ClickToPlay" value="true">'
+ '<param name="VideoBorderWidth" value="0">'
+ '<param name="TransparentAtStart" value="0">'
+ '<param name="VideoBorderColor" value="0">'
+ '<param name="VideoBorder3D" value="0">'
+ '<param name="Volume" value="0">'
+ '<param name="FileName" value="' + g_sUrl + '">'
+ '</object>';
document.write( g_sPlayer );
</script>
 
 



    5,多台服务器之间, 同根域名内,通过 URL 参数传递 VSID 信息方式的调用
       VSID 计算方式必须是以下两种的其中一种:
  0,默认方式
1,变化方式(相同访问IP地址产生每次不同的VSID)

       如果您有多台服务器,网页站和资源站分开。建议您用这种方式调用,能保证更加稳定的调用。但代码修改量稍微多点。
       该方式要求网站使用域名,流媒体资源的调用也必须使用域名,并且两个域名必须是同一个顶级域名的子域名。
       例如:
           网站域名:www.abc.com
           资源域名:mms1.abc.com、mms2.abc.com
       第一步:
           在资源服务器 mms1.abc.com 上,安装 IIS 并创建网站 mms1.abc.com
           注意:IIS 使用 80 端口和 Media Services 不一样,因此通过 HTTP 协议或使用 MMS 协议访问 mms1.abc.com 互不影响。
           用同样的方法在资源服务器 mms2.abc.com 上,安装 IIS 并创建网站 mms2.abc.com
       第二步:
           通过“微盾流媒体防盗链专家”配置工具导出相应的 SDK 头文件,并存放在该服务器上 IIS 站点 mms1.abc.com 下。
           用同样的方法在资源服务器 mms2.abc.com 上,导出相应的 SDK 头文件,并存放在该服务器上 IIS 站点 mms2.abc.com 下。
       第三步:
           在 www.abc.com 服务器上,需要修改播放器的代码,修改方法如下:
  <script language="JavaScript" src="http://mms1.abc.com/vsidasp.asp?js=yes&vname=_MMS1"></script>
<script
language="JavaScript" src="http://mms2.abc.com/vsidasp.asp?js=yes&vname=_MMS2"></script>

<script language="JavaScript">
//  媒体文件地址
var g_sUrl    = 'mms://mms1.abc.com/pinball.wmv';
var g_sPlayer = '';

if ( -1 != g_sUrl.indexOf('mms1.abc.com') )
{
   
    //  变量 VW_VSID_MMS1http://mms1.abc.com/vsidasp.asp 中的一个自动生成的 JavaScript 变量
        g_sUrl += ( '?vsid=' + VW_VSID_MMS1 );
}
else
{
       
//  变量 VW_VSID_MMS2http://mms2.abc.com/vsidasp.asp 中的一个自动生成的 JavaScript 变量
   
    g_sUrl += ( '?vsid=' + VW_VSID_MMS2 );
}

//  播放器代码,这里可以根据需要修改成自己的播放器代码
g_sPlayer = ''
+ '<object id="mediaplayer" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,0,5,0803" standby="Loading Windows Media Player components..." type="application/x-oleobject" style="border:1px solid #666666;">'
+ '<param name="AutoSize" value="false">'
+ '<param name="AutoStart" value="1">'
+ '<param name="ShowControls" value="true">'
+ '<param name="ShowDisplay" value="false">'
+ '<param name="ShowGotoBar" value="false">'
+ '<param name="ShowTracker" value="true">'
+ '<param name="ShowStatusBar" value="true">'
+ '<param name="AnimationAtStart" value="false">'
+ '<param name="TransparentAtStart" value="false">'
+ '<param name="EnableContextMenu" value="false">'
+ '<param name="ClickToPlay" value="true">'
+ '<param name="VideoBorderWidth" value="0">'
+ '<param name="TransparentAtStart" value="0">'
+ '<param name="VideoBorderColor" value="0">'
+ '<param name="VideoBorder3D" value="0">'
+ '<param name="Volume" value="0">'
+ '<param name="FileName" value="' + g_sUrl + '">'
+ '</object>';
document.write( g_sPlayer );
</script>
 
 

       该方法同样适用于一个网页服务器和一个资源服务器的情况。