我得到了经过 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 加密一无所知。
你们可以帮我在 Android 设备上通过 Exoplayer 播放这个文件吗?
谢谢你
ExoPlayer 内置了对 DASH 和 HLS 流加密的支持。
加密和密钥信息可以在多个位置发出信号,通常在清单(M3U8 或 mod 文件)以及媒体流本身的“块”或“原子”中。
根据您的加密设置方式,密钥将包含在清单中(显然不是很安全)、从密钥服务器以明文形式提供(仍然不是很安全)或通过常用的 DRM 密钥服务机制之一提供服务、Widevine、PlayReady 或 FairPlay(与 DRM 方案在任何给定时间一样安全)。
您不必在 ExoPlayer 端执行任何额外操作即可完成此操作,除非您的视频服务器需要在本地配置密钥。
如果您在播放过程中看到一些特定错误,可能值得专门提出一个问题,如果可能的话,共享完整的清单、流和错误日志。
解决此问题而不是 DefaultDataSource :
dataSourceFactory = new DefaultDataSource.Factory(activity);
尝试使用 HttpDataSource :
dataSourceFactory = () -> {
HttpDataSource dataSource = new DefaultHttpDataSource();
return dataSource;
};