看懂 AES-128:加密 HLS 流为什么会黑屏

目录

  1. 黑屏的元凶藏在哪
  2. AES-128 是如何保护分片的
  3. 播放器拿到加密流后的完整动作
  4. 黑屏的四种典型姿势
  5. 如何确认并恢复播放

黑屏的元凶藏在哪

打开播放页只剩一片黑,控制台却报不出像样的错误——遇到这种情况,先怀疑流是加密的。HLS 允许对每个 TS 分片做 AES-128 加密,密钥拿不到,画面就永远解不开。

AES-128 是如何保护分片的

加密流的播放列表里会多出一行 KEY 声明:

#EXT-X-KEY:METHOD=AES-128,URI="https://example.com/keys/seg.key",IV=0x9c7db8778570d05c3177c349fd9236aa
#EXTINF:9.0,
chunk_012.ts

METHOD 声明算法,URI 指向一个 16 字节的密钥文件,IV 是可选的初始向量。每个分片用这把钥匙做 AES-128-CBC 解密后,才是正常的 TS 数据。

播放器拿到加密流后的完整动作

  1. 解析到 #EXT-X-KEY,记下密钥地址;
  2. 向该地址发起请求,取回 16 字节密钥;
  3. 下载对应分片,用密钥与 IV 解密;
  4. 把明文分片送进解码器,画面才会出现。

任何一步失败,后面全部停摆,外部观感就是黑屏转圈。

黑屏的四种典型姿势

如何确认并恢复播放

按 F12 打开网络面板,搜 .key:请求成功返回 16 字节,说明密钥链路正常,问题在别处;返回 403 或 404,则基本确诊。密钥恢复后,主流播放器(hls.js、VLC、M3U8Lab 在线播放器)都会自动完成解密,无需任何手工配置。想给加密流转封装成 MP4,原理相同,可参考 四条转换路线 的说明。最后提醒一句:只有持有关键授权的场景才谈得上"恢复",破解他人的加密流既不可行,也不合法。