【问题标题】:view flv video by servletvideo java通过servletvideo java查看flv视频
【发布时间】:2011-09-16 17:28:19
【问题描述】:

当我尝试从 webcontent 目录中的文件查看 jwplayer 中的视频时,它会显示并且我可以播放它,但是当我从数据库中读取 same 文件并以flv via servlet 它不显示。谁能帮帮我?

在 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();**

【问题讨论】:

  • 如果绕过 JWPlayer 从浏览器的地址栏直接调用 servlet 会发生什么?
  • @Mike - 我不太确定你将“在 Html 文件中:”移到哪里才有意义 - 它显然也是 servlet 代码,而它之前显然是 HTML。
  • 实际上,当我编辑它时,它是问题的最后一行,没有意义,所以我将它向上移动了一个块,但你是对的,但仍然不对。
  • 当我从浏览器的位置栏调用它时,它要求我打开或保存 flv 视频,但问题是如何在 JWPlayer 中播放 flv 视频,flv 文件与文件相同在数据库中,当我在 html 文件中输入以下文件时它可以工作:'/ThoughRecord18-8/file.flv',但是当我调用 servlet 文件时':'/ThoughRecord18-8/videoss?videoId=1',它不起作用是否有任何解决这个问题的方法

标签: java javascript jsf


【解决方案1】:

这不是 java 问题,JW Player 仅支持 HTTP 伪流和 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 Player 如何进行流式传输的信息。

如果您不希望用户等待获取所有内容,则需要使用其中一种流式传输机制。如果这不是问题,您可以考虑更改您的 servlet 以将文件写入 webcontent 目录中的某个位置,然后重定向到该文件或其他内容,但我不认为像这样写入响应流会做把戏。

【讨论】:

    猜你喜欢
    • 2013-12-09
    • 2011-07-30
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2012-04-08
    • 1970-01-01
    相关资源
    最近更新 更多