当我尝试在webcontent目录中的文件中查看jwplayer中的视频时,它会显示并且我可以播放它,但是当我从数据库中读取相同的文件并使用flv通过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();**
答案 0 :(得分:0)
这不是java问题,JW Player仅支持HTTP Psuedo Streaming和RTMP Streaming。它们都是他们自己的协议 - 你不能只是流传输纯粹的内容。请查看此页面: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目录中的某处写入文件,然后重定向到文件或其他内容,但我不认为写入响应流就像这样做特技。