平時都是做C/S開發,最近需要維護一個協會門戶網站。
文章編輯使用CKEditor 3.3.2 + ckfinder 2.0的方案。可是這種方案居然不支持FLV視頻播放,度娘說以前的老版本是支持的,這到了新版本咋反而不支持了呢。
網上給出的方案都是為CKEditor開發FLV視頻播放插件,最初采用了這種方案,但是都沒能實現,不知道是哪出了問題,可能是給出的方案本身有bug。
無奈,自己琢磨有沒有別的辦法。難道非得寫插件么?No!
經過測試,發現只需要一個支持播放FLV視頻的SWF播放器,然后對CKEditor 生成的代碼稍作修改即可。
CKEditor 生成的代碼如下。
<embed pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="/flash/material/2014/04/1.flv" type="application/x-shockwave-flash"> </embed> |
只需要修改為下面這樣即可播放FLV視頻
<embed pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="flvplayer.swf?vcastr_file=/flash/material/2014/04/1.flv" type="application/x-shockwave-flash"> </embed> |
這里flvplayer.swf 指的是flvplayer.swf 的完整路徑名。
接下來只要對CKEditor稍作修改就能生成我們想要的代碼了 。
首先,將flvplayer.swf 播放器拷貝到如下圖所示的flash目錄下。打開flash目錄下的dialogs目錄,找到flash.js 文件,這就是我們要修改的文件。
你如果打開了這個文件,會發現無從下手,因為這個是壓縮后的文件。
我們還得去_source 目錄下找到未壓縮的源文件,找到打開如下。
看了上面的代碼,我們發現只要對embed 標簽的src 屬性值進行修改即可。但是和embed 標簽相關的很多,該從哪下手呢。
經過很多次調試,定位到了166行。166行中的value就是src 屬性的值,對它進行修改就可以了。
在"embedNode.setAttribute(attrDef.name, value);"之前加上這么一個判斷就行了。
if (attrDef.name === "src") { value = "/Ck/ckeditor/plugins/flash/Flvplayer.swf?vcastr_file=" + value; } |
然后,我們對修改后的js文件進行壓縮並替換plugins下flash中的相應文件即可。
播放器效果圖如下,還不錯吧。當然,播放器還有一些參數可以設置。
例如:
autostart (是否允許自動播放,"true"或者"false")
image (未播放時的預覽圖片,只支持JPEG格式)
repeat (是否重復播放)
clicktext (開始時顯示的文字,默認是"click to play")
想了解更多的參數,問度娘吧。
大功告成。是不是很簡單。
可能還有更好的方法,歡迎大家拍磚。