这篇文章主要介绍了解决html5中的录像标签ios系统中无法播放使用的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
1.先是从前端的角度去考虑,如何让旅行队浏览器兼容视频,并支持播放(未找到解决的方法)。
2.经多次查找网上信息,发现使用后台能解决该问题,解决点在超文本传送协议协议的响应头里面(接受范围).
3 .狩猎浏览器,在打开视频的时候,先是发送一个请求探测文件的大小,之后再多次发送请求分段获取数据流的数据(个人理解大概是分段下载接受范围).
4.想要解决这种问题要考虑两个方面:
a.需要根据请求内容的不同做出不同的响应,第一次探测请求需要返回200,后面的请求需要返回206和具体数据
乙。内容类型必须设置为视频/mp4
5.具体代码
这里已经封装好了,直接拿过来使用就好的了。
私有void发送视频(http servlet请求请求,HttpServletResponse响应,文件文件,字符串文件名)抛出FileNotFoundException,IOException {
随机存取文件random file=新的随机存取文件(file,’ r ‘);//只读模式
长内容长度=随机文件。长度();
字符串范围=请求。获取标题(“范围”);
int start=0,end=0;
如果(范围!=空范围。以(‘ bytes=’)开头{
string[]值=范围。split(‘=’)[1].拆分(‘-‘);
start=整数。parse int(values[0]);
if(values.length 1){
end=整数。parse int(values[1]);
}
}
int请求大小=0;
如果(结束!=0结束开始){
请求大小=结束-开始1;
}否则{
请求大小=整数最大值
}
回应。设置内容类型(“视频/MP4”);
回应。设置标题(“接受范围”,“字节”).
response.setHeader(‘ETag ‘,文件名);
response.setHeader(‘上次修改时间,新日期()。toString());
//第一次请求只返回内容长度来让客户端请求多次实际数据
if(range==null){
回应。set header(“Content-length”,内容长度“”);
}否则{
//以后的多次以断点续传的方式来返回视频数据
回应。设置状态(http servlet响应.SC _ PARTIAL _ CONTENT);//206
长请求开始=0,请求结束=0;
字符串[]范围=范围。拆分(‘=’);
if(ranges.length 1){
String[] rangeDatas=ranges[1].拆分(‘-‘);
请求开始=整数。parse int(range datas[0]);
if(rangeDatas.length 1){
请求结束=整数。parse int(range datas[1]);
}
}
长长度=0;
if(requestEnd 0){
长度=请求结束-请求开始1;
回应。set header(‘ Content-length ‘,’ ‘ length);
回应。set头(‘ Content-Range ‘,’ bytes ‘请求开始’-‘请求结束’/’ contentLength);
}否则{
长度=内容长度-请求开始;
回应。set header(‘ Content-length ‘,’ ‘ length);
回应。set header(‘ Content-Range ‘,’ bytes ‘ request start ‘-‘(contentLength-1)’/’ contentLength);
}
}
ServletOutputStream out=response。获取输出流();
int needSize=requestSize
随机文件。seek(开始);
while(needSize 0){
字节[]缓冲区=新字节[4096];
int len=随机文件。读取(缓冲区);
if(needSize buffer.length){
out.write(buffer,0,needSize);
}否则{
out.write(buffer,0,len);
if(len buffer.length){
打破;
}
}
needSize-=缓冲区。长度;
}
随机文件。close();
出去。close();
}
总结
到此这篇关于解决html5中的录像标签ios系统中无法播放使用的问题的文章就介绍到这了,更多相关html5中的录像标签ios系统无法播放内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
来源:脚本之家
链接:https://www。jb51。net/html 5/739765。超文本标记语言