解决html5中的录像标签ios系统中无法播放使用的问
  • 作者:admin
  • 发表时间:2021-02-25 07:51
  • 来源:未知

这篇文章主要介绍了解决html5中的录像标签ios系统中无法播放使用的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1.先是从前端的角度去考虑,如何让野生动物考察浏览器兼容视频,并支持播放(未找到解决的方法)。

2.经多次查找网上信息,发现使用后台能解决该问题,解决点在超文本传送协议协议的响应头里面(接受范围).

3 .狩猎浏览器,在打开视频的时候,先是发送一个请求探测文件的大小,之后再多次发送请求分段获取数据流的数据(个人理解大概是分段下载,接受-范围).

4.想要解决这种问题要考虑两个方面:

a.需要根据请求内容的不同做出不同的响应,第一次探测请求需要返回200,后面的请求需要返回206和具体数据

b.contentType必须设置为视频/mp4

5.具体代码

这里已经封装好了,直接拿过来使用就好的了。

私有无效发送视频(HttpServletRequest请求,HttpServletResponse响应,文件文件,字符串文件名)引发文件未找到异常,IOException {

随机访问文件随机文件=新的随机访问文件(文件,' r ');//只读模式

长内容长度=随机文件。length();

字符串范围=请求。GetHeader(' Range ');

int start=0,end=0;

if(range!=null范围。以(' bytes=')开头

string[]值=范围。拆分('=')[1].split('-');

start=Integer.parseInt(值[0]);

if(values.length 1){

end=Integer.parseInt(值[1]);

}

}

int RequestSize=0;

if(end!=0结束开始){

request SiZe=end-start 1;

} else {

requestSize=整数最大值

}

回应。SetContentType(' video/MP4 ');

回应。setheader(' Accept-Ranges ',' bytes ');

response.setHeader('ETag ',fileName);

response.setHeader('上次修改,新日期()。toString());

//第一次请求只返回内容长度来让客户端请求多次实际数据

if(range==null){

回应。setheader('内容长度',内容长度' ');

}else{

//以后的多次以断点续传的方式来返回视频数据

回应。setstatus(HttpServletResponse .SC _ PARTIAL _ CONTENT);//206

long requestStart=0,RequestEnd=0;

string[]ranges=range。split('=');

if(ranges.length 1){

字符串[]范围数据=范围[1].split('-');

请求开始=整数。par sent(RangeDatas[0]);

if(rangeDatas.length 1){

请求结束=整数。par sent(RangeDatas[1]);

}

}

长长度=0;

if(requestEnd 0){