3

重複の可能性:
MP3 を Accessible Audio Player などの HTML5 PLAYER にストリーミングする方法

HTML5 ページの MP4 ビデオ配信を実行する Java ソリューションを開発しています。ソリューションは、ユーザーがログに記録されているかどうかを確認し、ユーザーへのビデオの配信を開始するかどうかを確認します。

私のコードは Eclipse Indigo と Tomcat 6 を搭載したラップトップで適切に動作し、問題なくビデオを再生できますが、それを WAR ファイルで実稼働サーバー (Tomcat 6+Debian) に配信すると、ビデオを再生できませんマイナビ(Google Chrome)。Chrome の開発者モードでヘッダーを確認すると、すべて問題ないことがわかります。[ネットワーク] タブで、ビデオがサーバーからダウンロードされていることを確認できますが、ウィンドウには表示されません。

私のサーブレットのコードは次のとおりです。

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