项目是 spring,目前功能是上传 mp4 文件,播放的时候是从后端读取文件流,放到前端 video 标签里。
但是播放的视频文件大于 30M 的时候,浏览器加载就会变得很慢,如果播放大于 100M 就无法短时间内一次性加载到前端。
目前的方案是想利用 video 下的 source 标签,但是使用文件流就无法播放。
请问各位经验丰富的大佬,有没有成熟的方案可以提供吗?网页链接也可以。不胜感激
|      1av1254      2019-11-17 18:32:48 +08:00 m3u8 了解一下 | 
|  |      2codebigbang OP @av1254 不懂就问~ 请问把 mp4 切片以后,是不是只要控制器里处理 m3u8 请求和 ts 请求就可以了? | 
|  |      3cst4you      2019-11-17 19:41:51 +08:00 flvjs, 用 flv 格式, 关闭 lazyload, 可以一次加载完 https://www.beatstage.com/play/400 我自己的音游用这种模式来加载视频, 因为是游戏肯定就不可能边放边播, 缓冲不足了卡住那就很尴尬了 | 
|  |      4duan602728596      2019-11-17 23:53:26 +08:00 via iPhone 你的服务不支持 HTTP 206 吗? | 
|  |      5againstodds      2019-11-18 08:39:43 +08:00 了解下 ffmpeg -movflags faststart 视频文件可以不需要全部下载完再播放,可以边下载边播放 | 
|  |      6Latin      2019-11-18 10:26:17 +08:00 有钱就上 nvr | 
|  |      7codebigbang OP 方案总结: 1、使用 m3u8,把 MP4 切成 m3u8 和若干 ts 文件。我的问题是处理 m3u8 和 ts 请求是自己处理吗?@av1254 2、关于 HTTP 206,range 之后获取的数据可以直接播放吗?@duan602728596 3、关于 flv,有详细的教程或者链接吗?拜托了 @cst4you | 
|  |      8Latin      2019-11-18 15:11:13 +08:00 | 
|  |      9duan602728596      2019-11-18 15:52:29 +08:00 via iPhone @codebigbang 当然可以 | 
|  |      10cst4you      2019-11-18 19:21:53 +08:00 | 
|  |      11codebigbang OP @duan602728596 我之前尝试过把读取的 base64 编码的数据拼接在之前已经存在的 video src 里,但是这样会导致正在播放的播放器彻底加载不出来视频数据。 所以想请问一下后台读取过来的数据是怎么保证不卡顿加载上去的? | 
|  |      12duan602728596      2019-11-18 22:36:23 +08:00 @codebigbang 主要是这个东西,别人的文章拿过来你可以看看,https://dabing1022.github.io/2016/12/24/%E8%81%8A%E4%B8%80%E8%81%8AHTTP%E7%9A%84Range,%20Content-Range/。比如有个 5 分钟的视频,你跳到 3 分钟的时候,如果你的服务支持这个的话,是不会把三分钟之前的视频也加载过来的。 |