Android неявное намерение для воспроизведения видео с субтитрами с сервера UPnP на VLCMedia Palyer - PullRequest
0 голосов
/ 31 октября 2018

В настоящее время я нахожусь в процессе создания приложения для 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 и обнаружу вручную, вручную перейду через медиа-сервер и Воспроизвести фильм таким образом, как он начинается, а также предлагает субтитры для выбранного фильма. Поэтому он уверен, что сервер предлагает вариант субтитров для клиентской стороны.

Заранее спасибо за любую помощь.

...