千家信息网

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

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了如何隐藏ASP中的MediaPlayer控件播放文件地址,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在播放视频时,
千家信息网最后更新 2025年11月07日如何隐藏ASP中的MediaPlayer控件播放文件地址

这篇文章主要介绍了如何隐藏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 DESEncryptor5    {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        #endregion3233        私有成员#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 6364        公共属性#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 122123        构造函数#region 构造函数 124        /**//// 125        /// 构造函数126        /// 127        public DESEncryptor() 128        { 129            // 130            // TODO: 在此处添加构造函数逻辑 131            // 132        } 133        #endregion 134135        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 161162        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 Service13    /// 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.WebService10    {11        /**//// 12        /// 加密13        /// 14        /// 地址15        /// 16        [WebMethod]17        public string Encrypt(string url)18        {19            return DESEncryptor.ExecEncrypt(url);20        }2122        /**//// 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代码中添加如下代码:

注意:该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控件播放文件地址"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0