android - 如何使用 ExoPlayer 获取正在播放的当前轨道的索引

标签 android exoplayer

我正在开发一个涉及使用 Google 的 ExoPlayer 的 Android 项目。 我有一个视频源列表,我使用以下代码构建了一个播放列表:

for (int i = 0; i < vidList.length(); i++) {
    MediaSource source = new ExtractorMediaSource(Uri.parse(vidList.getJSONObject(i).getString("url")),
                                buildDataSourceFactory(bandwidthMeter), extractorsFactory, mainHandler, HomeFragment.this);
                        mediaSources.add(source);
                        captions.add(vidList.getJSONObject(i).getString("caption"));
                    }

    mediaSource = new ConcatenatingMediaSource(mediaSources.toArray(new MediaSource[mediaSources.size()]));

然后我打电话

exoplayer.prepare(mediasource, false, false)

并且视频可以连续播放。我想在 textView 中显示当前播放视频的字幕,因此我有一个单独的列表,其中包含每个视频的“字幕”值。

通过搜索代码,我发现我可以像这样在播放列表中获取当前正在播放的视频;

exoPlayer.getCurrentPeriodIndex()

除一个问题外,这似乎有效并返回索引。它在播放开始时两次返回 0 值。也就是说,索引 0 处的视频返回周期 0 以及索引 1 处的视频。这仅发生在索引 0 和 1 处,此后其他一切看起来都很好,除了 getCurrentPeriodIndex() 将返回 AccurateIndex - 1。

我在演示 Exoplayer 应用程序中也看到了这种情况。 有没有更好的方法来确定播放列表中当前正在播放的轨道?

谢谢。

最佳答案

要找到当前正在播放的轨道,需要引用currentWindowIndex exoPlayer 字段。在 Java 中看起来像这样......

exoPlayer.getCurrentWindowIndex()

我不确定 getCurrentPeriodIndex() 做了什么,docs不要详细说明,我不喜欢推测。

关于android - 如何使用 ExoPlayer 获取正在播放的当前轨道的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43140832/

相关文章:

android - ExoPlayer发布后如何重新初始化?

android - 在 Android 中使用可选切片绘制饼图的最佳方法是什么?

Android + HTML5(本地存储) + Admob : Bug?

android - 如何以编程方式为 com.google.android.material.card.MaterialCardView 设置StrokeColor

android - 全屏使用 WebView 和 RelativeLayout 时的奇怪行为

android - 通过 "assets"文件夹下的文件夹用ExoPlayer播放视频

android - ExoPlayer 使用自定义的 MediaCodecSelector

android - ExoPlayer 不播放视频

java - ExoPlayer,MediaSource 创建的视频播放器不播放从 URL 中提取的视频

android - FirebaseUI导入:各种其他库都在请求库com.google.android.gms:play-services-basement