libVLC: Как узнать, являются ли субтитры (текстовая дорожка) внешними или являются частью файла контейнера видео?

При использовании libVLC для Android как узнать, являются ли субтитры (текстовая дорожка) внешними (.srt, < strong> ass) или часть файла контейнера видео (текстовая дорожка внутри .mkv)?

https://code.videolan.org/videolan/libvlc-android-samples

https://code.videolan.org/videolan/vlc-android

// MediaPlayer.getSpuTracks() - Get the list of available spu (subtitle) tracks.
MediaPlayer.TrackDescription[] trackDescriptions = mMediaPlayer.getSpuTracks();
for (int i = 1; i < trackDescriptions.length; i++) {
    MediaPlayer.TrackDescription description = trackDescriptions[i];
    Log.i(TAG, "loadSpuTrack " + description.name + ", id " + description.id);
}

Вывод

loadSpuTrack Track 1, id  2
loadSpuTrack Track 2, id  3
loadSpuTrack Track 3, id  4
loadSpuTrack Track 4, id  5
loadSpuTrack Track 5, id  6

Он просто ищет и добавляет все внешние файлы текстовых треков (.srt, .ass) из родительского файла (каталога) видеофайла (.mkv) и из самого видеофайла.

Но нет API (методы Java внутри классов MediaPlayer или LibVLC) для определения того, являются ли добавленные субтитры внешними или внутренними (из контейнера видеофайлов), нет метода для отключения добавления внешних субтитров.

Есть какое-нибудь решение?


person user25    schedule 25.02.2018    source источник


Ответы (1)


это должно работать (поможет определить внешние субтитры), если внешние субтитры (ведомые устройства) добавляются в конец списка:

введите здесь описание изображения

person user25    schedule 18.03.2018