搭建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,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 前端开发 JavaScript
基于Web的线上影院订票系统的设计与实现
基于Web的线上影院订票系统的设计与实现
|
5月前
|
设计模式 前端开发 Java
SpringMvc文件上传下载一条龙服务教会你
SpringMvc文件上传下载一条龙服务教会你
61 0
|
3月前
|
Web App开发 Java 关系型数据库
javaWeb在线考试系统
javaWeb在线考试系统
|
4月前
|
前端开发 JavaScript Java
第一站:探索JavaWeb的神秘世界
第一站:探索JavaWeb的神秘世界
47 0
|
Web App开发 编解码 算法
【青训营】-🎨走进Web多媒体技术
【青训营】-🎨走进Web多媒体技术
194 1
【青训营】-🎨走进Web多媒体技术
|
移动开发 前端开发 JavaScript
【中兴】web训练营~一文带你走进前端 | 百图制作
【中兴】web训练营~一文带你走进前端 | 百图制作
189 0
|
前端开发 JavaScript 小程序
如此详细的 Servlet 教程,不来看看么?
如此详细的 Servlet 教程,不来看看么?
88 0
如此详细的 Servlet 教程,不来看看么?
|
开发框架 Java 数据库连接
Servlet开发搭建
搭建一个基本的 Servlet 开发框架,便于后续地快速开发。只适用于 Servlet 阶段。 特点: 自定义的 BaseDao,BaseDaoImpl,BaseServlet, 用 beanutils 来封装前台传入参数。
126 0
Servlet开发搭建
|
缓存 分布式计算 负载均衡
JavaWeb网站性能优化的相关技术
  一、提高服务器并发处理能力   我们总是希望一台服务器在单位时间内能处理的请求越多越好,这也成了web服务器的能力高低的关键所在。服务器之所以可以同时处理多个请求,在于操作系统通过多执行流体系设计,使得多个任务可以轮流使用系统资源,这些资源包括CPU、内存以及I/O等。这就需要选择一个合适的并发策略来合理利用这些资源,从而提高服务器的并发处理能力。这些并发策略更多的应用在apache、nginx、lighttpd等底层web server软件中。   二、Web组件分离   这里所说的web组件是指web服务器提供的所有基于URL访问的资源,包括动态内容,静态网页,图片,样式表,脚
101 0
|
Java 开发工具
JavaWeb学习之路(3)--网站与网页
本文目录 1. 什么是网站 2. 什么是网页 3. 网页是怎么开发的 4. 小结
100 0