在使用Media3 / Exoplayer中,对于base64编码时,Clearkey不起作用的问题,可以尝试使用自定义的DrmSessionManager来解决。以下是一个示例代码:
// 创建一个自定义的DrmSessionManager
DefaultDrmSessionManager drmSessionManager = new DefaultDrmSessionManager.Builder()
.setUuidAndExoMediaDrmProvider(C.CLEARKEY_UUID, FrameworkMediaDrm.DEFAULT_PROVIDER)
.build(mediaDrmCallback);
// 使用自定义的DrmSessionManager创建MediaSource
MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory)
.setDrmSessionManager(drmSessionManager)
.createMediaSource(mediaItem);
// 创建ExoPlayer实例并设置MediaSource
SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build();
player.setMediaSource(mediaSource);
player.prepare();
player.play();
在以上代码中,我们使用了DefaultDrmSessionManager.Builder
来创建一个自定义的DrmSessionManager,并将其设置到了MediaSource中。在setUuidAndExoMediaDrmProvider
方法中,我们指定了Clearkey的UUID,并使用了默认的ExoMediaDrmProvider。
注意:在使用这个示例代码之前,你需要确保已经添加了ExoPlayer库的依赖,并且导入了相应的包。
这样,就可以通过使用自定义的DrmSessionManager来解决在Media3 / Exoplayer中,对于base64编码时Clearkey不起作用的问题。