请问各位有什么更推荐的影片文件的 m3u8 和 key 分离的方案吗

2 天前
newbie111  newbie111
├── index.m3u8 # 主播放列表
├── key.key # 解密密钥
├── 001.ts # 视频片段
├── 002.ts
├── ....ts

现在云存储的每部影片是以上面文件结构存储的,想要实现文件分离。

目前是想到了以下 2 个方案,但感觉还不是最佳方案:
1.将 m3u8 文件内容和解密 key 写到数据库并删除服务器上的 m3u8 和 key 文件,只在云存储中保留 ts 文件,播放器请求 api 获取 m3u8 内容,api 读取 MySQL 数据库中的 m3u8 内容并拼接解密 key 的 api 地址,返回 m3u8 内容给客户端

2.将解密 key 写到数据库并删除服务器上的 key 文件,只在云存储中保留 m3u8 和 ts 文件,播放器请求 api 获取 m3u8 内容,api 读取云存储中的 m3u8 内容并拼接解密 key 的 api 地址,返回 m3u8 内容给客户端

数量多的情况下感觉都会有数据库性能瓶颈或者加载速度的问题,请问各位佬有没有更好的方案?
1065 次点击
所在节点   程序员  程序员
8 条回复
gam2046
gam2046
2 天前
分离的目的是什么?

看起来像是希望保护视频资源。这种需求请直接上 DRM 。

你说的这一套操作,人家在客户端只需要抓个包,全是无用功。

如果是指为了防脚本小子,第二种方法就够了,相对实施简单。如果视频内容是自己编码的,key 可以根据某些内容生成,这样也不需要保存数据库,比如根据标题/id 等信息,直接 hash 一下,作为 key 即可。
ysc3839
ysc3839
2 天前
@gam2046 市面上的 DRM 方案有免费的吗?估计楼主在小公司,没能力承担 DRM 的费用,只能想些免费的旁门左道来提高盗版门槛。
jackOff
jackOff
2 天前
可以试试偏硬件的物理密码终端,每个终端由公司签名公钥,这样子加密后的流量下发给持有密码终端的硬件就能通过对应硬件的私钥解密,当然这种东西其实就是卫星电视盒子的牢技术,但管用就行。软件解密总是很难避免被逆向的问题,硬件解密就看你这个解密器黑盒技术咋样了
NGGTI
NGGTI
2 天前
解密 key 动态生成吧。每次打开视频都是不一样的 key 。key 只能使用 1 次。只能提高破解的难度。
B4a1n
B4a1n
2 天前
@NGGTI 这玩意怎么实现 key 不是切片的时候就固定了么
NGGTI
NGGTI
2 天前
@B4a1n 没了解过咋实现的,去年研究钉钉视频下载就是这样。key 只有 1 次有效果。
fengci
fengci
2 天前
这种方案目前都是 盗版视频用的多,因为不需要 重新压制 ,直接在视频任何位置插入广告
YuushaTao
YuushaTao
2 天前
不如在请求 m3u8 时加点验证 sign 防止盗流

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

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

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

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

© 2021 V2EX