gpt4 book ai didi

android - 是否有使用字幕的 ExoPlayer + Leanback 库示例?

转载 作者:行者123 更新时间:2023-12-04 23:20:17 45 4
gpt4 key购买 nike

我发现了一些适用于 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 上启用它们一样一边不知何故。

最佳答案

要使字幕正常工作,您需要覆盖 lb_playback_fragment.xml 并添加一个 SubtitleView。
应用程序/src/main/res/layout/lb_playback_fragment.xml

<?xml version="1.0" encoding="utf-8"?> 
<!--
Copied from android source so that we can add the subtitle view
-->
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playback_fragment_root"
android:layout_width="match_parent"
android:transitionGroup="false"
android:layout_height="match_parent">

<androidx.leanback.widget.NonOverlappingFrameLayout
android:id="@+id/playback_fragment_background"
android:transitionGroup="false"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<androidx.leanback.widget.NonOverlappingFrameLayout
android:id="@+id/playback_controls_dock"
android:transitionGroup="true"
android:layout_height="match_parent"
android:layout_width="match_parent"/>

<com.google.android.exoplayer2.ui.AspectRatioFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">

<com.google.android.exoplayer2.ui.SubtitleView
android:id="@+id/leanback_subtitles"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</com.google.android.exoplayer2.ui.AspectRatioFrameLayout>

</FrameLayout>
完成此操作后,您可以设置 DefaultTrackSelector 来选择所需的文本轨道。
您可以在 https://github.com/bennettpeter/android-MythTV-Leanfront 中查看基于示例leanback 播放器的完整代码。 .添加字幕的更改在 this commit .

关于android - 是否有使用字幕的 ExoPlayer + Leanback 库示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59131346/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com