0

我正在使用 Magnolia CMS 来创建模板并使用 JWBox 和 JWPlayer 来实现视频播放器,以运行多种视频格式,如 mp4、webm、ogg 以及重要的 flash 回退。

我现在有一种情况,它不适用于某些浏览器,例如 Mozilla 和 Opera,但是如果我在普通的 html 文件上运行它,代码就可以工作

该代码是:

<!DOCTYPE html>

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>All</title>
<link rel="stylesheet" href="jwbox.css" media="screen">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.jwbox.js"></script>
<script type="text/javascript" src="jwplayer.js"></script>
<script type="text/javascript" src="video.js"></script>




</head>
<body>
<div class="jwbox" style="margin-bottom:-50px">
<img class="jwboxPosterImg" src="image.jpg"/>
<img class="jwboxPlayButton" alt="Play" width="50" style="position:relative;left:-155px;top:-75px;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)" title="Click to play" src="play_button.png"/>
<div class="jwbox_hidden">
<div  class="jwbox_content">
    <video id="" width="365" height="266" controls="controls" poster="image.jpg">
    <source src="testvid.ogv" type="video/ogv" />
    <source src="testvid.webm" type="video/webm" />
    <source src="testvid.mp4" type="video/mp4" />
    <object type="application/x-shockwave-flash" width="640" height="480" wmode="transparent" data="player.swf?file=testvid.mp4&autostart=true&image=image.jpg">
    <param name="movie" value="player.swf?file=testvid.mp4&autostart=true&image=image.jpg"/>
    <param name="wmode" value="transparent" />
    </object>

    </video>
 </div>
 </div>
 </div>
 <br>
 <div class="jwbox" style="margin-bottom:-50px">
<img class="jwboxPosterImg" src="image.jpg"/>
<img class="jwboxPlayButton" alt="Play" width="50" style="z-index:1003;position:relative;left:-155px;top:-75px;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)" title="Click to play" src="play_button.png"/>
<div class="jwbox_hidden">
<div  class="jwbox_content">
    <video id="" width="365" height="266" controls="controls" poster="image.jpg">
    <source src="testvid.ogv" type="video/ogv" />
    <source src="testvid.webm" type="video/webm" />
    <source src="testvid.mp4" type="video/mp4" />
    <object type="application/x-shockwave-flash" width="640" height="480" wmode="transparent" data="player.swf?file=testvid.mp4&autostart=true&image=image.jpg">
    <param name="movie" value="player.swf?file=testvid.mp4&autostart=true&image=image.jpg"/>
    <param name="wmode" value="transparent" />

    </object>
    <p>Your browser does not support the video tag. If want you can put fallback method instead of this line....</p>
    </video>
 </div>
 </div>
 </div>

 </body>

<script type="text/javascript">
var d = $('video');
for(i=0;i<d.length;i++){
    d[i].id="video_"+i;
}
setTimeout( function() {
    var ff = $('video');
    for(j=0;j<2;j++){
        jwplayer(ff[j].id).setup({
            height: 480, 
            width: 640, 
            autostart:true,
            modes: [ 
            { type: "html5" }, 
            { type: "flash", src: "player.swf" }, 
            { type: "download" } 
            ] 
        }); 
    }
}, 500 );
</script>

 </html>

Magnolia 在 Mozilla/Opera 上运行时抛出的异常是(适用于 IE/Chrome/Safari):

2011-09-08 13:46:15,460 错误 info.magnolia.module.dms.DMSDownloadServlet:下载时出错

ClientAbortException:  java.net.SocketException: Connection reset by peer: socket write error

        at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)

        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:323)

        at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)

        at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)

        at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)

        at info.magnolia.module.dms.DMSDownloadServlet.sendUnCompressed(DMSDownloadServlet.java:123)

        at info.magnolia.module.dms.DMSDownloadServlet.handleResourceRequest(DMSDownloadServlet.java:108)

        at info.magnolia.module.dms.DMSDownloadServlet.process(DMSDownloadServlet.java:184)

        at info.magnolia.module.dms.DMSDownloadServlet.doGet(DMSDownloadServlet.java:74)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

        at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:119)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:66)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:69)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:57)

        at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:147)

        at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:75)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.module.extendedtemplatingkit.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:94)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:64)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:88)

        at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:77)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:51)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)

        at info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:86)

        at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:102)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:120)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)

        at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:66)

        at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)

        at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:105)

        at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:216)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)

        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

        at java.lang.Thread.run(Thread.java:619)

Caused by: java.net.SocketException: Connection reset by peer: socket write error

        at java.net.SocketOutputStream.socketWrite0(Native Method)

        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

        at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:741)

        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432)

        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347)

       at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:765)

        at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118)

        at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:574)

        at org.apache.coyote.Response.doWrite(Response.java:560)

        at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:353)

        ... 76 more

给我一个解决方案...

提前致谢...

4

3 回答 3

1

这个问题已有两年之久,当时 DMSDownloadServlet 无法提供具有“字节范围支持”的内容(请参阅MAGNOLIA-3855)。我记得有完全相同的问题。

Magnolia 现在在过滤器链中有一个名为“范围”的过滤器info.magnolia.cms.filters.RangeSupportFilter,这应该可以解决这些问题。

于 2014-01-13T10:14:29.273 回答
0

您在日志中看到的异常是客户端关闭与服务器的连接或网络设备终止连接的结果(例如限制吞吐量或更可能限制连接寿命的古怪防火墙)。上游代理 Web 服务器也可能是问题所在。在任何一种情况下,我都会先在客户端上诊断问题,然后在 Magnolia 本身之前诊断防火墙。

该异常在服务器日志中很常见,因为它是在浏览器中止连接时引发的,例如当用户单击浏览器中的停止按钮时。

于 2011-09-13T14:26:29.173 回答
0

当 Magnolia 的 DMS 尝试向其提供内容时,该错误似乎表明 JWPlayer 正在重置连接。我不确定为什么会这样,除非它可能期望能够进行HTTP 部分获取,并且对 Magnolia 的 DMS 下载 servlet 不提供该功能感到愤怒。

如果是我,我可能会尝试将Wireshark或类似的东西放在服务器和客户端之间的连接上,看看不同浏览器会发生什么不同。

于 2011-09-08T14:00:57.970 回答