Android : Media3 / Exoplayer 中的 Clearkey 不适用于 base64

Android : Clearkey in Media3 / Exoplayer not working for base64

提问人:RealTV Support 提问时间:9/6/2023 最后编辑:RealTV Support 更新时间:9/8/2023 访问量:212

问:

为一个 Android 应用程序工作,使用 Media3 和 exoplayer 播放 clearkey 内容。 下面给出了 Build.gradle。下面描述的问题。如果需要更多详细信息,请告诉我。

我有两个用于清除密钥DRM的链接,并且两个链接都可以正常工作 https://developer-tools.jwplayer.com/stream-tester

链接 1 正在应用程序中工作

链接 1 --> https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd

CleaeKey FmY0xnWCPCNaSpRG-tUuTQ

ClearKid nrQFDeRLSAKTLifXUIPiZg

上面的链接在Android Exoplayer/Media3中工作。

链接 2 不是工作案例,但在上面给出的 jwplayer 链接中确实有效

链接 2 --> https://cdnapisec.kaltura.com/p/2433871/sp/243387100/playManifest/protocol/https//entryId/1_pgssezc1/format/mpegdash/tags/mbr/f/a.mpd

明晰钥匙 caee457911302478487e6680bf0b3d1b

ClearKid a07c5d499dcead0fb416fed5913967be

编码键:尝试了 base64url 的编码和不编码,但没有帮助。

ClearKey yu5FeREwJHhIfmaAvws9Gw

Clearkid oHxdSZ3OrQ-0Fv7VkTlnvg

以下是代码片段:

String keyString = "{\"keys\":[{\"kty\":\"oct\",\"k\":\"" + Clearkey + "\",\"kid\":\"" + Clearkid+ "\"}],'type':\"temporary\"}";

LocalMediaDrmCallback drmCallback = new LocalMediaDrmCallback(keyString.getBytes());

DrmSessionManager manager_local = new DefaultDrmSessionManager.Builder()
                    .setUuidAndExoMediaDrmProvider(C.CLEARKEY_UUID,    FrameworkMediaDrm.DEFAULT_PROVIDER)

DashMediaSource.Factory(dataSourceFactory)
                    .setDrmSessionManagerProvider(  mediaItem ->  manager_local)

有了上面的细节,mediaSource是用DashMediaSource创建的,传递给播放器。

build.gradle 为此:


implementation 'androidx.media3:media3-exoplayer:1.1.0'
implementation 'androidx.media3:media3-exoplayer-dash:1.1.0'
implementation 'androidx.media3:media3-ui:1.1.0'
implementation 'androidx.media3:media3-exoplayer-hls:1.1.0'

请帮忙。让我知道缺少什么。

谢谢 n 问候, 开发

exoplayer drm base64url 安卓媒体3

评论


答:

0赞 RealTV Support 9/8/2023 #1

它固定了,虽然很傻。最后一个密钥字符串中有\n个字符。.