在服务器上托管视频并在jsp页面上播放它们

时间:2013-11-09 05:32:58

标签: java jsp servlets video video-streaming

我想在jsp页面上嵌入并播放视频文件。 我做了什么,我做了一个jsp,我把下面的标签放在那个:

<EMBED SRC="${pageContext.request.contextPath}/home/Hibernate.mp4" WIDTH="200" HEIGHT="100" AUTOPLAY="TRUE" LOOP="true"></EMBED>

但问题是它总是试图在我的war文件中找到视频,即如果我将视频保存在我的war文件中,如下文件夹结构/home/Hibernate.mp4那么只有我可以播放它。

但是我需要在我的jsp上播放很多视频,所以想在我的服务器上保存所有视频。

那么我应该怎么做才能玩这些。我应该使用servlet然后读取视频的字节并将它们放在out.println ...

请帮忙。

1 个答案:

答案 0 :(得分:0)

你需要一个servlet人 考虑将电影放在/home/movie路径下的服务器上 因此,您需要提供一个servlet,用于打开所需的电影并将其响应给客户端 例如,客户请求http://127.0.0.1:8080/showmov?name=pulse1995.mpg
这里/showmov是一个servlet,这个servlet只获取请求参数(id)并在影片文件夹内搜索并对其进行响应。

package test;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/showmov")
public class ShowMovie extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id=request.getParameter("id");
        if(id!=null && !id.equals("")){
          FileInputStream fis=new FileInputStream("/home/moview/"+id);
          response.setContentType("movie/mpeg");//not sure about this mime type
          response.setContentLength((int) fis.getChannel().size());
          int r;
          byte[] buff=new byte[1024];
          while((r=fis.read(buff))==buff.length){
            response.getOutputStream().write(buff);
          }
          response.getOutputStream().write(buff,0,r);
          response.getOutputStream().flush();
        }else{
          //maybe show a list
        }
    }
}