Exoplayer 播放由 AES - 128 加密的 HLS m3u8 视频

Posted

技术标签:

【中文标题】Exoplayer 播放由 AES - 128 加密的 HLS m3u8 视频【英文标题】:Exoplayer play HLS m3u8 video which encrypt by AES - 128 【发布时间】:2021-10-27 01:20:12 【问题描述】:

我得到了通过 AES - 128 加密的 URL m3u8 示例:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:13
#EXT-X-KEY:METHOD=AES-128,URI="INfeStYsHgLdHXY4HgO0SQTdSdbfGQC4HXHeStaqGNKnGdVdHtOtGXZfGtS3H2O4SNOtGNG2GXffGNYsINerGdUsHdHgGtS4TgY5Hda0S2C1TdO4GQGrSdDfHNHcHXw1TXCsSNGqIK==.key",IV=0x30633461363563636238376531316333
#EXTINF:10.416667,
https://DOMAIN/HdKtHXGrHdKtIXStHdKtING4HdStGXGqHdCtGdGqGtKnTdwtHtPdHteqTXVcS2PcIXC1HAY4HgO4GdwqTNY2IAO1HAGqTNwqSNe5HXTgGdG1S2HfINO0G2PfGdVgTXTgGNfdHXVfHNU0GXC2HAK3GdG0GNS2TgC4SNPfTgOrTNYrSgK5G2Y4GAS4TNVgGtHeTXfdS2ZdH2TgSQSqHdHfSQG0G2ZgHXHdGtPbGdGrINesTgSrGNVcS2LbIXUqS2C4INxbTAK2Gtw3HXCqTQG3GXbdINHeHtOrSK==.ts
....

从这个 m3u8 文件中,我可以获得密钥 IV 参数。我认为chuck .ts URL 也被加密了。 但是,我对 AES - 128 加密一无所知。

你们能帮我在安卓设备上通过 Exoplayer 播放这个文件吗?

谢谢

【问题讨论】:

【参考方案1】:

ExoPlayer 内置了对 DASH 和 HLS 流加密的支持。

加密和密钥信息可以在多个位置发出信号,通常在清单(M3U8 或 mod 文件)和媒体流本身的“块”或“原子”中。

根据您的加密设置方式,密钥将包含在清单中(显然不是很安全)、从密钥服务器以明文形式提供(仍然不是很安全)或通过常用的 DRM 密钥之一提供服务机制、Widevine、PlayReady 或 FairPlay(与 DRM 方案在任何给定时间一样安全)。

您不需要在 ExoPlayer 端做任何额外的事情来完成这项工作,除非您的视频服务器需要在本地配置密钥。

如果您在播放过程中看到某些特定错误,可能值得专门提出一个问题,并在可能的情况下分享完整的清单、流和错误日志。

【讨论】:

感谢先生的评论,我尝试通过 Exoplayer 播放 m3u8 文件,Exoplayer 无法播放文件并显示有关源错误(404)的日志猫。我还尝试过向 .ts 文件请求 HTTP 并得到 404 未找到。所以我认为我的网址 .ts 已加密。我得到的是 Key , IV , ts URL 列表。你能帮我播放这个文件吗 @DươngNguyễnVăn,如果您可以分享有助于理解问题的视频链接。 先生,我可以通过电子邮件或whatsapp与您聊天吗?

以上是关于Exoplayer 播放由 AES - 128 加密的 HLS m3u8 视频的主要内容,如果未能解决你的问题,请参考以下文章

基于FPGA的AES加解密读写控制系统,实现FLASH内部读写内容的销毁功能

可以在 Chrome cast 中以 AES-128 加密方式播放 .m3u8 文件

aes算法步骤

python Crypto AES-256-ECB 与PHP之间完成加解密

AES加解密使用总结

PHP的aes加解密算法