java解决ios视频无法播放的问题
private HttpServletResponse iosDownLoad(HttpServletRequest request, HttpServletResponse response, File file, String fileName) throws Exception {
RandomAccessFile randomFile = new RandomAccessFile(file, "r");//只读模式
long contentLength = randomFile.length();
String range = request.getHeader("Range");
int start = 0, end = 0;
if(range != null && range.startsWith("bytes=")){
String[] values = range.split("=")[1].split("-");
start = Integer.parseInt(values[0]);
if(values.length > 1){
end = Integer.parseInt(values[1]);
}
}
int requestSize = 0;
if(end != 0 && end > start){
requestSize = end - start + 1;
} else {
requestSize = Integer.MAX_VALUE;
}
byte[] buffer = new byte[4096];
response.setContentType("video/mp4");
response.setHeader("Accept-Ranges", "bytes");
response.setHeader("ETag", fileName);
response.setHeader("Last-Modified", new Date().toString());
//第一次请求只返回content length来让客户端请求多次实际数据
if(range == null){
response.setHeader("Content-length", contentLength + "");
}else{
//以后的多次以断点续传的方式来返回视频数据
response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);//206
long requestStart = 0, requestEnd = 0;
String[] ranges = range.split("=");
if(ranges.length > 1){
String[] rangeDatas = ranges[1].split("-");
requestStart = Integer.parseInt(rangeDatas[0]);
if(rangeDatas.length > 1){
requestEnd = Integer.parseInt(rangeDatas[1]);
}
}
long length = 0;
if(requestEnd > 0){
length = requestEnd - requestStart + 1;
response.setHeader("Content-length", "" + length);
response.setHeader("Content-Range", "bytes " + requestStart + "-" + requestEnd + "/" + contentLength);
}else{
length = contentLength - requestStart;
response.setHeader("Content-length", "" + length);
response.setHeader("Content-Range", "bytes "+ requestStart + "-" + (contentLength - 1) + "/" + contentLength);
}
}
ServletOutputStream out = response.getOutputStream();
int needSize = requestSize;
randomFile.seek(start);
while(needSize > 0){
int len = randomFile.read(buffer);
if(needSize < buffer.length){
out.write(buffer, 0, needSize);
} else {
out.write(buffer, 0, len);
if(len < buffer.length){
break;
}
}
needSize -= buffer.length;
}
randomFile.close();
out.close();
return response;
}
java解决ios视频无法播放的问题相关推荐
- java 上传视频并播放_java实现视频上传和播放..doc
java实现视频上传和播放. Java实现视频网站的视频上传.视频转码.视频关键帧抽图, 及视频播放功能 视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过F ...
- 微信小程序录音+音频播放(解决ios无法音频播放问题)
微信小程序录音+播放 1.创建全局变量 const audioManager = wx.getRecorderManager(): const innerAudioContext = wx.creat ...
- ios视频循环播放实现
/*** 添加播放器通知,通过AVPlayerItemDidPlayToEndTimeNotification字段判断播放器播放情况*/ -(void)addNotification{//给AVPla ...
- 解决网页视频无法播放问题 (搜狐)
原因:没有播放插件 插件下载:百度adobeflash player 找到适和linux的版本 eg: install_flash_player_11_linux.x86_64.tar.gz 解压: ...
- 使用wxParse解析富文本的总结以及解决苹果手机上视频无法播放的方法
先上官方文档:https://github.com/icindy/wxParse.先讲一下我的理解,最后说明下自己使用wxParse的业务场景以及遇到的问题. 1.先上个目录结构. 然后总结下wxPa ...
- 爱奇艺html5不能播放器,爱奇艺视频播放失败怎么办 网页视频不能播放的解决方法教程[多图]...
有网友反映在爱奇艺网站看视频时总是提示播放失败,不能正常播放视频,这该怎么办呢?本文将给大家介绍解决爱奇艺视频播放失败的方法. 解决方法: 1.电脑缓存过多 解决方法:点击"设置" ...
- iPhone下mp4视频无法播放和部分手机只有声音没有画面
概述 mp4视频在部分手机上加载失败.无法播放或有声音没画面的原因是:视频编码或声道数有问题,解决方案:视频转码. 遇到的问题 mp4视频在 iPhone XR (IOS 14.1) 上无法播放,一直 ...
- 微信播放在服务器视频无法播放音乐,【bug解决】ios微信浏览器中背景音乐无法播放...
我记得之前在一次项目中,出现过浏览报错: 所以在这次H5的制作中,我使用了iframe来加载音频文件,使用这种方式后,电脑端是没有问题的,但是当上传至服务器上在手机上浏览时,会出现点击音乐旋转按钮无法 ...
- Springboot+Minio通过分片下载解决IOS下H5无法播放视频问题
一.环境说明 JDK 1.8 Springboot 2.7.5 Minio 8.4.5 Vue3实现的微信公众号网页 二.问题描述 当前项目是基于springboot和vue3的前后端分离架构,前端目 ...
最新文章
- AI 女神李飞飞最新文章:发展人工智能应该以人为本
- 计算机论文数据建模怎么写,如何撰写建模论文?
- 【STBC】Alamouti,STBC误码率仿真
- 我的NHibernate之路(1)---基本配置篇
- python如何离线安装第三方模块_扣丁学堂python开发之第三方模块pip离线安装
- HALCON示例程序class_2dim_unsup.hdev基于二维直方图的聚类分类
- linux夏令时配置文件,Linux夏令时是怎么调整的?
- POLYCOM RMX2000 激活与初始化 信令板卡初始化
- WCF发布到IIS 7.0,并以https访问
- Servlet开发(1)-----基础及MVC设计模式
- springboot基于web的游泳馆信息管理系统毕业设计源码281444
- excel如何冻结表格行或者列
- android:persistent属性研究
- 安装pywifi的坑
- 18.网络技术——BGP的原理+实验题(后附练习题)
- 视频伪原创片头片尾 视频合并会改变md5
- 陶伟死因 从微博看明星
- 软件开发人员的作战手册 - 让程序员活的久一点
- 批量爬取豆瓣短评并批量生成词云
- Flutter查看库的依赖关系