重複の可能性:
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 サーバーはありません。
ここで何が失敗しているのか、またはどうすれば修正できるのか、誰にも分かりますか?