如何更改 ConcatenatingAudioSource 的索引?

How to change the index of a ConcatenatingAudioSource?

我正在使用 ConcatenatingAudioSource 以像这样无间隙地播放多个曲目:

player.setAudioSource(ConcatenatingAudioSource(children: [
    ///some audio sources
  ]));

如果我现在想将要播放的下一首曲目更改为我指定的索引处的曲目,除了继续调用 player.seekToNext() 之外该怎么做?

有没有像player.setNextTrackIndex(someIndex)这样的方法?

p.s。 : 这个问题是关于 just_audio package.

最接近您要执行的操作的是:

await player.seek(Duration.zero, trackIndex);

这会立即开始缓冲请求的曲目以便播放它,但在您等待该曲目的音频缓冲时最初仍然会有间隙。如果媒体存储在本地,则间隔较短,如果通过网络访问,则间隔较长。

这与实际的无缝播放不同,后者只有在播放器提前知道下一首曲目时才会发生,以便它可以尽早开始缓冲并避免间隙。也就是说,如果用户可以随时选择曲目,那么播放器就没有办法提前预测用户接下来会点击哪首曲目。

是的,ConcatenatingAudioSource 旨在进行无缝播放,但在它知道接下来要播放的项目之间。它旨在将轨道 A、B、C、D 连接在一起,以便 A-B 之间、B-C 之间和 C-D 之间没有间隙。它之所以能够这样做,是因为当播放器到达轨道 A 的末尾时,它知道 B 即将到来并提前开始缓冲 B。无缝播放不适用于您的场景。