您发现的servlet实际上不适合用于流传输视频文件。它更适合作为简单文件下载servlet,用于处理PDF,XLS等静态文件。
许多视频播放器要求服务器支持所谓的HTTP范围请求。也就是说,它必须能够通过带有Range
标头的请求返回视频文件的特定字节范围。例如,在10000字节长的文件上,只有从索引1000到2000的字节。这是必须的,以便能够足够快地跳过视频流的特定范围,而无需下载整个文件和/或通过创建多个HTTP连接来提高缓冲速度,每个请求都请求视频文件的不同部分。
但是,这是servlet中的许多其他代码,需要对HTTPRange
规范有充分的了解。由您发现的文件Servlet的同一作者以扩展文件servlet的形式提供了一个立即可用的示例。在您的特定情况下,建议您首先将文件保存到基于本地磁盘文件系统的缓存中(例如,通过File#createTempFile()
HTTP会话中的某个键),这样就无需一次又一次从外部服务获取文件。