M3U8 加密流(AES-128)原理与播放
什么是 AES-128 加密
HLS 协议支持对 TS 分片进行 AES-128 加密,防止视频内容被直接下载盗用。加密后的分片即使被下载,没有密钥也无法播放。
工作原理
加密流的 m3u8 播放列表中会包含密钥信息:
#EXT-X-KEY:METHOD=AES-128,URI="https://example.com/key.key",IV=0x...
#EXTINF:10.0,
segment-000.ts
播放器流程:
- 读取
#EXT-X-KEY标签,获取密钥 URI。 - 下载密钥文件(16 字节)。
- 用密钥解密 TS 分片后再播放。
如何播放加密流
- 标准播放器(VLC、hls.js、本站在线播放器)会自动处理 AES-128 解密,无需手动操作。
- 前提是密钥 URI 可正常访问,且播放器能成功下载密钥。
- 如果密钥下载失败或源站做了 Referer 校验,解密会失败,表现为黑屏或报错。
转换加密流为 MP4 时,FFmpeg 同样会自动处理:ffmpeg -i "加密m3u8地址" -c copy out.mp4。