php播放器隐藏播放地址,window_ASP中实现对MediaPlayer控件播放文件地址隐藏的解决方案,在播放视频时,直接查看页面 - phpStudy...
ASP中实现对MediaPlayer控件播放文件地址隐藏的解决方案
在播放视频时,直接查看页面源文件可看到视频文件地址,MediaPlayer控件播放器将在页面上加上如下初始化语句:
MediaPlayer控件初始化可查看到源文件地址
Sys.Application.add_init(function()
{
$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},
null, null,
$get("myUserMediaPlayer_player_parent"));
});
解决方案是先建立一个字符串加密解密服务
加密、解密工具类
1/**
2 /// 对字符串进行、加解密的工具类
3 ///
4 public class DESEncryptor
5 {
6 静态公共方法#region 静态公共方法
7 /**
8 /// 对字符串进行加密
9 ///
10 /// 源字符串
11 /// 加密后的字符串
12 public static string ExecEncrypt(string strSource)
13 {
14 DESEncryptor desEncryptor = new DESEncryptor() ;
15 desEncryptor.InputString = strSource ;
16 desEncryptor.DesEncrypt() ;
17 return desEncryptor.OutString ;
18 }
19 /**
20 /// 对已经加密的字符串进行解密
21 ///
22 /// 已经加密的字符串
23 /// 还原后的字符串
24 public static string ExecDeEncrypt(string strSource)
25 {
26 DESEncryptor desEncryptor = new DESEncryptor() ;
27 desEncryptor.InputString = strSource ;
28 desEncryptor.DesDecrypt() ;
29 return desEncryptor.OutString ;
30 }
31 #endregion
32
33 私有成员#region 私有成员
34 /**
35 /// 输入字符串
36 ///
37 private string inputString=null;
38 /**
39 /// 输出字符串
40 ///
41 private string outString=null;
42 /**
43 /// 输入文件路径
44 ///
45 private string inputFilePath=null;
46 /**
47 /// 输出文件路径
48 ///
49 private string outFilePath=null;
50 /**
51 /// 加密密钥
52 ///
53 private string encryptKey="fanmenglife";
54 /**
55 /// 解密密钥
56 ///
57 private string decryptKey = "fanmenglife";
58 /**
59 /// 提示信息
60 ///
61 private string noteMessage=null;
62 #endregion
63
64 公共属性#region 公共属性
65 /**
66 /// 输入字符串
67 ///
68 public string InputString
69 {
70 get{return inputString;}
71 set{inputString=value;}
72 }
73 /**
74 /// 输出字符串
75 ///
76 public string OutString
77 {
78 get{return outString;}
79 set{outString=value;}
80 }
81 /**
82 /// 输入文件路径
83 ///
84 public string InputFilePath
85 {
86 get{return inputFilePath;}
87 set{inputFilePath=value;}
88 }
89 /**
90 /// 输出文件路径
91 ///
92 public string OutFilePath
93 {
94 get{return outFilePath;}
95 set{outFilePath=value;}
96 }
97 /**
98 /// 加密密钥
99 ///
100 public string EncryptKey
101 {
102 get{return encryptKey;}
103 set{encryptKey=value;}
104 }
105 /**
106 /// 解密密钥
107 ///
108 public string DecryptKey
109 {
110 get{return decryptKey;}
111 set{decryptKey=value;}
112 }
113 /**
114 /// 错误信息
115 ///
116 public string NoteMessage
117 {
118 get{return noteMessage;}
119 set{noteMessage=value;}
120 }
121 #endregion
122
123 构造函数#region 构造函数
124 /**
125 /// 构造函数
126 ///
127 public DESEncryptor()
128 {
129 //
130 // TODO: 在此处添加构造函数逻辑
131 //
132 }
133 #endregion
134
135 DES加密字符串#region DES加密字符串
136 /**
137 /// 加密字符串
138 /// 注意:密钥必须为8位
139 ///
140 public void DesEncrypt()
141 {
142 byte[] byKey=null;
143 byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
144 try
145 {
146 byKey = System.Text.Encoding.UTF8.GetBytes(this.encryptKey.Substring(0,8));
147 DESCryptoServiceProvider des = new DESCryptoServiceProvider();
148 byte[] inputByteArray = Encoding.UTF8.GetBytes(this.inputString);
149 MemoryStream ms = new MemoryStream();
150 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ;
151 cs.Write(inputByteArray, 0, inputByteArray.Length);
152 cs.FlushFinalBlock();
153 this.outString=Convert.ToBase64String(ms.ToArray());
154 }
155 catch(System.Exception error)
156 {
157 this.noteMessage=error.Message;
158 }
159 }
160 #endregion
161
162 DES解密字符串#region DES解密字符串
163 /**
164 /// 解密字符串
165 ///
166 public void DesDecrypt()
167 {
168 byte[] byKey = null;
169 byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
170 byte[] inputByteArray = new Byte[this.inputString.Length];
171 try
172 {
173 byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0,8));
174 DESCryptoServiceProvider des = new DESCryptoServiceProvider();
175 inputByteArray = Convert.FromBase64String(this.inputString);
176 MemoryStream ms = new MemoryStream();
177 CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
178 cs.Write(inputByteArray, 0, inputByteArray.Length);
179 cs.FlushFinalBlock();
180 System.Text.Encoding encoding = new System.Text.UTF8Encoding();
181 this.outString=encoding.GetString(ms.ToArray());
182 }
183 catch(System.Exception error)
184 {
185 this.noteMessage=error.Message;
186 }
187 }
188 #endregion
189}
加密、解密WebService,调用工具内加密、解密方法:
1/**
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
10 {
11 /**
12 /// 加密
13 ///
14 /// 地址
15 ///
16 [WebMethod]
17 public string Encrypt(string url)
18 {
19 return DESEncryptor.ExecEncrypt(url);
20 }
21
22 /**
23 /// 解密
24 ///
25 /// 地址
26 ///
27 [WebMethod]
28 public string DeEncrypt(string url)
29 {
30 return DESEncryptor.ExecDeEncrypt(url);
31 }
32
}
在MediaPlayer控件播放页面加载时,先调用WebService内加密方法对播放地址进行加密,然后注册JavaScript脚本调用视频文件播放方法:
播放页面加载
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//对播放地址进行加密
string encryptUrl = local.Encrypt(playUrl);
//注册脚本,调用javascript播放方法
Page.ClientScript.RegisterStartupScript(this.GetType(), "", " setTimeout(\"onPlay('" + encryptUrl + "')\",1000)", true); }
}
JavaScript调用WebService通过微软提供的WebService.htc实现,ASP.NET中使用WebService.htc需要在HTML代码中添加如下代码:
Javascript代码:
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初始化语句更新为如下:
更改后MediaPlayer控件初始化
Sys.Application.add_init(function()
{
$create(Sys.UI.Silverlight.MediaPlayer,
{"autoPlay":true,"scaleMode":1,"source":"../UserControl/playerTheme/VIPPlayer.xaml","volume":1},
null, null, $get("ump_player_parent"));
});
不过这只是争对一般用户,如果大家有更好的方法可以拿出来一起共享,希望我的文章对大家有帮助相关阅读:
JavaScript高级程序设计 XML、Ajax 学习笔记
javascript 用记忆函数快速计算递归函数
Atlas学习手记(25):使用行为增强用户界面(五):AutoComplete Behavior
最常用的五类CSS选择器
Lazy Load 延迟加载图片的 jQuery 插件
Marquee标记在XHTML代码中该如何用
10g中构建“高”索引
用javascript自动显示最后更新时间
LINQ学习笔记:XDocument文档与XML声明
js在客户端验证密码强度,兼容FireFox和IE
JQuery下的Live方法和$.browser方法使用代码
常用MySQL的命令集锦
javascript 随意拖动的小方块特效
Linux中APMD参数以及使用介绍
php播放器隐藏播放地址,window_ASP中实现对MediaPlayer控件播放文件地址隐藏的解决方案,在播放视频时,直接查看页面 - phpStudy...相关推荐
- 在Winform(C++/CLR)平台设计的(本地在线)音乐播放器(基于WMP(Windows Media Player)控件实现)
首先,祝贺阿根廷获得2022世界杯冠军! 文章目录 简介 功能展示 1.用户注册.登录.自定义主题 2.本地歌曲导入.播放并读取歌词文件 3.在线歌曲搜索.收藏.播放 4.歌词同步及桌面歌词 5.在线 ...
- Ubuntu下安装Audacious音乐播放器详细配置方法(中文化,歌词显示等)
Windows下有不少比较有名气的音乐播放器,例如千千静听,Kugou,foobar和QQ音乐等,但是ubuntu下的音乐播放器则没有这么丰富,但是现在则给大家介绍一款ubuntu下的"千千 ...
- android 播放器封装,Android视频播放最全总结:MediaPlayer+TextureView封装一个完美实现全屏、小窗视频播放器,附项目源码...
原标题:Android视频播放最全总结:MediaPlayer+TextureView封装一个完美实现全屏.小窗视频播放器,附项目源码 作者:xiaoyanger 来源:http://www.jian ...
- c#winform演练 ktv项目 MediaPlayer控件播放音乐
c#winform演练 ktv项目 MediaPlayer控件播放音乐 如何播放媒体 媒体控件.URL = 媒体文件的路径 路径说明 绝对路径 从盘符到目录到文件的完整路径 相对路径 项目的bin下有 ...
- VS2015中配置MSComm通讯控件和注意事项
1.MSCommon通讯控件前文回顾 MSComm 作为一个串行通讯控件.在为程序员串口通讯编程节省了很多时间,基于对话框的应用中加入一个MSComm控件非常简单. MSComm控件提供了两种处理通信 ...
- MFC中使用TAB Control控件
2019独角兽企业重金招聘Python工程师标准>>> MFC中使用TAB Control控件 MFC中使用TAB Control控件(转) 假如我现在有个SDI程序,View是Fo ...
- VS2010中MSCOMM 串口通信控件的注册使用
VS2010本身并不自带MSCOMM控件,因此在Win7.win8/8.1系统中使用VS2010进行串口编程时, 在COM控件一栏中没法找到. 网上解决这个问题的文章很多,但尝试了很多种方法都没有解决 ...
- 【小沐学C#】WPF中嵌入web网页控件(WebBrowser、WebView2、CefSharp)
文章目录 1.简介 1.1 WPF简介 1.2 WPF 体系结构 1.3 WPF入门开发 2.WebBrowser 2.1 WebBrowser特点 2.2 WebBrowser常用的属性.方法和事件 ...
- ASP.NET中AJAX的UpdatePannel控件的用法
ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖于ScriptManager存在, ...
最新文章
- mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...
- 【译】BINDER - ANALYSIS AND EXPLOITATION OF CVE-2020-0041
- LwIP应用开发笔记之六:LwIP无操作系统TCP客户端
- 网鼎杯2020php反序列化,2020-网鼎杯(青龙组)_Web题目 AreUserialz Writeup
- 零基础学Python的几个经典例子
- CVPR2021 最佳论文候选—提高图像风格迁移的鲁棒性
- Activity间数据传输
- mysql 配置详解
- apache ab 压测
- 2018年单招理科考计算机吗,2018高职单招考试难吗 单招考试的内容
- Java I/O总结——OutputStream
- 第二十三章:触发器和行为(九)
- Linux系统编程---消息队列
- CentOS服务器ntpdate同步及使用ntpdate同步时钟服务器时间
- 什么是表压?什么是绝压?表压和绝压什么关系?
- 前端安全须知(淘宝)
- 如何运营好微信公众号
- html布局直接填充,css实现自动填充布局
- 沙盒型源码安全解决方案
- 区块链溯源是什么?一文带您读懂! 1