相信有很多朋友和我們一樣,用動易SW做了視頻頻道,早先的時候不管是自己上傳還是外站引用,如今由于播客的興起和flv的盛行,在原來用SW做的視頻頻道中引用外部flv已經有了很現實的意義。比如我們網站是采用了oblog開發的Oblog Video系統。
以前一直采用動易系統來做視頻新聞,現在當然更愿意選擇具有自動編譯flv格式和隱藏原始地址功能的vlog了(早先用mms和直接上傳的方式,造成我們一個視頻文件被人在貓撲上用做簽名,幾乎吃光我們整個機柜的帶寬……)。
但是原來的視頻頻道也必須繼續運作下去。于是理所當然的想到了在SW中直接引用vlog的flv視頻。一個vlog的標準flash引用地址如下:
我們直接把這個swf格式的外部地址插入到動易的“軟件”頻道。保存沒問題,但是發現不能觀看?;氐胶笈_編輯,發現引用的一個外部地址被拆成了兩行——很不幸的問題——vlog的分隔符“$$$”正好和動易的多地址分隔符“$$$”沖突了。
于是直接添加外部URL不可能了。于是我們又換了個思路:在軟件簡介中添加flash,制作一個新的內容頁模板,不使用DownloadUrl。這個方案應該是沒有問題的,不過我沒有去做就否決了。因為第一、動易后臺添加軟件時地址不能為空,第二、既然用軟件頻道來做視頻,卻要以文章頻道的方式添加視頻源,這個方案很爛。
我采用的方式是:添加了一個自定義字段,命名為FlvUrl。添加視頻時,如果是傳統視頻,照老樣子操作,如果是flv格式視頻,在視頻地址處填寫“vlog”即可。然后把上面的那段URL填寫到自定義選項的“FlvUrl”里面。
可以考慮在ShowDownload.asp里直接讀取和使用這個字段,但是這樣會破壞系統的通用性。我的做法是在內容頁模板里改,原來我們在內容頁里用一個Iframe引用ShowDownload.asp來實現嵌入式播放,代碼為:
以下內容為程序代碼:
|
在ShowSoftDown.asp里原來就有根據后綴判斷調用下載地址和實時播放的代碼。我們增加了一個判斷,如果DownloadUrl里含有“vlog”字樣,則采用嵌入flash的方式來調用真實地址。實現在線播放。但是我們需要自定義字段的值。在動易系統里,我們添加的“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")來獲取。
搞開發的朋友肯定已經意識到了將要出現的問題,我們的參數值里含有“&”符號,于是最前面我給出的那個flash地址在傳遞和獲取之后,只剩下了第一個&符號前面的部分。
沒辦法,這個問題只能繼續下去,打開include/PowerEasy.Soft.asp文件,找到GetHtml_Soft()這個函數,這是用來根據內容頁模板生成內容頁的代碼。我的目的是在輸出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"參數值里。
測試結果:效果很好,內嵌的flash播放器就是vlog提供的具有全屏、隨意拖動、隨意變換電影風格、可控制進度、可暫停、可調音量的flash播放器。視頻源地址依然是隱藏(對大多數訪問者而言)。
附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/ |
新聞熱點
疑難解答
圖片精選