通过servletvideo java查看FLV视频

view flv video by servletvideo java

本文关键字:FLV 视频 查看 java servletvideo 通过      更新时间:2023-09-26

当我尝试从webcontent目录中的文件查看jwplayer中的视频时,它显示出来,我可以播放它,但是当我从数据库中读取相同的文件并通过servlet响应flv时,它不会显示出来。有人能帮我吗?

在Html文件:

    <script type='text/javascript' src='/ThoughRecord18-8/jwplayer.js'></script>

    <script type='text/javascript'>
  jwplayer('mediaspace').setup({
    'flashplayer': '/ThoughRecord18-8/player.swf',
    'file': '/ThoughRecord18-8/videoss?videoId=1',
    'controlbar': 'bottom',
    'width': '470',
    'height': '320'
  });
</script>

, servlet是

String videoId = request.getParameter("videoId");
        if (videoId != null || !videoId.equals("")) {
            VideoDao dao = new VideoDao();
            Video video = dao.getVideo(videoId);
            Blob blob = video.getVideoBlob();
            byte[] buf = new byte[1024];
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            InputStream in = null;
            int len;
            try {
                len = (int) blob.length();
                byte[] rb = new byte[len];
                InputStream readImg = blob.getBinaryStream();
                int index = readImg.read(rb, 0, len);

            response.reset();
            response.setBufferSize(DEFAULT_BUFFER_SIZE);
            response.setContentType("video/x-flv");
            response.setContentLength(rb.length);
             response.setHeader("Content-Disposition", "inline; filename=file.flv");
            byte[] content = new byte[DEFAULT_BUFFER_SIZE];
            BufferedInputStream is = new BufferedInputStream(
                    new ByteArrayInputStream(rb));
            OutputStream os = response.getOutputStream();
            while (is.read(content) != -1) {
                os.write(content);
            }
            is.close();
            os.close();**

这不是java问题,JW Player只支持HTTP Psuedo流和RTMP流。它们都有自己的协议——你不能只在上面传输纯粹的内容。看看这个页面:http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/12534/video-delivery-http-pseudo-streaming,和这个页面:http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/12535/video-delivery-rtmp-streaming关于JW播放器如何做流媒体的信息。

如果您不希望用户必须等待才能获得所有内容,则需要使用其中一种流媒体机制。如果这不是一个问题,你可以考虑改变你的servlet写文件在你的webcontent目录的某个地方,然后做一个重定向到文件或其他东西,但我不认为写到响应流像这样会做的技巧。