采用 m3u8 切片策略的视频网站,是在用户点击播放的时候再去切片并返回,还是说视频上传到平台就已经完成了切片?

2024-03-03 09:29:49 +08:00
 CorgiDuu
3888 次点击
所在节点    Java
19 条回复
iseki
2024-03-03 09:46:34 +08:00
一般都是切好的,这样也利于缓存
iseki
2024-03-03 09:46:48 +08:00
此外给视频切片是个很重的工作
a282810
2024-03-03 09:59:59 +08:00
视频上传到平台就开始切片
shuiduoduo
2024-03-03 10:03:30 +08:00
切片也是需要时间的
k9982874
2024-03-03 10:27:39 +08:00
不是应该视频上传开始自动切片最后生成 m3u8 ,整个过程自动化
mightybruce
2024-03-03 10:30:44 +08:00
录播视频时先切片好再播放,切片也需要花费大量计算的。
播放的时候,如果 m3u8 是级联索引,那么会先返回相应分辨率的 m3u8 ,再通过 m3u8 找相应视频切片。
kkk9
2024-03-03 10:30:49 +08:00
通用三队列

1. 上传队列:支持断点续传,上传完毕之后进入切片队列
2. 切片队列:切片,各种清晰度等的版本,完成之后进入缓存队列
3. 缓存队列:分发到各个存储 Peer/OSS 等,CDN 执行预热……
expy
2024-03-03 10:59:12 +08:00
转码切片肯定提前做好。
expy
2024-03-03 11:01:28 +08:00
CorgiDuu
2024-03-03 11:31:22 +08:00
@iseki 感谢解答,那比如说切片好的视频,后端怎么返回给前端呢?还是说后端不做处理,就认为是个文件服务器就好?
CorgiDuu
2024-03-03 11:32:45 +08:00
感谢解答,那比如说切片好的视频,后端是以什么形式返回给前端呢?还是说后端不做处理,就充当是个文件服务器就好?如果是文件服务器是不是也可以用对象存储这种保存呢?
treblex
2024-03-03 12:31:17 +08:00
对象存储的话,可以用服务商提供的服务,自动转码
foxhunt
2024-03-03 13:03:56 +08:00
切片任务时,会指定生成 m3u8 文件的文件名,根据文件名和 CDN 路径生成播放 URL ,扔给前端就行了
播放器拿到 m3u8 文件后,根据列表取分片后的 ts 文件逐个播放
iseki
2024-03-03 16:24:34 +08:00
@CorgiDuu 是的,m3u8 和 ts 分片都是普通的文件,按文件分发处理就行,所以它才方便
joynvda
2024-03-03 17:49:03 +08:00
分直播和点播。

直播是实时切片,同时输出 m3u8 索引和视频文件片。如果需要,还有实时转码 - 输入码流变为不同格式(分辨率等)的文件片。

(个人不关注点播这块。)点播有可能预先切好。如果需要 DRM 版权版权,估计是实时处理。
DefoliationM
2024-03-03 20:28:39 +08:00
一般大厂应该都是提前转好的,但是 jellyfin 这种都是实时转码的,点击的时候才会去转码和切片。
CorgiDuu
2024-03-04 07:36:13 +08:00
@iseki 那前端如果采用 hls.js 是不是也不需要什么额外的手动处理,只要给一个 m3u8 文件名,他就会自己按照顺序播放 ts ?
nguyenminhhuong6
2024-03-04 10:22:01 +08:00
m3u8 url 获取的就是切片列表,切片提前处理好的
johnmichael09
2024-03-21 15:46:30 +08:00
m3u8 文件其实是一系列视频的链接,返回前端后,前端按照时间点读取一个个视频的地址,然后播放

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1020163

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX