发现问题
最近在开发一个小网站,需要支持在页面上播放视频资源(暂时没考虑流媒体服务器神马的,能正常播放就行)。于是在前端使用了HTML5的video
标签。并且配合projekktor播放器来实现。因为还在开发阶段,视频资源的映射就直接交给SpringMVC本身了。
video
的src如localhost:8080/web/resources/videos/aaaa.mp4
这样。同时在Spring中配置mvc:resources
映即可。诡异的事情来了,O_O……
在PC端浏览器打开的时候,视频可以正常播放,但是不能快进快退,使用移动设备iPhone之类的就连视频都播放不了。显示一个大大的叉。。。
问题查找
正好,之前同事有一套系统可以正常播放视屏,使用本地的projekktor直接播放远程资源发现一切正常。于是就排出了前端脚本的问题。
接下来对比了一下Http请求,在视频的Response中,发现了两个主要区别:1、context-type我这是’video/mp4;charshet=UTF-8’,而对方是’video/mp4’。2、对方的Response有range请求,而我的没有。
context-type
charset是我的SpringMVC的web.xml中设置了forceEncoding=true,并且把URIEncoding设置为了UTF-8。因此我单独写了个Controller,输出测试文件,同时将response的context-type改为’video/mp4’。此时再次调用projekktor直接请求这个地址,得到了’video/