解析SW6.6中調用外部FLV視頻的問題_動易Cms教程
相信有很多朋友和我們一樣,用動易SW做了視頻頻道,早先的時候不管是自己上傳還是外站引用,如今由于播客的興起和flv的盛行,在原來用SW做的視頻頻道中引用外部flv已經(jīng)有了很現(xiàn)實的意義。比如我們網(wǎng)站是采用了oblog開發(fā)的Oblog Video系統(tǒng)。
以前一直采用動易系統(tǒng)來做視頻新聞,現(xiàn)在當然更愿意選擇具有自動編譯flv格式和隱藏原始地址功能的vlog了(早先用mms和直接上傳的方式,造成我們一個視頻文件被人在貓撲上用做簽名,幾乎吃光我們整個機柜的帶寬……)。
但是原來的視頻頻道也必須繼續(xù)運作下去。于是理所當然的想到了在SW中直接引用vlog的flv視頻。一個vlog的標準flash引用地址如下:
我們直接把這個swf格式的外部地址插入到動易的“軟件”頻道。保存沒問題,但是發(fā)現(xiàn)不能觀看�;氐胶笈_編輯,發(fā)現(xiàn)引用的一個外部地址被拆成了兩行——很不幸的問題——vlog的分隔符“$$$”正好和動易的多地址分隔符“$$$”沖突了。
于是直接添加外部URL不可能了。于是我們又換了個思路:在軟件簡介中添加flash,制作一個新的內容頁模板,不使用DownloadUrl。這個方案應該是沒有問題的,不過我沒有去做就否決了。因為第一、動易后臺添加軟件時地址不能為空,第二、既然用軟件頻道來做視頻,卻要以文章頻道的方式添加視頻源,這個方案很爛。
我采用的方式是:添加了一個自定義字段,命名為FlvUrl。添加視頻時,如果是傳統(tǒng)視頻,照老樣子操作,如果是flv格式視頻,在視頻地址處填寫“vlog”即可。然后把上面的那段URL填寫到自定義選項的“FlvUrl”里面。
可以考慮在ShowDownload.asp里直接讀取和使用這個字段,但是這樣會破壞系統(tǒng)的通用性。我的做法是在內容頁模板里改,原來我們在內容頁里用一個Iframe引用ShowDownload.asp來實現(xiàn)嵌入式播放,代碼為:
|
以下內容為程序代碼:
|
在ShowSoftDown.asp里原來就有根據(jù)后綴判斷調用下載地址和實時播放的代碼。我們增加了一個判斷,如果DownloadUrl里含有“vlog”字樣,則采用嵌入flash的方式來調用真實地址。實現(xiàn)在線播放。但是我們需要自定義字段的值。在動易系統(tǒng)里,我們添加的“FlvUrl”字段有一個模板標簽——{$MY_FlvUrl}。
所以我在內容頁模板里修改如下:
| 以下內容為程序代碼: <IFRAME name="Video" frameBorder=0 scrolling=no src="{$InstallDir}{$ChannelDir}/ShowSoftDown.asp?SoftID={$SoftID}&UrlID=0&flashUrl={$MY_FlvUrl}" width="456" height="410"></IFRAME> |
然后在ShowDownload.asp中用Request.QueryString("flashUrl")來獲取。
搞開發(fā)的朋友肯定已經(jīng)意識到了將要出現(xiàn)的問題,我們的參數(shù)值里含有“&”符號,于是最前面我給出的那個flash地址在傳遞和獲取之后,只剩下了第一個&符號前面的部分。
沒辦法,這個問題只能繼續(xù)下去,打開include/PowerEasy.Soft.asp文件,找到GetHtml_Soft()這個函數(shù),這是用來根據(jù)內容頁模板生成內容頁的代碼。我的目的是在輸出FlvUrl這個自定義字段值的時候,把&處理一下。
原來的代碼:
| 以下內容為程序代碼: Do While Not rsField.EOF strHtml = PE_Replace(strHtml, rsField("LabelName"), PE_HTMLEncode(vtempStr)) rsField.MoveNext Loop |
修改后的代碼:
| 以下內容為程序代碼: Do While Not rsField.EOF Dim vtempStr vtempStr = rsSoft(Trim(rsField("FieldName"))) If Instr(vtempStr, "FlvUrl") > 0 Then vtempStr = Replace(vtempStr, "&", "$thand$") strHtml = PE_Replace(strHtml, rsField("LabelName"), PE_HTMLEncode(vtempStr)) rsField.MoveNext Loop |
這樣我們的Request.QueryString("flashUrl")就可以得到完整的flash地址了,我們在使用它之前再把“$thand$”替換成“&”,放到flash嵌入代碼的"Movie"參數(shù)值里。
測試結果:效果很好,內嵌的flash播放器就是vlog提供的具有全屏、隨意拖動、隨意變換電影風格、可控制進度、可暫停、可調音量的flash播放器。視頻源地址依然是隱藏(對大多數(shù)訪問者而言)。
附1:還有另外一個問題——視頻縮略圖如果添加外部地址,還是會在前面被加上主站縮略圖上傳路徑的URL。添加外部URL地址如果不是以http開頭的,也一樣會被加上。而縮略圖地址即使以http開頭,仍然會被加上。建議這里加一個判斷,如果以“http://”打頭的,就不要再引用完整的上傳路徑了。
附2:如果你是自己管理,那么有更簡單的方式,添加視頻地址的時候把“$$$”改成“$$”,在ShowDownload.asp里再把它替換回去就行了。我是為了讓編輯的添加工作簡化,所以才把復雜的事情交給程序員來做。
| http://vlog.taihainet.com/FLVPlayerMain.swf?unicode=1&playindex=0&c=0$$$761d50d7cfea242f&s=http://vlog.taihainet.com/ |
- MAC錯誤的解決方法
- 如何屏蔽動易后臺導航里的某個功能菜單?
- 動易.NET版本留言自動選定欄目方法
- 動易SiteFactoty整合Discuz!NT3.0
- 在任意位置獲取根節(jié)點ID標簽
- 如何開啟SiteWeaver6.8的支持,反對功能
- Windows 2008安裝動易.NET系統(tǒng)之四----動易系統(tǒng)安裝篇
- Windows 2008安裝動易.NET系統(tǒng)之三----數(shù)據(jù)庫篇
- Windows 2008安裝動易.NET系統(tǒng)之二----IIS、目錄環(huán)境配置篇
- 數(shù)據(jù)庫修復,SQL Server 2005內部操作不一致的處理
- 如何安裝動易.net程序權限配置
- 為什么提示對Windows系統(tǒng)文件夾下的Temp目錄沒有訪問權限?
- 相關鏈接:
- 教程說明:
動易Cms教程-解析SW6.6中調用外部FLV視頻的問題
。