当前位置: 首页 > 知识库问答 >
问题:

如何切换隐藏字幕在靠后的ExoPlayer?

戚研
2023-03-14
private MediaSource onCreateMediaSource(Uri uri, Uri subtitleUri) {
    String userAgent = Util.getUserAgent(mContext, "ExoPlayerAdapter");
    MediaSource videoSource = new HlsMediaSource(uri,
            new DefaultDataSourceFactory(mContext, userAgent),
            null,
            null);
    Format subtitleFormat = Format.createTextSampleFormat(
            "1", MimeTypes.APPLICATION_SUBRIP, 0, "en");
    MediaSource subtitleSource = new SingleSampleMediaSource(
            subtitleUri,
            new DefaultDataSourceFactory(mContext, userAgent),
            subtitleFormat, C.TIME_UNSET);

    MergingMediaSource mergedSource =
            new MergingMediaSource(videoSource, subtitleSource);
    return mergedSource;
}

我试过这个:

@Override
public void onActionClicked(Action action) {
    if (action == mClosedCaptioningAction) {
        DefaultTrackSelector trackSelector = mAdapter.getTrackSelector();
        int rendererIndex = 0;
        if (mClosedCaptioningAction.getIndex() == PlaybackControlsRow.ClosedCaptioningAction.INDEX_ON) {
            MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
            TrackGroupArray textGroups = mappedTrackInfo.getTrackGroups(rendererIndex);
            int groupIndex = 0;

            trackSelector.setRendererDisabled(rendererIndex, false);
            MappingTrackSelector.SelectionOverride override =
                    new MappingTrackSelector.SelectionOverride(mTrackFactory, groupIndex, 0);
            trackSelector.setSelectionOverride(rendererIndex, textGroups, override);
        } else {
            trackSelector.setRendererDisabled(rendererIndex, true);
            trackSelector.clearSelectionOverrides();
        }
    }
    super.onActionClicked(action);
}

我得到了这个错误:

E/gralloc: unregister FBM buffer

共有1个答案

夏嘉德
2023-03-14

好吧,我刚刚回答了一个问题,在这里,文本轨迹以一种简单的方式工作。这适用于自适应文件(如HLS),但我必须修改它以使其适用于渐进式文件(如。mp4与。srt文件合并)。

至少是个起点。

我想绕回一圈,让它完全为您工作,但我认为这可能是一个使用跟踪索引和调整覆盖的问题,以便它不使用AdaptiveFactory(从下面的行)。

TrackSelection.Factory factory = tracks.length == 1
            ? new FixedTrackSelection.Factory()
            : new AdaptiveTrackSelection.Factory(BANDWIDTH_METER);
 类似资料:
  • 切换按钮的设计仅适用于xs屏幕,所有导航链接都指向切换按钮。但是,一旦我点击切换按钮,它就会出现一次白色背景,然后突然塌陷到导航栏的大小,使导航链接与导航栏下方的内容合并。您可以通过查看图像来更好地理解它。请帮忙!

  • 问题内容: 我需要从Java网络应用程序中的 第3方(公开可用的YouTube视频) 中读取隐藏字幕文本,即我尚未上传内容。 尽管YouTube数据API的v2 限制了对字幕信息的访问权限,但上传视频的人 却似乎很奇怪,它只能访问除这一项数据以外的所有内容。我希望可以在API的第3版中看到此限制,但现在唯一引用隐藏式字幕的方法是布尔方法,以确认CC是否已附加到视频。甚至所有者也似乎无法立即下载它。

  • 我有两个按钮导航栏。 当单击div#toggle-menu时,它使div#sidebar-mobile-wrapper显示。 当我点击div#toggle-function时,它会显示div#right-content-mobile。 都奏效了。但现在我想,一次只能显示一个div。所以当我点击#toggle-menu时,如果div#right-content-mobile是可见的,它将被隐藏和si

  • 我想用我自己的函数隐藏字符串的一部分。例如:。如果我的函数是HashPartOfString($string),我想把我的字符串放入这个函数中,并有一个类似这样的输出我该怎么做呢?

  • 问题内容: 我有一个div,我希望将其部分定位在屏幕外,如下所示: 但这会增加页面的大小,使其可以向右滚动。有什么办法可以使该div的一半隐藏并防止滚动查看它? 问题答案: 是的,只需使用创建一个封闭的div ,如下所示:

  • 问题内容: 我正在使用屏幕从串行控制台读取文本。问题是输出似乎只包含换行符\ n而没有回车符\ r,因此显示如下: 我想知道是否有任何补丁可以解决此问题? 问题答案: 尝试。 该手册页说,这将转化到新行回车/输出换行符对,这似乎是你所需要的。