Java 实现大文件(视频)的高效下载,并让前端播放,有什么思路吗?

查看 161|回复 10
作者:Triump   
需求背景:
要在网页上播放视频,视频是存储在文件系统( minIO )上,现在的做法是,前端请求后台的文件下载接口,将整个文件下载后返回给前端进行播放。但是这个视频大概有 140M ,整个过程耗时大概 1 分钟了。用户体验很差。
我的思路:
后端提供一个支持文件分片下载的方法,前端通过请求头设置 Range 参数传入指定的范围。比如一个 100M 的文件,每次请求 10M, 但是我不确定前端拿到这 10M 文件后,是否能够播放。。。 如果这个思路可行的话,前端需要用到哪些技术呢?
有没有大佬能够提供一下思路啊?

文件, 前端, 思路, 播放

weixiaoyun   
走 nginx 转发不就行了,顶多加个鉴权,不需要自己去写切片播放
Triump
OP
  
不用下载,minio 支持视频拉流的,给个视频预览源地址给前端播放器调用就好了
tool2d   
@weixiaoyun 就是让前端直接去访问 minio 吗?这样的话要把 桶的权限设置为公开,会不会很危险,因为这个项目要支持外网访问的。
MoonWalker   
"但是我不确定前端拿到这 10M 文件后,是否能够播放"
本来就无法确定。
MP4 有两种格式,头格式和尾格式。头格式把具体播放信息都放在头部,可以流式播放。尾格式是把详细信息都放在文件末尾,你比如下载视频 BT ,必须把整个文件拖下来后,才能播放。
当然有工具可以在这两种格式之间切换。
MoYi123   
返回 206 状态码然后按 Range 解析字节范围就好了吧?
registerrr   
@Triump 用 presignedGetObjectUrl
registerrr   
@Triump
不用,把桶权限设置成 download (共有读私有写)就行了
返回视频流时候你有业务要处理么?没有就是直接访问啊,前端只写个 video 标签都可以了
duckyrain   
要是访问也需要授权就用 6#的这个方法
Triump
OP
  
走公有云 CDN ?
边下边播是视频格式决定的,和下载服务没关系。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部