【发布时间】:2020-03-26 14:51:12
【问题描述】:
我找到了一些适用于 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 的内容,并在我的Fragment 中使用了com.google.android.exoplayer2.ui.PlayerView 而不是VideoFragment,并且字幕工作没有进行任何其他更改。所以就像我只需要以某种方式在Leanback 端启用它们。
【问题讨论】:
标签: android exoplayer android-tv exoplayer2.x amazon-fire-tv