如何在播放器播放时使用 just_audio flutter 更改音频源?

时间:2021-06-17 17:16:24

标签: flutter just-audio

我的用例是我在后台播放了一个 mp3 文件,它在 flutter 中使用了 audio_service 和 just_audio 包。假设文件是​​“A”。

我的应用让“A”从 url 下载到本地文件,同时从 url 播放“A”(单独的后台任务)。

一系列步骤:

  • just_audio 从 url 播放“A”(例如 https://something/A.mp3)
  • 'A' 从 url 下载到我的文件 (file:///something/A.mp3)
  • “A”仍在后台播放。
  • 下载“A”后,我想将播放器的音频源从 http uri 更改为文件 uri。

当我使用队列时,我使用 concatenatingAudioSource 来设置播放器的来源。

我尝试删除旧的 uri 并添加新的 uri 并在更改 uri 之前恢复状态。 (如下)

bool isPlaying = _player.playing;
Duration position = _player.position;
int index = params['index'];
bool isCurrentItem = _player.currentIndex == index;
await concatenatingAudioSource.removeAt(index);
await concatenatingAudioSource.insert(
    index, AudioSource.uri(Uri.parse(params['uri'])));
updateUriInQueue();

// broadcast the queue
await AudioServiceBackground.setQueue(queue);

// Note: a small break might occur when changing the state

// return to it's original state after changing uri
if (!isCurrentItem) return;
await _player.seek(position, index: index);
if (isPlaying) _player.play();

顺便提一下,我不使用 mediaItem.id 作为 URI,而是将其存储在 mediaItem.extras 中。

从上面的代码可以清楚的看到,改变uri后播放器停止播放。我想知道是否有更流畅的方法来更改播放器 uri 而不会干扰输出。

0 个答案:

没有答案