搭建Servlet在线视频
這個視頻flash上傳及在線播放,搞了我一天了,總算有點成果,但還有一些疑問沒有解決,現在發這篇隨筆,為的就是交流視頻在線上傳和觀看的一些問題。
?
在線編輯器使用FCKEditor,首先是修改FCKEditor的配置文件,目的是實現多格式播放和配置播放器。這方面網上的資料很多,很容易查到,下面補充上來吧。
?
***************************FckEditor上傳音頻視頻*****************************
???????? 軟件版本:FckEditor2.6.2;平臺:Windows XP;數據庫:MySQL。
1.? 分別打開editor/js文件夾下的fckeditorcode_ie.js、fckeditorcode_gecko.js文件。將代碼:
||/\.swf($|#|\?)/i.test(A.src)
替換為:
||/\.swf($|#|\?)/i.test(A.src)||/\.mpg($|#|\?)/i.test(A.src)||/\.asf($|#|\?)/i.test(A.src)||/\.wma($|#|\?)/i.test(A.src)
||/\.wmv($|#|\?)/i.test(A.src)||/\.avi($|#|\?)/i.test(A.src)||/\.mov($|#|\?)/i.test(A.src)||/\.mp3($|#|\?)/i.test(A.src)
||/\.rmvb($|#|\?)/i.test(A.src)||/\.mid($|#|\?)/i.test(A.src)
這段代碼用來判斷文件后綴名,當然文件格式可以自定義,不過要考慮和其他地方相吻合。
2. 打開/editor/dialog/fck_flash/fck_flash.js文件。
2.1 增加以下程序代碼,用來判斷文件后綴名:
function WinPlayer(url){
?var r, re;
?re = /.(avi|wmv|asf|wma|mid|mp3|mpg)$/i;
r = url.match(re);
return r;
}
function RealPlayer(url){
var r, re;
re = /.(.rm|.ra|.rmvb|ram)$/i;
r = url.match(re);
return r;
}
function QuickTime(url){
var r, re;
re = /.(mov|qt)$/i;
r = url.match(re);
return r;
}
function FlashPlayer(url){
var r, re;
re = /.swf$/i;
r = url.match(re);
return r;
}
?
2.2 替換兩個地方的代碼:一個在UpdatePreview()中,將:
SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
替換為:
if(WinPlayer(GetE('txtUrl').value)!=null){
SetAttribute( e, 'type', 'application/x-mplayer2' ) ;
}
if(RealPlayer(GetE('txtUrl').value)!=null){
SetAttribute( e, 'type', 'audio/x-pn-realaudio-plugin' ) ;
}
if(QuickTime(GetE('txtUrl').value)!=null){
SetAttribute( e, 'type', 'application/video/quicktime' ) ;
}
if(FlashPlayer(GetE('txtUrl').value)!=null){
SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
SetAttribute( e, 'pluginspage', 'http://www.macromedia.com/go/getflashplayer' ) ;
}
另一個地方在UpdateEmbed()中,將: SetAttribute( e, 'type' , 'application/x-shockwave-flash' ) ;
SetAttribute( e, 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer' ) ;
替換為:
if(WinPlayer(GetE('txtUrl').value)!=null){
SetAttribute( e, 'type' , 'application/x-mplayer2' ) ;
SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
}
if(RealPlayer(GetE('txtUrl').value)!=null){
SetAttribute( e, 'type' , 'audio/x-pn-realaudio-plugin' ) ;
SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
}
if(QuickTime(GetE('txtUrl').value)!=null){
SetAttribute( e, 'type' , 'video/quicktime' ) ;
SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
}
if(FlashPlayer(GetE('txtUrl').value)!=null){
SetAttribute( e, 'type' , 'application/x-shockwave-flash' ) ;
SetAttribute( e, 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer' ) ;
}
?
3.打開/fckconfig.js文件,將:
FCKConfig.FlashUploadAllowedExtensions = ".(swf)$" ; // empty for all
替換為:
FCKConfig.FlashUploadAllowedExtensions = ".(swf|fla|mpg|asf|wma|wmv|avi|mov|mp3|rmvb|mid)$" ; // empty for all
????? 到此,基本功能已經完成。剩下的是一些細節的設置。
4. 其他設置
4.1 編輯框中文字的設置:打開/editor/lang/zh-cn.js 文件,將flash替換成想要顯示的文字。
4.2 默認的音頻視頻播放效果是循環、自動播放、帶操作menu的樣式,可以通過設置來顯示成想要的效果。方法還是在/editor/dialog/fck_flash/fck_flash.js文件,在UpdateEmbed()方法中,將對應的文件格式中的,
SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' )替換為:
SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'false' : 'true' ) ;
?
但是一定要非常細心的配置,否則很容易失敗。我就是在這上面費了很多時間,最后還是為了盡快搞好,借用了別人配置好的編輯器。
?
這時如果不出意外的話,如果從服務器上傳名字里帶中文的視頻,則會遇到播放目錄文件名亂碼的問題。解決方法:
?
問題1:
當點擊“插入/編輯圖像”或者“插入/編輯Flash”按鈕時,在彈出的對話框中選擇上傳按鈕,如果上傳的文件名為中文時會出現亂碼。
解決辦法:
?? 找到FCKeditor.java解壓包中的src目錄下SimpleUploaderServlet.java做如下修改:
?? 找到該程序中DiskFileUpload upload = new DiskFileUpload(),然后在該行下面添加
upload.setHeaderEncoding("UTF-8"),重新編譯成class文件并利用WinRAR把該class文件
添加到FCKeditor-2.3.jar中相應的位置,然后覆蓋你的web項目中原來的jar包便可。
?
問題2:
?? 當點擊“插入/編輯圖像”或者“插入/編輯Flash”按鈕時,在彈出的對話框中使用瀏覽
服務器按鈕上傳中文文件時會出現亂碼。
解決辦法:
?? 和問題1的解決辦法基本一樣,只不過需要在ConnectorServlet.java中添加
upload.setHeaderEncoding("UTF-8")便可。
問題3:
?? 當點擊“插入/編輯圖像”或者“插入/編輯Flash”按鈕時,在彈出的對話框中點擊瀏覽
服務器按鈕,會彈出“瀏覽服務器”頁面,如果想在該頁面中使用Create New Folder按鈕
來創建一個中文目錄時,會出現中文目錄亂碼。
解決辦法:
?? web容器的編碼要與FCKeditor默認的編碼UTF-8一致,如果使用的是Tomcat,需修改
tomcat服務器中conf目錄下的server.xml。如下:
?? <Connector port="8080" maxHttpHeaderSize="8192"
?????????????? maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
?????????????? enableLookups="false" redirectPort="8443" acceptCount="100"
?????????????? connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />
??? <Connector port="8009"
?????????????? enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="utf-8"/>
其實就是在原來的基礎上添加URIEncoding的屬性值為utf-8。
×?注:對于問題3,這種解決辦法不可取,最好不要去修改服務器的編碼,否則會影響到服務器上其它的工程。解決這個編碼的問題可以修改源代碼或者從新編寫一個類來處理。通過觀察打開的上傳瀏覽對話框可以找對對應的htm頁面和負責處理上傳文件名稱的com.fredck.FCKeditor.uploader. ConnectorServlet這個類,然后找到對應的參數,轉換編碼便可。如:String newFolderStr=request.getParameter("NewFolderName");
newFolderStr=new String(newFolderStr.getBytes("iso8859-1"),"utf-8");
?
?
我弄了一天,試了三種格式,但目前這個的東西只能看MPG,WMV格式的視頻文件,但是avi格式就只能聞其聲,不能見其圖了。
?
(不知道為什么,難道是播放器的問題,希望知道的朋友,告訴我。謝謝)
?
還有個疑問是,亂碼問題雖然解決了,但是我傳上去的中文名的文件,不能播放。很讓我郁悶。如果改成英文名或數字的都可以播放。
?
(不知道為什么,難道是配置文件出錯,希望知道的朋友,告訴我。謝謝)
?
還有就是我剛入門,對在線編輯器了解比較少,不知道其他的在線編輯器在在線視頻方面有沒有長處或者優點。
?
(希望前輩賜教)
?
其他的格式都沒有試(有些格式的視頻沒有,也懶得下),應該問題都不大。
?
而且聽說Java里可以寫命令行實現在線視頻格式轉換,這方面問題就要請教朱哥了。
?
希望盡快給予解答嘿嘿
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的搭建Servlet在线视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决T400死机的问题!
- 下一篇: 网吧电影服务器解决方案完全指南(一)