Я нашел несколько примеров, которые работают с Leanback
и ExoPlayer
, и у меня все это работает, но я не могу заставить работать субтитры/титры. Самый новый пример Google, который я смог найти (https://github.com/android/tv-samples ) есть кнопка с субтитрами в образце Java, но они никогда не отображаются. В примере Kotlin есть комментарий, который говорит // TODO(owahltinez): handle captions
.
Я попробовал эти изменения в одном из образцов, но это не помогло:
private void prepareMediaForPlaying(Uri mediaSourceUri) {
String userAgent = Util.getUserAgent(getActivity(), "VideoPlayerGlue");
DefaultDataSourceFactory defaultDataSourceFactory = new DefaultDataSourceFactory(getActivity(), userAgent);
MediaSource mediaSource =
new ExtractorMediaSource(
mediaSourceUri,
defaultDataSourceFactory,
new DefaultExtractorsFactory(),
null,
null);
String subtitle = "https://subtitledomain/sintel-en.vtt";
Uri uriSubtitle = Uri.parse(subtitle);
MediaSource subtitleMediaSource = new SingleSampleMediaSource.Factory(defaultDataSourceFactory)
.createMediaSource(uriSubtitle, Format.createTextSampleFormat(null, MimeTypes.TEXT_VTT, C.SELECTION_FLAG_FORCED, "n/a"), C.TIME_UNSET);
mediaSource = new MergingMediaSource(mediaSource, subtitleMediaSource);
mPlayer.prepare(mediaSource);
}
А также это изменение:
mTrackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
DefaultTrackSelector.Parameters parameters = mTrackSelector.getParameters();
mTrackSelector.setParameters(parameters.withSelectUndeterminedTextLanguage(true));
Пробовал менять язык субтитров на EN
, не помогло. Я чувствую, что, вероятно, просто упускаю что-то маленькое, но я просто не знаю, что это может быть.
Спасибо.
Изменить: я сделал ветку и удалил весь код Leanback
, а ExoPlayer
просто оставил нетронутым и использовал com.google.android.exoplayer2.ui.PlayerView
в моем Fragment
вместо VideoFragment
, и субтитры работали без каких-либо других изменений. Так что мне просто нужно как-то включить их на стороне Leanback
.