В настоящее время я нахожусь в процессе создания приложения для Android, которое должно иметь функцию воспроизведения фильма с субтитрами с сервера upnp на vlc media player на Android. Проблема в том, что vlc media player не распознает субтитры, связанные с медиа. Сами медиафайлы прекрасно воспроизводятся после выполнения намерения из моего приложения, единственная проблема - не отображаются субтитры (опция Subtitle в vlc player неактивна). Технологии, которые я использовал до сих пор, следующие:
Сервер связи Serviio upnp,
Cling-core и библиотека поддержки 2.1.1,
И 2 испытательных устройства:
Устройство 1: API 26, VLC player версия 3.0.13
Устройство 2: API 22, проигрыватель VLC версии 2.0.6
На медиасервере Serviio фильмы содержатся в соответствующих каталогах вместе с файлами .srt, представляющими для них субтитры. Cling используется для взаимодействия с медиасервером (выбор фильмов, метаданных и т. Д.). Код, который взаимодействует с медиасервером:
this.upnpService.getControlPoint().execute(new Browse(service, "V_M", BrowseFlag.DIRECT_CHILDREN) {
@Override
public void received(ActionInvocation arg0,
DIDLContent didl) {
int id = 0;
for (Item item : didl.getItems()){
movieParcelables.add(
new MovieParcelable(id,
item.getTitle(),
item.getFirstPropertyValue(DIDLObject.Property.DC.DESCRIPTION.class),
Integer.parseInt(item.getFirstPropertyValue(DIDLObject.Property.DC.DATE.class).substring(0, 4)),
item.getFirstPropertyValue(DIDLObject.Property.UPNP.ICON.class).toString(),
item.getFirstResource().getValue()));
id++;
}
А вот метод, который создает и запускает намерение для выбранного фильма:
public void onPlayClick(View v){
//TODO implement play movie intent...
Uri uri = Uri.parse(movie.getmURL());
Intent vlcIntent = new Intent(Intent.ACTION_VIEW);
vlcIntent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
vlcIntent.addFlags(Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
vlcIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
vlcIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
vlcIntent.setDataAndTypeAndNormalize(uri, "video/*");
vlcIntent.putExtra("title", movie.getmTitle());
vlcIntent.putExtra("subtitles_location", movie.getmURL());
startActivity(vlcIntent);
}
Угадаю, что я упускаю что-то важное, но не совсем уверен, что это ... Стоит также упомянуть, что если я сам пойду прямо в vlc media player и обнаружу вручную, вручную перейду через медиа-сервер и Воспроизвести фильм таким образом, как он начинается, а также предлагает субтитры для выбранного фильма. Поэтому он уверен, что сервер предлагает вариант субтитров для клиентской стороны.
Заранее спасибо за любую помощь.