V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
newbie111
V2EX  ›  程序员

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

  •  
  •   newbie111 · 1 天前 · 891 次点击
    ├── 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 内容给客户端

    数量多的情况下感觉都会有数据库性能瓶颈或者加载速度的问题,请问各位佬有没有更好的方案?
    8 条回复    2025-03-21 10:40:51 +08:00
    gam2046
        1
    gam2046  
       1 天前
    分离的目的是什么?

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

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

    如果是指为了防脚本小子,第二种方法就够了,相对实施简单。如果视频内容是自己编码的,key 可以根据某些内容生成,这样也不需要保存数据库,比如根据标题/id 等信息,直接 hash 一下,作为 key 即可。
    ysc3839
        2
    ysc3839  
       1 天前
    @gam2046 市面上的 DRM 方案有免费的吗?估计楼主在小公司,没能力承担 DRM 的费用,只能想些免费的旁门左道来提高盗版门槛。
    jackOff
        3
    jackOff  
       1 天前
    可以试试偏硬件的物理密码终端,每个终端由公司签名公钥,这样子加密后的流量下发给持有密码终端的硬件就能通过对应硬件的私钥解密,当然这种东西其实就是卫星电视盒子的牢技术,但管用就行。软件解密总是很难避免被逆向的问题,硬件解密就看你这个解密器黑盒技术咋样了
    NGGTI
        4
    NGGTI  
       1 天前
    解密 key 动态生成吧。每次打开视频都是不一样的 key 。key 只能使用 1 次。只能提高破解的难度。
    B4a1n
        5
    B4a1n  
       1 天前
    @NGGTI 这玩意怎么实现 key 不是切片的时候就固定了么
    NGGTI
        6
    NGGTI  
       18 小时 52 分钟前
    @B4a1n 没了解过咋实现的,去年研究钉钉视频下载就是这样。key 只有 1 次有效果。
    fengci
        7
    fengci  
       16 小时 32 分钟前
    这种方案目前都是 盗版视频用的多,因为不需要 重新压制 ,直接在视频任何位置插入广告
    YuushaTao
        8
    YuushaTao  
       15 小时 52 分钟前
    不如在请求 m3u8 时加点验证 sign 防止盗流
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1093 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:33 · PVG 02:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.