3

可能重复:
如何将 MP3 流式传输到 HTML5 播放器,例如 Accessible Audio Player

我正在开发一个 Java 解决方案来为 HTML5 页面执行 MP4 视频交付。该解决方案检查用户是否已登录,以及是否开始向用户提供视频。

我的代码在我的带有 Eclipse Indigo 和 Tomcat 6 的笔记本电脑上正常工作,我可以毫无问题地播放视频,但是当我将它以 WAR 文件的形式传送到我的生产服务器(Tomcat 6+Debian)时,我无法播放视频我的导航器(谷歌浏览器)。如果我通过 Chrome 的开发人员模式检查标题,我会看到一切正常,我们可以在“网络选项卡”中看到它正在从服务器下载的视频,但它没有出现在窗口上。

我的servlet的代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    HttpSession sesion = request.getSession();      
    try
    {
        Integer idUsuario = (Integer) sesion.getAttribute("ID_USUARIO");
        Integer vID = Integer.parseInt((String) request.getParameter("vID"));
        if (idUsuario != null && idUsuario > 0 && vID != null && vID > 0)
        {
            VideoService servVideo = new VideoService();
            TipoVideo video = new TipoVideo();
            video = servVideo.obtieneVideo(vID);
            String ruta = "/home/video/vod/";
            String[] litVideo = video.getLiteralVideo().split(":");
            if (litVideo.length > 1)
            {
                ruta = ruta.concat(litVideo[1]);
            }
            else
            {
                ruta = ruta.concat(litVideo[0]);
            }
            if (ruta != null && !ruta.isEmpty() && ruta.length()>2)
            {   
                java.io.File fichero = new java.io.File(ruta);
                java.io.FileInputStream fileInputStream = new java.io.FileInputStream(fichero);                 
                response.setContentType("video/mp4");   
                response.setHeader("Content-Length", Long.toString(fichero.length()));
                log("Antes: " + Long.toString(fichero.length()));
                response.setContentLength(Integer.parseInt(Long.toString(fichero.length())));
                log("Pasamos la petición");
                ServletOutputStream op = response.getOutputStream();
                int i;
                while ((i=fileInputStream.read()) != -1) 
                {
                 //out.write(i);
                    op.write(i);
                }       
                fileInputStream.close();
                op.flush();
                op.close();
                return; 
            }
        }
        else
        {
            response.getWriter().println("ACCESO DENEGADO");
            log("Acceso denegado");
        }
    }
    catch (NumberFormatException nfex)
    {
        response.getWriter().println("nfex: " + nfex.getMessage());
        log("nfex: " + nfex.getMessage());          
    }
    catch (ServicioException servEx)
    {
        response.getWriter().println("servEx: " + servEx.getMessage());
        log("servEx: " + servEx.getMessage());
    }
    catch (Exception ex)
    {
        response.getWriter().println("Excepción: " + ex.getMessage());
        log("Excepción: " + ex.getMessage());
    }
       }

在我的生产服务器中,我有默认的 tomcat 6 配置。机器上没有安装其他应用程序或 Web 服务器。

任何人都知道这里出了什么问题或者我该如何解决?

4

0 回答 0