1

我正在使用@BalusC 图像 servlet http://balusc.blogspot.com/2007/04/imageservlet.html在我的网站上提供图像。事实证明,这个 servlet 是通用的,所以它最终也提供文档(如 PDF 文件),但它似乎不适用于视频。我目前正在使用http://videojs.com作为库来重现视频。

我有两个网站,一个在 Amazon S3 上托管上传的文件,另一个在本地托管文件。当文件托管在 S3 上时,视频流工作正常(没有 servlet,您只需指向 video.js 的视频 url)

但是,当尝试流式传输本地存储的文件(因此需要一个 servlet)时,视频根本不会再现。

问题:

1) 创建一个 servlet 来流式传输视频是否可以接受?

2) 如果 1 是肯定的,为什么 servlet 不流式传输视频?

3) 如果不是 1,我如何使用 JSP/Java 流式传输视频?

4

1 回答 1

2

许多媒体播放器要求服务器支持所谓的 HTTP 范围请求。即,它必须能够根据请求返回带有Range标题的媒体文件的特定字节范围。例如,在 10MB 长的文件中,只有索引 1000 处的字节直到 2000 为止。这对于许多媒体播放器来说是强制性的,以便能够足够快地跳过特定范围的媒体流和/或通过创建多个连接来提高缓冲速度,每个连接都请求文件的不同部分。

然而,这是 servlet 中的大量附加代码,需要对 HTTPRange规范有很好的理解。由您找到的图像 servlet 的同一作者提供了一个现成的示例,以适应此文件 servlet 。

请注意,容器的内置默认 servlet 通常也支持这一点。因此,如果您有机会,您也可以将媒体文件直接放在 webapp 本身中,或者将带有媒体文件的文件夹作为新的 webapp 上下文添加到服务器配置中,这样就可以通过 URL 直接使用它而无需对于一个本土的servlet。

于 2012-11-30T19:04:04.537 回答