我正在使用ExoPlayer v2.8.1播放音频HLS文件。我有一个指向主播放列表的链接,如下所示:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=72000,CODECS="mp4a.40.5"
-----.m3u8
一种媒体源的代码是这样的:
HlsMediaSource hlsMediaSource = new HlsMediaSource.Factory(exoPlayerCacheDSFactory).createMediaSource(Uri.parse(audioUrl));
hlsMediaSource.addEventListener(mainHandler, mediaSourceEventListener);
player.prepare(hlsMediaSource , true, true);
player.setPlayWhenReady(false);
此ExoPlayer在从链接下载播放列表清单并开始准备播放这些部分时(当playWhenReady = true时);一个清单看起来像这样:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:4
#EXT-X-KEY:METHOD=AES-128,URI="*****.key",IV=****************
#EXTINF:3.018589,
**********00.ts
#EXTINF:3.018578,
**********01.ts
#EXTINF:2.972156,
**********02.ts
#EXTINF:3.018578,
**********03.ts
#EXTINF:2.972144,
**********04.ts
.
.
.
#EXTINF:0.975222,
**********80.ts
#EXT-X-ENDLIST
有人知道如何实现HlsPlaylistParser或AesCipherDataSource + AesCipherDataSink或任何其他方法,以便我可以分别设置AES-128 URI和IV吗?我想提一下,所有播放列表部分都将具有相同的加密。因此,我的新清单将减去ext-x-key相同:
#EXT-X-KEY:METHOD=AES-128,URI="*****.key",IV=****************
我需要一个实现示例或一个有关此文档的链接。
请帮助!