我想确定DASH清单URL是否受ExoPlayer保护是否受DRM保护,但是我似乎找不到任何可以帮助我的东西。
我看到您可以使用ExoPlayer中的SmoothStreaming实现此功能,因为有protection element。
只是想知道以前是否有人遇到过这个问题?
答案 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)将无法播放指出这一点。