#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
Надеюсь, это поможет кому-то в будущем.