DrmManagerClient работает с локальными файлами, но не с файлами на сервере

#android #drm #android-drm

#Android #drm #android-drm

Вопрос:

Я пытаюсь реализовать DRM в своем приложении.
Но я столкнулся с проблемой. canHandle() всегда возвращает false .
И DrmManagerClient.getOriginalMimeType(Uri) ; всегда возвращает null для http-ссылок.
Но для файлов в хранилище все работает нормально.

 DrmManagerClient mDrmManager;
mDrmManager = new DrmManagerClient(this);
String testUri = myUrl;
String mimeType = getOriginalMimeType( testUri );
  

Ниже приведен метод получения mimetype, но, к сожалению, canHandle() всегда возвращает false .

     // get MimeType
public String getOriginalMimeType(String uri){
    String mime = null;

    try {
        if( mDrmManager.canHandle(Uri.parse(uri), null) ){
            mime = mDrmManager.getOriginalMimeType(Uri.parse(uri));
        }
    } catch (Exception e) {
        Log.w(TAG, e.toString());
    }

    return mime;
}
  

Я что-то упустил?
Очевидно, что, вероятно, URL-адрес, который я использую, не подходит, но
Я пробовал разные URL-адреса, которые работают в другом приложении, но результат тот же.
Я также установил разрешение доступа в ИНТЕРНЕТ в файле манифеста. У меня заканчиваются идеи, в чем проблема.
Покопавшись в исходном коде DrmManagerClient, я заметил, что canHandle() определяется следующим образом:

 /**
 * Checks whether the given MIME type or URI can be handled.
 *
 * @param uri URI for the content to be handled.
 * @param mimeType MIME type of the object to be handled
 *
 * @return True if the given MIME type or URI can be handled; false if they cannot be handled.
 */
public boolean canHandle(Uri uri, String mimeType) {
    if ((null == uri || Uri.EMPTY == uri) amp;amp; (null == mimeType || mimeType.equals(""))) {
        throw new IllegalArgumentException("Uri or the mimetype should be non null");
    }
    return canHandle(convertUriToPath(uri), mimeType);
}
  

Что canHandle(Uri uri , String mimeType) в основном то же canHandle( String path, mimeType ) самое, что и потому, что он преобразует Uri в Path.
Означает ли это, что Http-URL-адреса не будут работать?

Комментарии:

1. Привет, ниндзя, я пытаюсь внедрить DRM в свое приложение, столкнулся с множеством проблем, можете ли вы предоставить какой-либо пример по этому поводу. Это было бы очень полезно, заранее спасибо

2. @KomalG Наиболее понятный образец, который я нашел тогда, был на веб-сайте Samsung. Не могу найти его сейчас. Взгляните на это. github.com/NicePeopleAtWork/NicePlayers/blob/master/android /…

3. Привет, ленивый ниндзя, большое спасибо за ваш ответ, я вижу эту ссылку, которую я нашел в проекте «NicePluginAndroidTest» ==> WidevineDrm.java и VideoViewWidevineActivity.java я воспроизводю видео из внутреннего хранилища (/ storage/ emulated/ 0/ Android/), используя вышеуказанные 2 файла, извлекаю видео и вставляю вдругое устройство, это видео воспроизводится хорошо без каких-либо проблем (видео не защищается) Моя цель — защитить видео с другого устройства во время воспроизведения с использованием «DRM» (DrmManagerClient не работает с медиафайлами) пожалуйста, объясните пожалуйста, объясните Ninja Спасибо

4. Привет, ниндзя, пожалуйста, предоставьте какой-либо пример по этому вопросу. Это было бы очень полезно, заранее спасибо

Ответ №1:

Я обнаружил, что проблема заключается в URL-адресах.
Я тестировал с этими двумя ссылками, и теперь все в порядке.

Поток 1: http://commondatastorage.googleapis.com/wvmedia/sintel_main_720p_4br_tp.wvm

Поток 2: http://commondatastorage.googleapis.com/wvmedia/starz_main_720p_6br_tp.wvm

Надеюсь, это поможет кому-то в будущем.