搭建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格式就只能闻其声,不能见其图了。

 

(不知道为什么,难道是播放器的问题,希望知道的朋友,告诉我。谢谢)

 

还有个疑问是,乱码问题虽然解决了,但是我传上去的中文名的文件,不能播放。很让我郁闷。如果改成英文名或数字的都可以播放。

 

(不知道为什么,难道是配置文件出错,希望知道的朋友,告诉我。谢谢)

 

还有就是我刚入门,对在线编辑器了解比较少,不知道其他的在线编辑器在在线视频方面有没有长处或者优点。

 

(希望前辈赐教)

 

其他的格式都没有试(有些格式的视频没有,也懒得下),应该问题都不大。

 

本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2008/07/27/1252842.html,如需转载请自行联系原作者

相关文章
|
开发工具 数据安全/隐私保护 git
记录一次使用git工具拉取coding上代码密码账号错误的经历
这篇文章记录了作者在使用Git工具从Coding平台克隆项目时遇到的账号密码错误问题,并分享了通过清除电脑凭证中错误记录的账号密码来解决这个问题的方法。
记录一次使用git工具拉取coding上代码密码账号错误的经历
|
数据采集 机器学习/深度学习 算法
数据清洗过程中,如何确定哪些数据是异常
数据清洗过程中,如何确定哪些数据是异常
|
监控 机器人 API
利用阿里云 RPA 实现自动化报告生成
在当今数字化的时代,企业和组织面临着大量的数据和信息处理需求。为了提高工作效率和准确性,自动化技术的应用变得越来越重要。阿里云 RPA(机器人流程自动化)是一种强大的工具,可以帮助我们实现报告生成的自动化。本文将介绍如何利用阿里云 RPA 实现自动化报告生成。
|
机器学习/深度学习 算法
ATFNet:长时间序列预测的自适应时频集成网络
ATFNet是一款深度学习模型,融合时域和频域分析,捕捉时间序列数据的局部和全局依赖。通过扩展DFT调整周期性权重,结合注意力机制识别复杂关系,优化长期预测。模型包含T-Block(时域)、F-Block(频域)和权重调整机制。实验证明其在时间序列预测任务中表现优越,已发布于arXiv并提供源代码。
574 4
|
存储 人工智能 安全
保障隐私的Elasticsearch AI搜索解决方案
【8月更文第28天】随着大数据和人工智能技术的发展,搜索引擎在日常生活中扮演着越来越重要的角色。然而,用户隐私保护成为了一个不容忽视的问题。本文将探讨如何在确保用户数据隐私的同时,利用Elasticsearch实现智能搜索功能。我们将介绍一种综合方案,该方案结合了加密技术、差分隐私、匿名化处理以及安全多方计算等方法,以保障用户数据的安全性
757 0
|
机器学习/深度学习 自然语言处理 文字识别
【博士每天一篇文献-综述】Modularity in Deep Learning A Survey
这篇文章是一篇综述,探讨了深度学习中的模块化概念,包括数据、任务和模型的模块化,并分析了模块化在提高模型设计、解释性、泛化能力等方面的优势和应用。
166 0
|
测试技术 Python
图形化渗透测试工具 -- GUI_Tools
图形化渗透测试工具 -- GUI_Tools
367 0
|
测试技术 Go
|
Java iOS开发 MacOS
使用JDK自带的keytool工具生成签名文件
使用JDK自带的keytool工具生成签名文件
183 0