微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我的用例是我在后台播放了一个 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 而不会干扰输出

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。