java web项目 处理视频流问题

小蔡先生` 2016-01-28 05:56:00
这几天一直在考虑怎么实现在web界面播放视频的问题。
其实直接在html里写video标签 src属性指定成
localhost:8080/upload/1.mp4
就直接可以播放的,但是因为需求需要把src路径改成这种
localhost:8080/getvideo?moviename='1.mp4'
然后在后台通过请求接受到视频文件参数 ,通过BufferedOutputStream 输出流 传到前台 。
只不过大文件超过我指定的
byte[] buff = new byte[2046];

的话会数组越界报错,我也不能把byte初始值设置成无限大,这样会对服务器内存有很大的负荷,而且我这样写的话前台不能实时播放 只能等BufferedOutputStream 的接受完才能播放,前台web界面暂停、托转快进也会失效不能用 。我现在需要一个思路就行,怎么解决这个问题呢?
现在实现的代码如下:
@Override
public void imgForword(String url, HttpServletRequest req, HttpServletResponse resp) throws IOException {
S3Object object = S3Handler.getInstance().getObject(S3Handler.smallPoolName, url);
S3ObjectInputStream objectInput = object.getObjectContent();
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buff = new byte[2046];
int rc = 0;
byte[] downByte = null;
while (-1 !=(rc = objectInput.read(buff))){
output.write(buff, 0, rc);
}
output.flush();
downByte = output.toByteArray();
output.close();
object.close();
OutputStream outStream=null;
BufferedOutputStream bufferOut =null;
try {
outStream = resp.getOutputStream();
bufferOut = new BufferedOutputStream(outStream);
bufferOut.write(downByte);
bufferOut.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
outStream.close();bufferOut.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
...全文
7560 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
renxuengineer 2017-11-23
  • 打赏
  • 举报
回复
bufferOut.write(downByte);运行到这步就报错了啊
qq_28439729 2017-08-17
  • 打赏
  • 举报
回复
遇到了同样问题,楼主解决了吗,求分享
Sid-2023 2017-08-04
  • 打赏
  • 举报
回复
nginx映射可以实现
五色程序员 2017-04-24
  • 打赏
  • 举报
回复
楼主我页遇到了同样的问题。楼主解决了吗?
Jack_222 2017-03-05
  • 打赏
  • 举报
回复
lz问题解决了么啊?我也遇到同样的问题呢,求带
1818181818 2016-05-27
  • 打赏
  • 举报
回复
问题解决了吗?我也遇到了这种问题,前台web界面快进,进度条的拖动会使后台报错
dokia123 2016-01-29
  • 打赏
  • 举报
回复
你这不是循环从objectInput 输入流中读入byte数组吗,不会越界啊
小蔡先生` 2016-01-29
  • 打赏
  • 举报
回复
没人么?
小蔡先生` 2016-01-28
  • 打赏
  • 举报
回复
上面代码里 有S3Object 是获取集群里的视频 不用在意

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