有没有办法找出DASH清单是否在ExoPlayer中受到DRM保护

时间:2018-10-02 16:07:40

标签: android exoplayer drm android-drm

我想确定DASH清单URL是否受ExoPlayer保护是否受DRM保护,但是我似乎找不到任何可以帮助我的东西。

我看到您可以使用ExoPlayer中的SmoothStreaming实现此功能,因为有protection element

只是想知道以前是否有人遇到过这个问题?

1 个答案:

答案 0 :(得分:1)

DASH清单本身包含一个指示内容是否受保护的元素。

例如,这是PlayReady指示(来自MS文档):

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
    <cenc:pssh>
          <!-- *base64-encoded PlayReady ‘pssh’ complete box* -->
    </cenc:pssh>
    <mspr:pro>
          <!-- *base64-encoded PlayReady Object* -->
    </mspr:pro>
</ContentProtection>

各个媒体的“块” URL可以是混淆的或随机的,因此这些URL本身并不能真正帮助传达此信息。

ExoPlayer可以检查清单中的保护指示。您可以在“ DashManifestParser”类中看到它正在解析-例如:

else if (XmlPullParserUtil.isStartTag(xpp, "ContentProtection")) {
        Pair<String, SchemeData> contentProtection = parseContentProtection(xpp);
        if (contentProtection.first != null) {
          drmSchemeType = contentProtection.first;
        }
        if (contentProtection.second != null) {
          drmSchemeDatas.add(contentProtection.second);
        }

要意识到的一个(或警惕的..)是该规范说可以在清单和/或媒体本身中指明媒体受到保护的事实-即,ISO文件中有一个“框” '可以在其中指定保护方案信息。

从理论上讲,这意味着您可以在任何一个地方指定行程,但实际上并非所有播放器都以这种方式实现-如果媒体流受到保护,但清单文件没有保护,则某些人(包括我以前认为的ExoPlayer)将无法播放指出这一点。