我正在使用@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 为"is",为什么 servlet 不流式传输视频?
3) 如果 1 为否,我如何使用 JSP/Java 流式传输视频?
最佳答案
许多媒体播放器要求服务器支持所谓的 HTTP 范围请求。 IE。它必须能够根据请求返回媒体文件的特定字节范围 Range
header 。例如,对于 10MB 长的文件,仅包含索引 1000 到 2000 处的字节。这对于许多媒体播放器来说是强制性的,以便能够足够快地跳过媒体流的特定范围和/或通过创建多个连接(每个连接请求文件的不同部分)来提高缓冲速度。
然而,servlet 中存在大量附加代码,需要充分了解 HTTP Range
规范。提供了一个可用的示例 file servlet由您找到的图像 servlet 的同一作者编写。
请注意,容器的内置默认 servlet 通常也支持此功能。因此,如果有机会,您也可以将媒体文件直接放入 Web 应用程序本身,或者将包含媒体文件的文件夹作为新的 Web 应用程序上下文添加到服务器配置中,以便可以通过 URL 直接使用它,而不需要对于本地开发的 servlet。
关于java - JSP 视频流(使用 Servlet),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13650285/