隐藏<ASP:MediaPlayer>控件播放文件地址

本文介绍了解决MediaPlayer控件在播放视频时,直接查看页面源文件可看到视频文件地址的问题的方法。通过建立字符串加密解密服务,先对播放地址进行加密,然后在播放页面加载时调用WebService内加密方法加密播放地址,并注册JavaScript脚本调用视频文件播放方法。最终在页面上查看源文件便无法查看到播放文件地址。

微软山西移动流媒体发布平台时遇到MediaPlayer控件播放地址隐藏的问题

在播放视频时,直接查看页面源文件可看到视频文件地址,MediaPlayer将在页面上加上如下初始化语句:

 

ExpandedBlockStart.gif
1ExpandedBlockStart.gifSys.Application.add_init(function() {
2ExpandedSubBlockStart.gif    $create(Sys.UI.Silverlight.MediaPlayer, {"autoPlay":true,"mediaSource":"http://211.142.31.235/Nas1/VOD/CP0001/490Kbps/D/DI/DIA/DiaoZhongYuan1/DiaoZhongYuan1.wmv","scaleMode":2,"source":"UserControl/playerTheme/player.xaml","volume":1}nullnull, $get("myUserMediaPlayer_player_parent"));
3}
);

 

解决方案是先建立一个字符串加密解密服务

加密、解密工具类:

 

ExpandedBlockStart.gif
  1ExpandedBlockStart.gif/// 
  2    /// 对字符串进行、加解密的工具类
  3    /// 

  4    public class DESEncryptor
  5ExpandedBlockStart.gif    {
  6ContractedSubBlock.gif        静态公共方法
 32
 33ContractedSubBlock.gif        私有成员 
 63
 64ContractedSubBlock.gif        公共属性 
122
123ContractedSubBlock.gif        构造函数 
134
135ContractedSubBlock.gif        DES加密字符串 
161
162ContractedSubBlock.gif        DES解密字符串 
189}

 

 加密、解密WebService,调用工具内加密、解密方法:

 

ExpandedBlockStart.gif
 1ExpandedBlockStart.gif/// 
 2    /// Summary description for Service1
 3    /// 

 4    [WebService(Namespace = "http://tempuri.org/")]
 5    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 6    [System.ComponentModel.ToolboxItem(false)]
 7    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
 8    // [System.Web.Script.Services.ScriptService]
 9    public class Service1 : System.Web.Services.WebService
10ExpandedBlockStart.gif    {
11ExpandedSubBlockStart.gif        /// 
12        /// 加密
13        /// 
14        /// 地址
15        /// 

16        [WebMethod]
17        public string Encrypt(string url)
18ExpandedSubBlockStart.gif        {
19            return DESEncryptor.ExecEncrypt(url);
20        }

21
22ExpandedSubBlockStart.gif        /// 
23        /// 解密
24        /// 
25        /// 地址
26        /// 

27        [WebMethod]
28        public string DeEncrypt(string url)
29ExpandedSubBlockStart.gif        {
30            return DESEncryptor.ExecDeEncrypt(url);
31        }

32    }

 

在播放页面加载时,先调用WebService内加密方法对播放地址进行加密,然后注册JavaScript脚本调用视频文件播放方法:

 

ExpandedBlockStart.gif
 1protected void Page_Load(object sender, EventArgs e)
 2ExpandedBlockStart.gif        {
 3            if (!IsPostBack)
 4ExpandedSubBlockStart.gif            {
 5                //对播放地址进行加密
 6                string encryptUrl = local.Encrypt(playUrl);
 7                //注册脚本,调用javascript播放方法
 8                Page.ClientScript.RegisterStartupScript(this.GetType(), """ setTimeout(\"onPlay('" + encryptUrl + "')\",1000)"true); 
 9            }

10        }

 

JavaScript调用WebService通过微软提供的WebService.htc实现,ASP.NET中使用WebService.htc需要在HTML代码中添加如下代码:

注意:该div必需在forms之外

 

Javascript代码:

ExpandedBlockStart.gif
 1 function getUrl(str) {
 2     //第一个参数是webservice的url,后面是名称
 3     serviceDiv.useService("http://localhost:88/Service1.asmx?WSDL""news");
 4     //设置一个回调函数,service返回结果的时候回调;第一个参数是回调函数的名称,后面的是webservice的参数
 5     intCallID = serviceDiv.news.callService(url_result, "DeEncrypt", str); //这里有两个参数..
 6 }
 7 
 8 function url_result(result)//回调函数
 9 {
10     var media_player = $find('myUserMediaPlayer_player');
11     media_player.set_mediaSource(result.value);
12     media_player.set_autoPlay(true);
13 }
14 
15 function onPlay(str) {
16     getUrl(str);
17 }

 

有几点需说明:

1. 为什么在Page_Load事件里注册脚本不直接调用Javascript内播放方法,因为页面需完全加载后,WebService.htc才会被初始化,所以我用setTimeout方法延迟一段时间再调用播放方法。

2. 大家在使用WebService回调函数时记得判断返回结果是否成功。

 

通过以上方法,在页面上查看源文件便无法查看到播放文件地址了,MediaPlayer初始化语句更新为如下:

 

ExpandedBlockStart.gif
1ExpandedBlockStart.gifSys.Application.add_init(function() {
2ExpandedSubBlockStart.gif    $create(Sys.UI.Silverlight.MediaPlayer, {"autoPlay":true,"scaleMode":1,"source":"../UserControl/playerTheme/VIPPlayer.xaml","volume":1}nullnull, $get("ump_player_parent"));
3}
);

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-609338/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639172/viewspace-609338/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值