Я нашел несколько примеров, которые работают с 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
как-то.