我正在使用@BalusC图片servlet http://balusc.blogspot.com/2007/04/imageservlet.html在我的网站上提供图片。事实证明,这个servlet是通用的,因此它最终也会提供文档(如PDF文件),但它似乎对视频效果不佳。我目前正在使用http://videojs.com作为库来重现视频。
我有两个网站,一个主机在Amazon S3上传文件,另一个在本地托管文件。当文件在S3上托管时,视频流工作正常(没有servlet,你只需指向video.js的视频网址)
但是,当尝试流式传输本地存储的文件(因此需要servlet)时,视频将无法再现。
问题:
1)创建一个servlet来传输视频是否可以接受?
2)如果是1,为什么servlet不流式传输视频?
3)如果不是1,我怎样才能使用JSP / Java流式传输视频?
答案 0 :(得分:2)
许多媒体播放器要求服务器支持所谓的HTTP范围请求。即它必须能够根据请求使用Range
标头返回媒体文件的特定字节范围。例如,在10MB长的文件上只有完全索引1000的字节,直到2000。这对于许多媒体播放器是强制性的,以便能够足够快地跳过特定范围的媒体流和/或通过创建多个连接来提高缓冲速度,每个连接请求文件的不同部分。
然而,这是servlet中的许多附加代码,需要很好地理解HTTP Range
规范。您找到的图像servlet的同一作者在此file servlet的风格中提供了一个随时可用的示例。
请注意,容器的内置默认servlet通常也支持此功能。所以,如果你有机会,你也可以直接将媒体文件放在webapp本身,或者将带有媒体文件的文件夹作为新的webapp上下文添加到服务器配置中,这样它就可以直接通过URL获得而无需对于本土的servlet。