温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何隐藏ASP中的MediaPlayer控件播放文件地址

发布时间:2021-12-03 10:55:02 来源:亿速云 阅读:262 作者:小新 栏目:编程语言

这篇文章主要介绍了如何隐藏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/**//// <summary> 2    /// 对字符串进行、加解密的工具类 3    /// </summary> 4    public class DESEncryptor 5    { 6        静态公共方法#region 静态公共方法 7        /**//// <summary> 8        /// 对字符串进行加密 9        /// </summary> 10        /// <param name="strSource">源字符串</param> 11        /// <returns>加密后的字符串</returns> 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        /**//// <summary> 20        /// 对已经加密的字符串进行解密 21        /// </summary> 22        /// <param name="strSource">已经加密的字符串</param> 23        /// <returns>还原后的字符串</returns> 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        /**//// <summary>  35        /// 输入字符串  36        /// </summary>  37        private string inputString=null;  38        /**//// <summary>  39        /// 输出字符串  40        /// </summary>  41        private string outString=null;  42        /**//// <summary>  43        /// 输入文件路径  44        /// </summary>  45        private string inputFilePath=null;  46        /**//// <summary>  47        /// 输出文件路径  48        /// </summary>  49        private string outFilePath=null;  50        /**//// <summary>  51        /// 加密密钥  52        /// </summary>  53        private string encryptKey="fanmenglife";  54        /**//// <summary>  55        /// 解密密钥  56        /// </summary>  57        private string decryptKey = "fanmenglife";  58        /**//// <summary>  59        /// 提示信息  60        /// </summary>  61        private string noteMessage=null;  62        #endregion  63 64        公共属性#region 公共属性  65        /**//// <summary>  66        /// 输入字符串  67        /// </summary>  68        public string InputString  69        {  70            get{return inputString;}  71            set{inputString=value;}  72        }  73        /**//// <summary>  74        /// 输出字符串  75        /// </summary>  76        public string OutString  77        {  78            get{return outString;}  79            set{outString=value;}  80        }  81        /**//// <summary>  82        /// 输入文件路径  83        /// </summary>  84        public string InputFilePath  85        {  86            get{return inputFilePath;}  87            set{inputFilePath=value;}  88        }  89        /**//// <summary>  90        /// 输出文件路径  91        /// </summary>  92        public string OutFilePath  93        {  94            get{return outFilePath;}  95            set{outFilePath=value;}  96        }  97        /**//// <summary>  98        /// 加密密钥  99        /// </summary>  100        public string EncryptKey  101        {  102            get{return encryptKey;}  103            set{encryptKey=value;}  104        }  105        /**//// <summary>  106        /// 解密密钥  107        /// </summary>  108        public string DecryptKey  109        {  110            get{return decryptKey;}  111            set{decryptKey=value;}  112        }  113        /**//// <summary>  114        /// 错误信息  115        /// </summary>  116        public string NoteMessage  117        {  118            get{return noteMessage;}  119            set{noteMessage=value;}  120        }  121        #endregion  122 123        构造函数#region 构造函数  124        /**//// <summary> 125        /// 构造函数 126        /// </summary> 127        public DESEncryptor()  128        {  129            //  130            // TODO: 在此处添加构造函数逻辑  131            //  132        }  133        #endregion  134 135        DES加密字符串#region DES加密字符串  136        /**//// <summary>  137        /// 加密字符串  138        /// 注意:密钥必须为8位  139        /// </summary>  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        /**//// <summary>  164        /// 解密字符串  165        /// </summary>  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/**//// <summary> 2    /// Summary description for Service1 3    /// </summary> 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        /**//// <summary> 12        /// 加密 13        /// </summary> 14        /// <param name="url">地址</param> 15        /// <returns></returns> 16        [WebMethod] 17        public string Encrypt(string url) 18        { 19            return DESEncryptor.ExecEncrypt(url); 20        } 21 22        /**//// <summary> 23        /// 解密 24        /// </summary> 25        /// <param name="url">地址</param> 26        /// <returns></returns> 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代码中添加如下代码:

<div id="serviceDiv" style="behavior: url(WebService.htc)"></div>

注意:该div必需在forms之外

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"));  });

感谢你能够认真阅读完这篇文章,希望小编分享的“如何隐藏ASP中的MediaPlayer控件播放文件地址”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI