录播课按章节售卖的核心在于把加密存储粒度细化到单节视频,用“一章节一密钥”配合云存储分段授权,才能既防转卖又保证购买体验。这里直接给出结论:章节级加密不是把整门课锁进一个保险箱,而是给每节内容单独配一把钥匙,用户买了哪章,就只下发哪章的解锁权限,下面从存储结构、加密流程、平台实践和成本控制四个层面拆开讲。
章节级加密存储的整体架构
录播课按章节售卖和整课售卖最大的区别在于授权粒度,整课打包卖,一次解密全量文件即可;按章节卖,后端必须能识别“用户买了第2章,没买第3章”,同时保证没买的章节即使被暴力下载也无法播放。
行业共识认为,最稳妥的做法是三段式分层存储:原始课程文件、加密分片文件、授权索引表,原始文件存于私有云或本地NAS,不对公网开放;加密分片存放在对象存储(如简米云OSS、酷番云COS),文件名用哈希值乱序命名;授权索引表记录每章节对应的密钥ID,用户下单后由业务服务器动态生成临时凭证。
具体操作路径如下:
- 每节课独立转码为MP4或M3U8格式,按10-20分钟切分为子分片;
- 每个分片用AES-256-GCM加密,密钥随机生成且每章不同;
- 密钥本身再被主密钥二次加密后存储,主密钥由平台方保管;
- 用户端播放时,App或网页播放器携带订单凭证请求解密令牌,令牌有效期设为5-10分钟。
这套结构下,即使某个章节密钥泄露,攻击者也只能解出那一章,其他章节依然安全,对于按章节售卖的场景,这相当于把泄露损失从“一门课全挂”降级为“只挂一节”。
不同存储方式的加密粒度对比
录播课按章节售卖时,存储方案直接决定加密效果和成本,把市面上常见的三种方式放在同一张表里看:
| 存储方式 | 加密粒度 | 按章授权的便捷度 | 防盗链能力 | 长期成本 |
|---|---|---|---|---|
| 整课单文件存储 | 整门课一个密钥 | 需要复制全文件再重新加密,操作繁琐 | 泄露一次全部遭殃 | 最低,但风险集中 |
| 文件夹分章节存储 | 每章一个密钥 | 授权时只需改该文件夹的访问权限 | 单章泄露可隔离 | 中等,适合中小型创作者 |
| 对象存储分片+独立密钥 | 每个分片独立密钥 | 下单接口自动关联分片列表 | 单分片泄露影响极小 | 较高,但安全边际最高 |
对于在百度搜索“录播课按章节售卖怎么加密”的创作者,多数情况下推荐第二种方案:文件夹分章节存储,原因很直接:不需要自建复杂的密钥管理系统,用云存储自带的目录权限加上一层播放器加密就能跑通,比如酷番云COS的存储桶可以设置目录级授权,你把每章放进独立目录,购买后为用户生成带有该目录读权限的临时密钥即可。
第三种方案适合课程销量大、单价高、有专业开发团队的平台,它要求在播放器端做M3U8片段解密,技术上可以完全杜绝“抓到完整MP4后到处发”的问题,但开发量至少成倍增加,普通人不建议自行尝试。
按章节售卖时的加密流程拆解
从用户点击购买到播放器亮出画面,中间有四个关键环节,每一个环节都要考虑“如何让买第二章的人打不开第三章”。
第一环:上传时的自动分章加密
工具选择上,建议使用FFmpeg配合自研脚本,把每章源视频导入后,脚本按章节清单自动切割并分别加密,实操命令示例:
# 按章节切割(假设第2章是00:15:00到00:28:30) ffmpeg -i full_course.mp4 -ss 00:15:00 -to 00:28:30 -c copy part2.mp4 # 对part2.mp4生成随机密钥并加密 openssl rand 16 > key2.bin ffmpeg -i part2.mp4 -c:v libx264 -c:a aac -encryption_scheme cenc-aes-ctr -encryption_key $(xxd -p key2.bin) chapter2_enc.mp4
注意这里用的是CENC标准,主流播放器都能识别,加密后的文件不要存放在和源文件同一个目录,最好上传到另一个存储桶或加一层访问限制。
第二环:订单与密钥的绑定
用户购买章节后,订单系统需要做三件事:
- 从权限表查出该章节对应的密钥ID列表;
- 通过密钥服务接口提取出解密用的密钥,在内存中临时组装成授权包;
- 将授权包写入用户专属的缓存中,设置过期时间。
这里有个细节:授权包不能直接下发到用户的浏览器或App里,否则开发者工具一抓包就能拿到,正确做法是下发一个短期有效的播放凭证,播放器拿到凭证后去你的API换取真正的解密密钥,密钥只在播放器内存中使用,不落地存储。
第三环:播放器端的校验逻辑
播放器不仅要能播放已购章节,还得具备“章节锁”能力,比如用户只买了第1章和第3章,播放第2章时不能显示“已购买”,而是弹出购买提示,具体实现上:
- 播放器启动时请求
/get_accessible_chapters接口,返回当前用户可播放的章节ID列表; - 每次切集前比对本地缓存,不通过则拒绝加载视频源;
- 对已购章节,视频地址链上附加
?expires=时间戳&sign=签名参数,服务端校验签名过期则拒绝播放。
第四环:过期与退款处理
章节售卖往往涉及“七天无理由退款”或“部分章节退款”,退款逻辑和密钥绑定强相关:退款后,需要在授权表中删除该章节的密钥映射,然后同步清掉用户的授权缓存,为避免用户已缓存的播放凭证继续生效,凭证有效期不超过24小时,过期后强制刷新授权状态,这样即使缓存还在,下一次播放也会被服务端拒绝。
降低存储成本的三招
按章节售卖意味着文件数量增加、密钥数量增加,存储成本自然会涨,不过从实操来看,以下三个办法能有效控制费用:
- 低频章节转冷存储:把更新较久、播放次数下降的章节移入低频访问存储层,以简米云OSS为例,Standard和IA之间单价差约一半,按季度统计播放量,低于阈值自动转冷;
- 统一分片大小:把每章节的视频统一转码成同等码率和分辨率,让缓存命中率更高,CDN回源减少后,源站流出带宽费用显著下降;
- 密钥空间压缩:不要为每个分片生成独立密钥,而是每一章只生成一对密钥,所有分片共用同一密钥,因为章节粒度已经足够细,分片级密钥在实际防御转卖场景中收益不明显,但密钥数量却会增加百倍。

