0

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

我可以看到你可以在 ExoPlayer 中使用 SmoothStreaming 来实现这一点,因为有一个保护元素

只是想知道是否有人以前遇到过这种情况?

4

1 回答 1

1

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

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

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”&gt;
    <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 文件有一个“框”,其中可以指定保护方案信息。

从理论上讲,这意味着您可以指定任何一个地方的行程,但实际上并非所有播放器都以这种方式实现它——我认为,如果媒体流受到保护但 Manifest 没有表明这一点,包括过去的 ExoPlayer 在内的一些播放器将不会播放。

于 2018-10-03T16:51:36.123 回答