Есть ли способ узнать, защищен ли манифест DASH DRM в ExoPlayer?

Я хочу определить, защищен ли URL-адрес манифеста DASH DRM или нет с помощью ExoPlayer - однако я не могу найти что-то, что может помочь мне в этом.

Я вижу, что вы можете достичь этого, используя SmoothStreaming в ExoPlayer, так как есть элемент защиты.

Просто интересно, сталкивался ли кто-нибудь с этим раньше?

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

Другие вопросы по тегам