如何更改 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。无缝播放不适用于您的场景。
我正在使用 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。无缝播放不适用于您的场景。