这可能是一个Servlets问题或
HTML5问题,具体取决于解决方案的结果…… 🙂
我有一个(Tomcat)Servlet提供音频的短片段,然后在HTML5音频元素中拾取.音频正确播放,但在某些浏览器上只播放一次(因此尝试“倒回”或重播音频不起作用).我怀疑这是因为我的Servlet没有报告它支持范围请求:我注意到在同一服务器上给定一个静态音频文件,Apache添加了HTTP“range-unit”响应头,然后重放该文件然后工作在这样的案例.所以我认为在我遇到问题的浏览器上,为了重放文件,浏览器会发出HTTP Content-Range请求,而不是缓冲整个文件或重新请求整个文件. (至少在Safari上,重放从我的Servlet提供的音频工作正常:我猜是因为Safari缓冲整个音频.)
所以我的问题:
> HTML中是否有一种方法可以请求浏览器在播放时缓冲整个音频文件以允许重放而不是服务器需要支持范围请求?
>如果没有,有没有人有任何响应来自Servlet的范围请求的经验?我假设它只是(a)响应初始请求发送“范围单位”响应代码,然后(b)寻找相关的HTTP请求标题(“内容范围?”)(我猜)这是他们如何处理?)后续请求,只提供音频的相关部分?我应该注意哪些陷阱?