Как определить ошибку чтения лицензии DRM Widevine в Exoplayer

Имею приложение с видео DASH + DRM Widevine. В эмуляторах и некоторых ТВ-боксах возникает ошибка при чтении лицензии, и защищенный контент не воспроизводится. Я хочу добиться того, чтобы в случае ошибки с лицензией могла быть выполнена какая-то другая функция.

Спасибо


person Community    schedule 15.01.2021    source источник


Ответы (1)


Exoplayer поддерживает слушателей, которые вы можете использовать для отслеживания ошибок и реагирования на них по своему усмотрению - информация доступна здесь:

Вы можете добавить слушателей в свой экземпляр плеера:

yourExoPlayerInstance.addListener(new Player.EventListener() {
                @Override
                public void onPlayerError(ExoPlaybackException e) {
                    //Add you code to check the error type here 
                    //and take whatver actions you need
                }
});

Обратите внимание, что ошибки DRM от сервера DRM иногда могут быть расплывчатыми и содержать мало деталей. Возможно, это сделано для того, чтобы злоумышленники не пытались узнать, как ведут себя серверы DRM (или потому, что они забыли добавить более точные причины ошибок ...).

Если посмотреть конкретно на случай, когда контент воспроизводится на реальном устройстве, но не в эмуляторе - системы DRM на мобильных устройствах обычно прочно связаны с HW на устройстве, используя корень доверия HW.

Когда вы запускаете приложение в эмуляторе, эта HW-ссылка отсутствует, и некоторые безопасные приложения и операции, такие как DRM, не будут работать.

В качестве чрезмерно упрощенной, но, надеюсь, полезной иллюстрации, если вы можете представить, что ключ дешифрования хранится в некоторой `` HW-защищенной '' памяти на реальном устройстве, на эмуляторе это должно быть эмулировано в SW, и это может быть значительно проще. перепроектировать и, следовательно, обнаружить ключ дешифрования.

На самом деле эмуляторы в некоторых случаях могут передавать эти типы защищенных функций на базовую платформу, на которой они работают, поэтому вы можете найти для некоторых экосистем и эмуляторов, что это будет работать. Однако, даже если это заставит вас уйти от того, как приложение на самом деле работает на реальном устройстве, вероятно, безопаснее всего протестировать такие варианты использования на реальных устройствах, где это возможно.

person Mick    schedule 15.01.2021
comment
Защищенное видео работает на всех сотовых телефонах, но в эмуляторах и некоторых TV Box экран остается черным, как будто не читал лицензию, знаете, почему это происходит? - person ; 16.01.2021
comment
@RichJ, см. Добавление обновленного ответа в примечания к эмуляторам. - person Mick; 16.01.2021
comment
Подскажите, как это реализовать в приложении? У меня нет большого опыта в этом .. - person ; 17.01.2021
comment
Похоже, у вас уже есть это приложение, если оно работает на мобильных телефонах. - person Mick; 17.01.2021
comment
Тогда в эмуляторах это не решается? - person ; 18.01.2021
comment
Я, конечно, не знаю решения на эмуляторе, которое будет правильно воспроизводить обычные уровни безопасности с HW-линией, обычно используемые на мобильных устройствах. - person Mick; 18.01.2021
comment
ладно, все равно спасибо .. - person ; 19.01.2021