2011-09-16 26 views
1

當我試圖從webcontent目錄中的文件中觀看jwplayer中的視頻時,它顯示出來並且我可以播放它,但是當我從數據庫中讀取相同的文件並響應一個通過servlet的flv不會顯示出來。誰能幫我?查看flv視頻由servletvideo java

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

如果您繞過JWPlayer直接從瀏覽器的位置欄中調用servlet,會發生什麼情況? –

+0

@Mike - 我不太清楚你在哪裏移動「在Html文件中:」有意義 - 它顯然也是servlet代碼,而之前它在HTML之前。 – Flexo

+0

實際上,當我編輯它時,這是問題的最後一行,沒有任何意義,所以我將它移動了一個塊,但是你說得對,那還是不對的。 –

回答

0

這不是Java的問題,JW播放器只支持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目錄中的某個地方寫文件,然後重定向到文件或其他東西,但我不認爲寫入響應流就像這樣做招。

+0

有沒有其他玩家可以使用這個servlet? – samimvp