隱藏<ASP:MediaPlayer>控制元件播放檔案地址

iDotNetSpace發表於2009-07-16

微軟山西移動流媒體釋出平臺時遇到MediaPlayer控制元件播放地址隱藏的問題

在播放視訊時,直接檢視頁面原始檔可看到視訊檔案地址,MediaPlayer將在頁面上加上如下初始化語句:

 

隱藏<ASP:MediaPlayer>控制元件播放檔案地址
1隱藏<ASP:MediaPlayer>控制元件播放檔案地址Sys.Application.add_init(function() {
2隱藏<ASP:MediaPlayer>控制元件播放檔案地址    $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}
);

 

解決方案是先建立一個字串加密解密服務

加密、解密工具類:

 

隱藏<ASP:MediaPlayer>控制元件播放檔案地址
  1隱藏<ASP:MediaPlayer>控制元件播放檔案地址/// 
  2    /// 對字串進行、加解密的工具類
  3    /// 

  4    public class DESEncryptor
  5隱藏<ASP:MediaPlayer>控制元件播放檔案地址    {
  6隱藏<ASP:MediaPlayer>控制元件播放檔案地址        靜態公共方法
 32
 33隱藏<ASP:MediaPlayer>控制元件播放檔案地址        私有成員 
 63
 64隱藏<ASP:MediaPlayer>控制元件播放檔案地址        公共屬性 
122
123隱藏<ASP:MediaPlayer>控制元件播放檔案地址        建構函式 
134
135隱藏<ASP:MediaPlayer>控制元件播放檔案地址        DES加密字串 
161
162隱藏<ASP:MediaPlayer>控制元件播放檔案地址        DES解密字串 
189}

 

 加密、解密WebService,呼叫工具內加密、解密方法:

 

隱藏<ASP:MediaPlayer>控制元件播放檔案地址
 1隱藏<ASP:MediaPlayer>控制元件播放檔案地址/// 
 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隱藏<ASP:MediaPlayer>控制元件播放檔案地址    {
11隱藏<ASP:MediaPlayer>控制元件播放檔案地址        /// 
12        /// 加密
13        /// 
14        /// 地址
15        /// 

16        [WebMethod]
17        public string Encrypt(string url)
18隱藏<ASP:MediaPlayer>控制元件播放檔案地址        {
19            return DESEncryptor.ExecEncrypt(url);
20        }

21
22隱藏<ASP:MediaPlayer>控制元件播放檔案地址        /// 
23        /// 解密
24        /// 
25        /// 地址
26        /// 

27        [WebMethod]
28        public string DeEncrypt(string url)
29隱藏<ASP:MediaPlayer>控制元件播放檔案地址        {
30            return DESEncryptor.ExecDeEncrypt(url);
31        }

32    }

 

在播放頁面載入時,先呼叫WebService內加密方法對播放地址進行加密,然後註冊JavaScript指令碼呼叫視訊檔案播放方法:

 

隱藏<ASP:MediaPlayer>控制元件播放檔案地址
 1protected void Page_Load(object sender, EventArgs e)
 2隱藏<ASP:MediaPlayer>控制元件播放檔案地址        {
 3            if (!IsPostBack)
 4隱藏<ASP:MediaPlayer>控制元件播放檔案地址            {
 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程式碼:

隱藏<ASP:MediaPlayer>控制元件播放檔案地址
 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初始化語句更新為如下:

 

隱藏<ASP:MediaPlayer>控制元件播放檔案地址
1隱藏<ASP:MediaPlayer>控制元件播放檔案地址Sys.Application.add_init(function() {
2隱藏<ASP:MediaPlayer>控制元件播放檔案地址    $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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章