据粗略估算,采用“每章一密钥+智能转冷”后,一个100节课程的存储成本能控制在每月几十元到一百元左右,远低于因盗版造成的损失。
常见问题:章节售卖加密避坑
问:录播课按章节售卖加密后,自己电脑上的源文件要保留吗?
要,加密存储是为了分发安全,源文件必须放在离线私密环境中,如果源文件进了网盘并且分享链接泄露,前面的加密工作全部白费,建议源文件保留在本地硬盘或私人NAS,并设置至少双备份。
问:用户换新手机后,已购章节需要重新购买吗?
不需要,章节授权绑定的是用户账号,不是设备,新设备登录App后,从服务端拉取授权章节列表,重新下发播放凭证即可,前提是需要做好播放凭证的下发频控,比如单账号每分钟最多请求5次,防止被人批量刷授权接口。
问:用第三方网盘“加密压缩包”方式卖章节可行吗?
对于百度搜索“录播课章节售卖价格”这类需求的小白卖家,有人在卖加密压缩包,分章节压缩并设置不同解压密码,这种方式短期可以跑通,但体验差且极容易被录屏转卖,真正做内容的团队,都应该优先用自己域名的播放器方案,哪怕是引流到微信再用小程序播放,也比发压缩包更可控,毕竟用户要的是“打开就能看”,而不是“输入密码、解压、找文件”的繁琐过程。
章节级加密存储的本质,是把“内容边界”和“授权边界”对齐,用户买了几章,就提供几章的解锁能力,不贪多不求全,技术上守住密钥分发环节,运营上盯紧订单与缓存联动,这套方法就能支撑大多数按章节售卖的录播课场景。
