Сам манифест 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 в прошлом, я думаю, не будут воспроизводиться, если поток медиаданных защищен, но Манифест не указывает на это.